diff --git a/bip32.c b/bip32.c index 50f1466ddb..9935bd5964 100644 --- a/bip32.c +++ b/bip32.c @@ -46,9 +46,6 @@ #include "nem.h" #endif #if USE_CARDANO -#include "ed25519-donna/modm-donna-32bit.h" -#include "blake2b.h" -#include "bip39.h" #include "pbkdf2.h" #endif #include "memzero.h" @@ -367,8 +364,8 @@ int hdnode_private_ckd_cardano(HDNode *inout, uint32_t index) return 1; } -int hdnode_from_seed_cardano(uint8_t *pass, int pass_len, uint8_t *seed, int seed_len, HDNode *out) { - uint8_t secret[96]; +int hdnode_from_seed_cardano(const uint8_t *pass, int pass_len, const uint8_t *seed, int seed_len, HDNode *out) { + static CONFIDENTIAL uint8_t secret[96]; pbkdf2_hmac_sha512(pass, pass_len, seed, seed_len, 4096, secret, 96); secret[0] &= 248; diff --git a/bip32.h b/bip32.h index 2c2f799aec..8b76d65ca1 100644 --- a/bip32.h +++ b/bip32.h @@ -61,9 +61,10 @@ int hdnode_from_seed(const uint8_t *seed, int seed_len, const char *curve, HDNod #define hdnode_private_ckd_prime(X, I) hdnode_private_ckd((X), ((I) | 0x80000000)) int hdnode_private_ckd(HDNode *inout, uint32_t i); + #if USE_CARDANO int hdnode_private_ckd_cardano(HDNode *inout, uint32_t i); -int hdnode_from_seed_cardano(uint8_t *pass, int pass_len, uint8_t *seed, int seed_len, HDNode *out); +int hdnode_from_seed_cardano(const uint8_t *pass, int pass_len, const uint8_t *seed, int seed_len, HDNode *out); #endif int hdnode_public_ckd_cp(const ecdsa_curve *curve, const curve_point *parent, const uint8_t *parent_chain_code, uint32_t i, curve_point *child, uint8_t *child_chain_code); diff --git a/tests/test_check_cardano.h b/tests/test_check_cardano.h index 8c1f5be2a7..4c734dfad8 100644 --- a/tests/test_check_cardano.h +++ b/tests/test_check_cardano.h @@ -80,7 +80,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_1) uint8_t seed[66]; int seed_len = mnemonic_to_entropy("ring crime symptom enough erupt lady behave ramp apart settle citizen junk", seed); ck_assert_int_eq(seed_len, 132); - hdnode_from_seed_cardano(NULL, 0, seed, seed_len / 8, &node); + hdnode_from_seed_cardano((const uint8_t *)"", 0, seed, seed_len / 8, &node); ck_assert_mem_eq(node.chain_code, fromhex("affbc325d9027c0f2d9f925b1dcf6c12bf5c1dd08904474066a4f2c00db56173"), 32); ck_assert_mem_eq(node.private_key, fromhex("08a14df748e477a69d21c97c56db151fc19e2521f31dd0ac5360f269e5b6ea46"), 32); @@ -97,7 +97,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_2) uint8_t seed[66]; int seed_len = mnemonic_to_entropy("ring crime symptom enough erupt lady behave ramp apart settle citizen junk", seed); ck_assert_int_eq(seed_len, 132); - hdnode_from_seed_cardano(NULL, 0, seed, seed_len / 8, &node); + hdnode_from_seed_cardano((const uint8_t *)"", 0, seed, seed_len / 8, &node); hdnode_private_ckd_cardano(&node, 0x80000000); @@ -116,7 +116,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_3) uint8_t seed[66]; int seed_len = mnemonic_to_entropy("ring crime symptom enough erupt lady behave ramp apart settle citizen junk", seed); ck_assert_int_eq(seed_len, 132); - hdnode_from_seed_cardano(NULL, 0, seed, seed_len / 8, &node); + hdnode_from_seed_cardano((const uint8_t *)"", 0, seed, seed_len / 8, &node); hdnode_private_ckd_cardano(&node, 0x80000001); @@ -135,7 +135,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_4) uint8_t seed[66]; int seed_len = mnemonic_to_entropy("ring crime symptom enough erupt lady behave ramp apart settle citizen junk", seed); ck_assert_int_eq(seed_len, 132); - hdnode_from_seed_cardano(NULL, 0, seed, seed_len / 8, &node); + hdnode_from_seed_cardano((const uint8_t *)"", 0, seed, seed_len / 8, &node); hdnode_private_ckd_cardano(&node, 0x80000000); hdnode_private_ckd_cardano(&node, 0x80000001); @@ -155,7 +155,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_5) uint8_t seed[66]; int seed_len = mnemonic_to_entropy("ring crime symptom enough erupt lady behave ramp apart settle citizen junk", seed); ck_assert_int_eq(seed_len, 132); - hdnode_from_seed_cardano(NULL, 0, seed, seed_len / 8, &node); + hdnode_from_seed_cardano((const uint8_t *)"", 0, seed, seed_len / 8, &node); hdnode_private_ckd_cardano(&node, 0x80000000); hdnode_private_ckd_cardano(&node, 0x80000001); @@ -176,7 +176,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_6) uint8_t seed[66]; int seed_len = mnemonic_to_entropy("ring crime symptom enough erupt lady behave ramp apart settle citizen junk", seed); ck_assert_int_eq(seed_len, 132); - hdnode_from_seed_cardano(NULL, 0, seed, seed_len / 8, &node); + hdnode_from_seed_cardano((const uint8_t *)"", 0, seed, seed_len / 8, &node); hdnode_private_ckd_cardano(&node, 0x80000000); hdnode_private_ckd_cardano(&node, 0x80000001); @@ -198,7 +198,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_7) uint8_t seed[66]; int seed_len = mnemonic_to_entropy("ring crime symptom enough erupt lady behave ramp apart settle citizen junk", seed); ck_assert_int_eq(seed_len, 132); - hdnode_from_seed_cardano(NULL, 0, seed, seed_len / 8, &node); + hdnode_from_seed_cardano((const uint8_t *)"", 0, seed, seed_len / 8, &node); hdnode_private_ckd_cardano(&node, 0x80000000); hdnode_private_ckd_cardano(&node, 0x80000001);