mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-24 23:38:09 +00:00
chore(crypto,core,legacy): Add return code to hdnode_fill_public_key().
[no changelog]
This commit is contained in:
parent
307d166383
commit
eb90efd914
@ -263,9 +263,12 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_serialize_public(mp_obj_t self,
|
||||
mp_obj_t version) {
|
||||
uint32_t ver = trezor_obj_get_uint(version);
|
||||
mp_obj_HDNode_t *o = MP_OBJ_TO_PTR(self);
|
||||
if (hdnode_fill_public_key(&o->hdnode) != 0) {
|
||||
mp_raise_ValueError("Failed to serialize");
|
||||
}
|
||||
|
||||
vstr_t xpub = {0};
|
||||
vstr_init_len(&xpub, XPUB_MAXLEN);
|
||||
hdnode_fill_public_key(&o->hdnode);
|
||||
int written = hdnode_serialize_public(&o->hdnode, o->fingerprint, ver,
|
||||
xpub.buf, xpub.alloc);
|
||||
if (written <= 0) {
|
||||
@ -367,7 +370,9 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_HDNode_private_key_ext_obj,
|
||||
/// """
|
||||
STATIC mp_obj_t mod_trezorcrypto_HDNode_public_key(mp_obj_t self) {
|
||||
mp_obj_HDNode_t *o = MP_OBJ_TO_PTR(self);
|
||||
hdnode_fill_public_key(&o->hdnode);
|
||||
if (hdnode_fill_public_key(&o->hdnode) != 0) {
|
||||
mp_raise_ValueError("Invalid private key");
|
||||
}
|
||||
return mp_obj_new_bytes(o->hdnode.public_key, sizeof(o->hdnode.public_key));
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_HDNode_public_key_obj,
|
||||
@ -385,7 +390,9 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_address(mp_obj_t self,
|
||||
|
||||
vstr_t address = {0};
|
||||
vstr_init_len(&address, ADDRESS_MAXLEN);
|
||||
hdnode_get_address(&o->hdnode, v, address.buf, address.alloc);
|
||||
if (hdnode_get_address(&o->hdnode, v, address.buf, address.alloc) != 0) {
|
||||
mp_raise_ValueError("Failed to get address");
|
||||
}
|
||||
address.len = strlen(address.buf);
|
||||
return mp_obj_new_str_from_vstr(&mp_type_str, &address);
|
||||
}
|
||||
|
@ -215,7 +215,9 @@ int hdnode_private_ckd(HDNode *inout, uint32_t i) {
|
||||
if (!inout->curve->params) {
|
||||
return 0;
|
||||
}
|
||||
hdnode_fill_public_key(inout);
|
||||
if (hdnode_fill_public_key(inout) != 0) {
|
||||
return 0;
|
||||
}
|
||||
memcpy(data, inout->public_key, 33);
|
||||
}
|
||||
write_be(data + 33, i);
|
||||
@ -316,7 +318,9 @@ int hdnode_private_ckd_cardano(HDNode *inout, uint32_t index) {
|
||||
memcpy(data + 1, inout->private_key, 32);
|
||||
memcpy(data + 1 + 32, inout->private_key_extension, 32);
|
||||
} else { // public derivation
|
||||
hdnode_fill_public_key(inout);
|
||||
if (hdnode_fill_public_key(inout) != 0) {
|
||||
return 0;
|
||||
}
|
||||
data[0] = 2;
|
||||
memcpy(data + 1, inout->public_key + 1, 32);
|
||||
}
|
||||
@ -377,7 +381,9 @@ static int hdnode_from_secret_cardano(const uint8_t *k,
|
||||
out->private_key[31] |= 0x40;
|
||||
|
||||
out->public_key[0] = 0;
|
||||
hdnode_fill_public_key(out);
|
||||
if (hdnode_fill_public_key(out) != 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -585,26 +591,34 @@ int hdnode_private_ckd_cached(HDNode *inout, const uint32_t *i, size_t i_count,
|
||||
}
|
||||
#endif
|
||||
|
||||
void hdnode_get_address_raw(HDNode *node, uint32_t version, uint8_t *addr_raw) {
|
||||
hdnode_fill_public_key(node);
|
||||
int hdnode_get_address_raw(HDNode *node, uint32_t version, uint8_t *addr_raw) {
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
return 1;
|
||||
}
|
||||
ecdsa_get_address_raw(node->public_key, version, node->curve->hasher_pubkey,
|
||||
addr_raw);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hdnode_get_address(HDNode *node, uint32_t version, char *addr,
|
||||
int addrsize) {
|
||||
hdnode_fill_public_key(node);
|
||||
int hdnode_get_address(HDNode *node, uint32_t version, char *addr,
|
||||
int addrsize) {
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
return 1;
|
||||
}
|
||||
ecdsa_get_address(node->public_key, version, node->curve->hasher_pubkey,
|
||||
node->curve->hasher_base58, addr, addrsize);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hdnode_fill_public_key(HDNode *node) {
|
||||
if (node->public_key[0] != 0) return;
|
||||
int hdnode_fill_public_key(HDNode *node) {
|
||||
if (node->public_key[0] != 0) return 0;
|
||||
|
||||
#if USE_BIP32_25519_CURVES
|
||||
if (node->curve->params) {
|
||||
ecdsa_get_public_key33(node->curve->params, node->private_key,
|
||||
node->public_key);
|
||||
if (ecdsa_get_public_key33(node->curve->params, node->private_key,
|
||||
node->public_key) != 0) {
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
node->public_key[0] = 1;
|
||||
if (node->curve == &ed25519_info) {
|
||||
@ -626,9 +640,12 @@ void hdnode_fill_public_key(HDNode *node) {
|
||||
}
|
||||
#else
|
||||
|
||||
ecdsa_get_public_key33(node->curve->params, node->private_key,
|
||||
node->public_key);
|
||||
if (ecdsa_get_public_key33(node->curve->params, node->private_key,
|
||||
node->public_key) != 0) {
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if USE_ETHEREUM
|
||||
@ -637,7 +654,10 @@ int hdnode_get_ethereum_pubkeyhash(const HDNode *node, uint8_t *pubkeyhash) {
|
||||
SHA3_CTX ctx = {0};
|
||||
|
||||
/* get uncompressed public key */
|
||||
ecdsa_get_public_key65(node->curve->params, node->private_key, buf);
|
||||
if (ecdsa_get_public_key65(node->curve->params, node->private_key, buf) !=
|
||||
0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* compute sha3 of x and y coordinate without 04 prefix */
|
||||
sha3_256_Init(&ctx);
|
||||
@ -657,7 +677,10 @@ int hdnode_get_nem_address(HDNode *node, uint8_t version, char *address) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
hdnode_fill_public_key(node);
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return nem_get_address(&node->public_key[1], version, address);
|
||||
}
|
||||
|
||||
@ -766,15 +789,21 @@ int hdnode_sign(HDNode *node, const uint8_t *msg, uint32_t msg_len,
|
||||
return 1; // signatures are not supported
|
||||
} else {
|
||||
if (node->curve == &ed25519_info) {
|
||||
hdnode_fill_public_key(node);
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
return 1;
|
||||
}
|
||||
ed25519_sign(msg, msg_len, node->private_key, node->public_key + 1, sig);
|
||||
} else if (node->curve == &ed25519_sha3_info) {
|
||||
hdnode_fill_public_key(node);
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
return 1;
|
||||
}
|
||||
ed25519_sign_sha3(msg, msg_len, node->private_key, node->public_key + 1,
|
||||
sig);
|
||||
#if USE_KECCAK
|
||||
} else if (node->curve == &ed25519_keccak_info) {
|
||||
hdnode_fill_public_key(node);
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
return 1;
|
||||
}
|
||||
ed25519_sign_keccak(msg, msg_len, node->private_key, node->public_key + 1,
|
||||
sig);
|
||||
#endif
|
||||
|
@ -103,7 +103,7 @@ int hdnode_private_ckd_cached(HDNode *inout, const uint32_t *i, size_t i_count,
|
||||
|
||||
uint32_t hdnode_fingerprint(HDNode *node);
|
||||
|
||||
void hdnode_fill_public_key(HDNode *node);
|
||||
int hdnode_fill_public_key(HDNode *node);
|
||||
|
||||
#if USE_ETHEREUM
|
||||
int hdnode_get_ethereum_pubkeyhash(const HDNode *node, uint8_t *pubkeyhash);
|
||||
@ -147,9 +147,9 @@ int hdnode_deserialize_private(const char *str, uint32_t version,
|
||||
const char *curve, HDNode *node,
|
||||
uint32_t *fingerprint);
|
||||
|
||||
void hdnode_get_address_raw(HDNode *node, uint32_t version, uint8_t *addr_raw);
|
||||
void hdnode_get_address(HDNode *node, uint32_t version, char *addr,
|
||||
int addrsize);
|
||||
int hdnode_get_address_raw(HDNode *node, uint32_t version, uint8_t *addr_raw);
|
||||
int hdnode_get_address(HDNode *node, uint32_t version, char *addr,
|
||||
int addrsize);
|
||||
|
||||
const curve_info *get_curve_by_name(const char *curve_name);
|
||||
|
||||
|
@ -1238,7 +1238,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
fromhex(
|
||||
"e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1252,7 +1252,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1279,7 +1279,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
fromhex(
|
||||
"edb2e14f9ee77d26dd93b4ecede8d16ed408ce149b6cd80b0715a2d911a0afea"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1293,7 +1293,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1320,7 +1320,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
fromhex(
|
||||
"3c6cb8d0f6a264c91ea8b5030fadaa8e538b020f0a387421a12de9319dc93368"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1334,7 +1334,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1361,7 +1361,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
fromhex(
|
||||
"cbce0d719ecf7431d88e6a89fa1483e02e35092af60c042b1df2ff59fa424dca"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1375,7 +1375,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1402,7 +1402,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
fromhex(
|
||||
"0f479245fb19a38a1954c5c7c0ebab2f9bdfd96a17563ef28a6a4b1a2a764ef4"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1416,7 +1416,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1443,7 +1443,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
fromhex(
|
||||
"471b76e389e528d6de6d816857e012c5455051cad6660850e58372a6c3e6e7c8"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1457,7 +1457,7 @@ START_TEST(test_bip32_vector_1) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1500,7 +1500,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
fromhex(
|
||||
"4b03d6fc340455b363f51020ad3ecca4f0850280cf436c70c727923f6db46c3e"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1514,7 +1514,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1542,7 +1542,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
fromhex(
|
||||
"abe74a98f6c7eabee0428f53798f0ab8aa1bd37873999041703c742f15ac7e1e"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1556,7 +1556,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1584,7 +1584,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
fromhex(
|
||||
"877c779ad9687164e9c2f4f0f4ff0340814392330693ce95a58fe18fd52e6e93"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1598,7 +1598,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1626,7 +1626,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
fromhex(
|
||||
"704addf544a06e5ee4bea37098463c23613da32020d604506da8c0518e1da4b7"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1640,7 +1640,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1668,7 +1668,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
fromhex(
|
||||
"f1c7c871a54a804afe328b4c83a1c33b8e5ff48f5087273f04efa83b247d6a2d"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1682,7 +1682,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1710,7 +1710,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
fromhex(
|
||||
"bb7d39bdb83ecf58f2fd82b6d918341cbef428661ef01ab97c28a4842125ac23"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1724,7 +1724,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1760,7 +1760,7 @@ START_TEST(test_bip32_vector_2) {
|
||||
fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000000"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -1787,7 +1787,7 @@ START_TEST(test_bip32_vector_3) {
|
||||
// [Chain m]
|
||||
fingerprint = 0;
|
||||
ck_assert_uint_eq(fingerprint, 0x00000000);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
hdnode_serialize_private(&node, fingerprint, VERSION_PRIVATE, str,
|
||||
sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1796,7 +1796,7 @@ START_TEST(test_bip32_vector_3) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1813,7 +1813,7 @@ START_TEST(test_bip32_vector_3) {
|
||||
fingerprint = hdnode_fingerprint(&node);
|
||||
r = hdnode_private_ckd_prime(&node, 0);
|
||||
ck_assert_int_eq(r, 1);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
hdnode_serialize_private(&node, fingerprint, VERSION_PRIVATE, str,
|
||||
sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1822,7 +1822,7 @@ START_TEST(test_bip32_vector_3) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1854,7 +1854,7 @@ START_TEST(test_bip32_vector_4) {
|
||||
// [Chain m]
|
||||
fingerprint = 0;
|
||||
ck_assert_int_eq(fingerprint, 0x00000000);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
hdnode_serialize_private(&node, fingerprint, VERSION_PRIVATE, str,
|
||||
sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1863,7 +1863,7 @@ START_TEST(test_bip32_vector_4) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1880,7 +1880,7 @@ START_TEST(test_bip32_vector_4) {
|
||||
fingerprint = hdnode_fingerprint(&node);
|
||||
r = hdnode_private_ckd_prime(&node, 0);
|
||||
ck_assert_int_eq(r, 1);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
hdnode_serialize_private(&node, fingerprint, VERSION_PRIVATE, str,
|
||||
sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1889,7 +1889,7 @@ START_TEST(test_bip32_vector_4) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1906,7 +1906,7 @@ START_TEST(test_bip32_vector_4) {
|
||||
fingerprint = hdnode_fingerprint(&node);
|
||||
r = hdnode_private_ckd_prime(&node, 1);
|
||||
ck_assert_int_eq(r, 1);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
hdnode_serialize_private(&node, fingerprint, VERSION_PRIVATE, str,
|
||||
sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1915,7 +1915,7 @@ START_TEST(test_bip32_vector_4) {
|
||||
r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2,
|
||||
NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, VERSION_PUBLIC, str, sizeof(str));
|
||||
ck_assert_str_eq(str,
|
||||
@ -1943,10 +1943,10 @@ START_TEST(test_bip32_compare) {
|
||||
"301133282ad079cbeb59bc446ad39d333928f74c46997d3609cd3e2801ca69d62788"
|
||||
"f9f174429946ff4e9be89f67c22fae28cb296a9b37734f75e73d1477af19"),
|
||||
64, SECP256K1_NAME, &node2);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
for (i = 0; i < 100; i++) {
|
||||
memcpy(&node3, &node1, sizeof(HDNode));
|
||||
hdnode_fill_public_key(&node3);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node3), 0);
|
||||
r = hdnode_private_ckd(&node1, i);
|
||||
ck_assert_int_eq(r, 1);
|
||||
r = hdnode_public_ckd(&node2, i);
|
||||
@ -1969,7 +1969,7 @@ START_TEST(test_bip32_compare) {
|
||||
fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000000"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node1);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node1), 0);
|
||||
ck_assert_mem_eq(node1.public_key, node2.public_key, 33);
|
||||
ck_assert_mem_eq(node1.public_key, node3.public_key, 33);
|
||||
}
|
||||
@ -1979,7 +1979,7 @@ END_TEST
|
||||
START_TEST(test_bip32_optimized) {
|
||||
HDNode root;
|
||||
hdnode_from_seed((uint8_t *)"NothingToSeeHere", 16, SECP256K1_NAME, &root);
|
||||
hdnode_fill_public_key(&root);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&root), 0);
|
||||
|
||||
curve_point pub;
|
||||
ecdsa_read_pubkey(&secp256k1, root.public_key, &pub);
|
||||
@ -1991,7 +1991,7 @@ START_TEST(test_bip32_optimized) {
|
||||
// unoptimized
|
||||
memcpy(&node, &root, sizeof(HDNode));
|
||||
hdnode_public_ckd(&node, i);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ecdsa_get_address(node.public_key, 0, HASHER_SHA2_RIPEMD, HASHER_SHA2D,
|
||||
addr1, sizeof(addr1));
|
||||
// optimized
|
||||
@ -2136,7 +2136,7 @@ START_TEST(test_bip32_nist_seed) {
|
||||
fromhex(
|
||||
"7762f9729fed06121fd13f326884c82f59aa95c57ac492ce8c9654e60efd130c"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2160,7 +2160,7 @@ START_TEST(test_bip32_nist_seed) {
|
||||
fromhex(
|
||||
"0e49dc46ce1d8c29d9b80a05e40f5d0cd68cbf02ae98572186f5343be18084bf"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2190,7 +2190,7 @@ START_TEST(test_bip32_nist_vector_1) {
|
||||
fromhex(
|
||||
"612091aaa12e22dd2abef664f8a01a82cae99ad7441b7ef8110424915c268bc2"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2211,7 +2211,7 @@ START_TEST(test_bip32_nist_vector_1) {
|
||||
fromhex(
|
||||
"6939694369114c67917a182c59ddb8cafc3004e63ca5d3b84403ba8613debc0c"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2232,7 +2232,7 @@ START_TEST(test_bip32_nist_vector_1) {
|
||||
fromhex(
|
||||
"284e9d38d07d21e4e281b645089a94f4cf5a5a81369acf151a1c3a57f18b2129"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2253,7 +2253,7 @@ START_TEST(test_bip32_nist_vector_1) {
|
||||
fromhex(
|
||||
"694596e8a54f252c960eb771a3c41e7e32496d03b954aeb90f61635b8e092aa7"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2274,7 +2274,7 @@ START_TEST(test_bip32_nist_vector_1) {
|
||||
fromhex(
|
||||
"5996c37fd3dd2679039b23ed6f70b506c6b56b3cb5e424681fb0fa64caf82aaa"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2295,7 +2295,7 @@ START_TEST(test_bip32_nist_vector_1) {
|
||||
fromhex(
|
||||
"21c4f269ef0a5fd1badf47eeacebeeaa3de22eb8e5b0adcd0f27dd99d34d0119"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2329,7 +2329,7 @@ START_TEST(test_bip32_nist_vector_2) {
|
||||
fromhex(
|
||||
"eaa31c2e46ca2962227cf21d73a7ef0ce8b31c756897521eb6c7b39796633357"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2351,7 +2351,7 @@ START_TEST(test_bip32_nist_vector_2) {
|
||||
fromhex(
|
||||
"d7d065f63a62624888500cdb4f88b6d59c2927fee9e6d0cdff9cad555884df6e"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2373,7 +2373,7 @@ START_TEST(test_bip32_nist_vector_2) {
|
||||
fromhex(
|
||||
"96d2ec9316746a75e7793684ed01e3d51194d81a42a3276858a5b7376d4b94b9"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2395,7 +2395,7 @@ START_TEST(test_bip32_nist_vector_2) {
|
||||
fromhex(
|
||||
"974f9096ea6873a915910e82b29d7c338542ccde39d2064d1cc228f371542bbc"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2417,7 +2417,7 @@ START_TEST(test_bip32_nist_vector_2) {
|
||||
fromhex(
|
||||
"da29649bbfaff095cd43819eda9a7be74236539a29094cd8336b07ed8d4eff63"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2439,7 +2439,7 @@ START_TEST(test_bip32_nist_vector_2) {
|
||||
fromhex(
|
||||
"bb0a77ba01cc31d77205d51d08bd313b979a71ef4de9b062f8958297e746bd67"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2490,10 +2490,10 @@ START_TEST(test_bip32_nist_compare) {
|
||||
"301133282ad079cbeb59bc446ad39d333928f74c46997d3609cd3e2801ca69d62788"
|
||||
"f9f174429946ff4e9be89f67c22fae28cb296a9b37734f75e73d1477af19"),
|
||||
64, NIST256P1_NAME, &node2);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
for (i = 0; i < 100; i++) {
|
||||
memcpy(&node3, &node1, sizeof(HDNode));
|
||||
hdnode_fill_public_key(&node3);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node3), 0);
|
||||
r = hdnode_private_ckd(&node1, i);
|
||||
ck_assert_int_eq(r, 1);
|
||||
r = hdnode_public_ckd(&node2, i);
|
||||
@ -2516,7 +2516,7 @@ START_TEST(test_bip32_nist_compare) {
|
||||
fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000000"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node1);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node1), 0);
|
||||
ck_assert_mem_eq(node1.public_key, node2.public_key, 33);
|
||||
ck_assert_mem_eq(node1.public_key, node3.public_key, 33);
|
||||
}
|
||||
@ -2547,7 +2547,7 @@ START_TEST(test_bip32_nist_repeat) {
|
||||
fromhex(
|
||||
"06f0db126f023755d0b8d86d4591718a5210dd8d024e3e14b6159d63f53aa669"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2569,7 +2569,7 @@ START_TEST(test_bip32_nist_repeat) {
|
||||
fromhex(
|
||||
"092154eed4af83e078ff9b84322015aefe5769e31270f62c3f66c33888335f3a"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(
|
||||
node2.public_key,
|
||||
fromhex(
|
||||
@ -2586,7 +2586,7 @@ START_TEST(test_bip32_nist_repeat) {
|
||||
fromhex(
|
||||
"9e87fe95031f14736774cd82f25fd885065cb7c358c1edf813c72af535e83071"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(
|
||||
node2.public_key,
|
||||
fromhex(
|
||||
@ -2614,7 +2614,7 @@ START_TEST(test_bip32_ed25519_vector_1) {
|
||||
fromhex(
|
||||
"2b4be7f19ee27bbf30c667b642d5f4aa69fd169872f8fc3059c08ebae2eb19e7"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2633,7 +2633,7 @@ START_TEST(test_bip32_ed25519_vector_1) {
|
||||
fromhex(
|
||||
"68e0fe46dfb67e368c75379acec591dad19df3cde26e63b93a8e704f1dade7a3"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2652,7 +2652,7 @@ START_TEST(test_bip32_ed25519_vector_1) {
|
||||
fromhex(
|
||||
"b1d0bad404bf35da785a64ca1ac54b2617211d2777696fbffaf208f746ae84f2"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2671,7 +2671,7 @@ START_TEST(test_bip32_ed25519_vector_1) {
|
||||
fromhex(
|
||||
"92a5b23c0b8a99e37d07df3fb9966917f5d06e02ddbd909c7e184371463e9fc9"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2690,7 +2690,7 @@ START_TEST(test_bip32_ed25519_vector_1) {
|
||||
fromhex(
|
||||
"30d1dc7e5fc04c31219ab25a27ae00b50f6fd66622f6e9c913253d6511d1e662"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2709,7 +2709,7 @@ START_TEST(test_bip32_ed25519_vector_1) {
|
||||
fromhex(
|
||||
"8f94d394a8e8fd6b1bc2f3f49f5c47e385281d5c17e65324b0f62483e37e8793"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2741,7 +2741,7 @@ START_TEST(test_bip32_ed25519_vector_2) {
|
||||
fromhex(
|
||||
"171cb88b1b3c1db25add599712e36245d75bc65a1a5c9e18d76f9f2b1eab4012"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2761,7 +2761,7 @@ START_TEST(test_bip32_ed25519_vector_2) {
|
||||
fromhex(
|
||||
"1559eb2bbec5790b0c65d8693e4d0875b1747f4970ae8b650486ed7470845635"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2781,7 +2781,7 @@ START_TEST(test_bip32_ed25519_vector_2) {
|
||||
fromhex(
|
||||
"ea4f5bfe8694d8bb74b7b59404632fd5968b774ed545e810de9c32a4fb4192f4"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2801,7 +2801,7 @@ START_TEST(test_bip32_ed25519_vector_2) {
|
||||
fromhex(
|
||||
"3757c7577170179c7868353ada796c839135b3d30554bbb74a4b1e4a5a58505c"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2821,7 +2821,7 @@ START_TEST(test_bip32_ed25519_vector_2) {
|
||||
fromhex(
|
||||
"5837736c89570de861ebc173b1086da4f505d4adb387c6a1b1342d5e4ac9ec72"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2841,7 +2841,7 @@ START_TEST(test_bip32_ed25519_vector_2) {
|
||||
fromhex(
|
||||
"551d333177df541ad876a60ea71f00447931c0a9da16f227c11ea080d7391b8d"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2879,7 +2879,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
fromhex(
|
||||
"e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2894,7 +2894,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -2922,7 +2922,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
fromhex(
|
||||
"edb2e14f9ee77d26dd93b4ecede8d16ed408ce149b6cd80b0715a2d911a0afea"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2936,7 +2936,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -2964,7 +2964,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
fromhex(
|
||||
"3c6cb8d0f6a264c91ea8b5030fadaa8e538b020f0a387421a12de9319dc93368"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -2978,7 +2978,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -3006,7 +3006,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
fromhex(
|
||||
"cbce0d719ecf7431d88e6a89fa1483e02e35092af60c042b1df2ff59fa424dca"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -3020,7 +3020,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -3048,7 +3048,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
fromhex(
|
||||
"0f479245fb19a38a1954c5c7c0ebab2f9bdfd96a17563ef28a6a4b1a2a764ef4"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -3062,7 +3062,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -3090,7 +3090,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
fromhex(
|
||||
"471b76e389e528d6de6d816857e012c5455051cad6660850e58372a6c3e6e7c8"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -3104,7 +3104,7 @@ START_TEST(test_bip32_decred_vector_1) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -3152,7 +3152,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
fromhex(
|
||||
"4b03d6fc340455b363f51020ad3ecca4f0850280cf436c70c727923f6db46c3e"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -3166,7 +3166,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -3195,7 +3195,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
fromhex(
|
||||
"abe74a98f6c7eabee0428f53798f0ab8aa1bd37873999041703c742f15ac7e1e"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -3209,7 +3209,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -3238,7 +3238,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
fromhex(
|
||||
"877c779ad9687164e9c2f4f0f4ff0340814392330693ce95a58fe18fd52e6e93"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -3252,7 +3252,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -3281,7 +3281,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
fromhex(
|
||||
"704addf544a06e5ee4bea37098463c23613da32020d604506da8c0518e1da4b7"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -3295,7 +3295,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -3324,7 +3324,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
fromhex(
|
||||
"f1c7c871a54a804afe328b4c83a1c33b8e5ff48f5087273f04efa83b247d6a2d"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -3338,7 +3338,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -3367,7 +3367,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
fromhex(
|
||||
"bb7d39bdb83ecf58f2fd82b6d918341cbef428661ef01ab97c28a4842125ac23"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key,
|
||||
fromhex(
|
||||
@ -3381,7 +3381,7 @@ START_TEST(test_bip32_decred_vector_2) {
|
||||
r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE,
|
||||
SECP256K1_DECRED_NAME, &node2, NULL);
|
||||
ck_assert_int_eq(r, 0);
|
||||
hdnode_fill_public_key(&node2);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node2), 0);
|
||||
ck_assert_mem_eq(&node, &node2, sizeof(HDNode));
|
||||
hdnode_serialize_public(&node, fingerprint, DECRED_VERSION_PUBLIC, str,
|
||||
sizeof(str));
|
||||
@ -7057,7 +7057,7 @@ static void test_bip32_ecdh_init_node(HDNode *node, const char *seed_str,
|
||||
const char *curve_name) {
|
||||
hdnode_from_seed((const uint8_t *)seed_str, strlen(seed_str), curve_name,
|
||||
node);
|
||||
hdnode_fill_public_key(node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(node), 0);
|
||||
if (node->public_key[0] == 1) {
|
||||
node->public_key[0] = 0x40; // Curve25519 public keys start with 0x40 byte
|
||||
}
|
||||
|
@ -136,7 +136,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_1) {
|
||||
fromhex(
|
||||
"daeb991f2d2128e2525415c56a07f4366baa26c1e48572a5e073934b6de35fbc"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key + 1,
|
||||
fromhex(
|
||||
@ -174,7 +174,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_2) {
|
||||
fromhex(
|
||||
"64aa9a16331f14c981b769efcf96addcc4c6db44047fe7a7feae0be23d33bf54"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key + 1,
|
||||
fromhex(
|
||||
@ -212,7 +212,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_3) {
|
||||
fromhex(
|
||||
"b4fc241feffe840b8a54a26ab447f5a5caa31032db3a8091fca14f38b86ed539"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key + 1,
|
||||
fromhex(
|
||||
@ -251,7 +251,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_4) {
|
||||
fromhex(
|
||||
"a3071959013af95aaecf78a7a2e1b9838bbbc4864d6a8a2295243782078345cd"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key + 1,
|
||||
fromhex(
|
||||
@ -291,7 +291,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_5) {
|
||||
fromhex(
|
||||
"5bebf1eea68acd04932653d944b064b10baaf5886dd73c185cc285059bf93363"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key + 1,
|
||||
fromhex(
|
||||
@ -332,7 +332,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_6) {
|
||||
fromhex(
|
||||
"466332cb097934b43008701e7e27044aa56c7859019e4eba18d91a3bea23dff7"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key + 1,
|
||||
fromhex(
|
||||
@ -374,7 +374,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_7) {
|
||||
fromhex(
|
||||
"01eccef768a79859f824a1d3c3e35e131184e2940c3fca9a4c9b307741f65363"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key + 1,
|
||||
fromhex(
|
||||
@ -416,7 +416,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_8) {
|
||||
fromhex(
|
||||
"170e0d3b65ba8d71f27a6db60d0ac26dcb16e52e08cc259db72066f206b258d5"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key + 1,
|
||||
fromhex(
|
||||
@ -459,7 +459,7 @@ START_TEST(test_bip32_cardano_hdnode_vector_9) {
|
||||
fromhex(
|
||||
"80d2c677638e5dbd4395cdec279bf2a42077f2797c9e887949d37cdb317fce6a"),
|
||||
32);
|
||||
hdnode_fill_public_key(&node);
|
||||
ck_assert_int_eq(hdnode_fill_public_key(&node), 0);
|
||||
ck_assert_mem_eq(
|
||||
node.public_key + 1,
|
||||
fromhex(
|
||||
|
@ -45,7 +45,13 @@ void fsm_msgGetPublicKey(const GetPublicKey *msg) {
|
||||
node = fsm_getDerivedNode(curve, msg->address_n, msg->address_n_count,
|
||||
&fingerprint);
|
||||
if (!node) return;
|
||||
hdnode_fill_public_key(node);
|
||||
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError,
|
||||
_("Failed to derive public key"));
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
||||
resp->node.depth = node->depth;
|
||||
resp->node.fingerprint = fingerprint;
|
||||
@ -154,7 +160,13 @@ void fsm_msgGetAddress(const GetAddress *msg) {
|
||||
HDNode *node = fsm_getDerivedNode(coin->curve_name, msg->address_n,
|
||||
msg->address_n_count, NULL);
|
||||
if (!node) return;
|
||||
hdnode_fill_public_key(node);
|
||||
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError,
|
||||
_("Failed to derive public key"));
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
||||
char address[MAX_ADDR_SIZE];
|
||||
if (msg->has_multisig) { // use progress bar only for multisig
|
||||
@ -262,7 +274,13 @@ void fsm_msgSignMessage(const SignMessage *msg) {
|
||||
layoutProgressSwipe(_("Signing"), 0);
|
||||
if (cryptoMessageSign(coin, node, msg->script_type, msg->message.bytes,
|
||||
msg->message.size, resp->signature.bytes) == 0) {
|
||||
hdnode_fill_public_key(node);
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError,
|
||||
_("Failed to derive public key"));
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!compute_address(coin, msg->script_type, node, false, NULL,
|
||||
resp->address)) {
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError,
|
||||
|
@ -139,14 +139,25 @@ void fsm_msgSignIdentity(const SignIdentity *msg) {
|
||||
}
|
||||
|
||||
if (result == 0) {
|
||||
hdnode_fill_public_key(node);
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError,
|
||||
_("Failed to derive public key"));
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(curve, SECP256K1_NAME) != 0) {
|
||||
resp->has_address = false;
|
||||
} else {
|
||||
resp->has_address = true;
|
||||
hdnode_get_address(
|
||||
node, 0x00, resp->address,
|
||||
sizeof(resp->address)); // hardcoded Bitcoin address type
|
||||
// hardcoded Bitcoin address type
|
||||
if (hdnode_get_address(node, 0x00, resp->address,
|
||||
sizeof(resp->address)) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError,
|
||||
_("Failed to get address"));
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
}
|
||||
resp->public_key.size = 33;
|
||||
memcpy(resp->public_key.bytes, node->public_key, 33);
|
||||
@ -207,7 +218,12 @@ void fsm_msgGetECDHSessionKey(const GetECDHSessionKey *msg) {
|
||||
if (hdnode_get_shared_key(node, msg->peer_public_key.bytes,
|
||||
resp->session_key.bytes, &result_size) == 0) {
|
||||
resp->session_key.size = result_size;
|
||||
hdnode_fill_public_key(node);
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError,
|
||||
_("Failed to derive public key"));
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
memcpy(resp->public_key.bytes, node->public_key, 33);
|
||||
resp->public_key.size = 33;
|
||||
resp->has_public_key = true;
|
||||
|
@ -33,7 +33,13 @@ void fsm_msgEthereumGetPublicKey(const EthereumGetPublicKey *msg) {
|
||||
HDNode *node = fsm_getDerivedNode(curve, msg->address_n, msg->address_n_count,
|
||||
&fingerprint);
|
||||
if (!node) return;
|
||||
hdnode_fill_public_key(node);
|
||||
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError,
|
||||
_("Failed to derive public key"));
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg->has_show_display && msg->show_display) {
|
||||
layoutPublicKey(node->public_key);
|
||||
|
@ -123,7 +123,12 @@ void fsm_msgNEMSignTx(NEMSignTx *msg) {
|
||||
msg->transaction.address_n_count, NULL);
|
||||
if (!node) return;
|
||||
|
||||
hdnode_fill_public_key(node);
|
||||
if (hdnode_fill_public_key(node) != 0) {
|
||||
fsm_sendFailure(FailureType_Failure_ProcessError,
|
||||
_("Failed to derive public key"));
|
||||
layoutHome();
|
||||
return;
|
||||
}
|
||||
|
||||
const NEMTransactionCommon *common =
|
||||
msg->has_multisig ? &msg->multisig : &msg->transaction;
|
||||
|
@ -652,7 +652,10 @@ static bool fill_input_script_sig(TxInputType *tinput) {
|
||||
// Failed to derive private key
|
||||
return false;
|
||||
}
|
||||
hdnode_fill_public_key(&node);
|
||||
if (hdnode_fill_public_key(&node) != 0) {
|
||||
// Failed to derive public key
|
||||
return false;
|
||||
}
|
||||
if (tinput->has_multisig) {
|
||||
tinput->script_sig.size = compile_script_multisig(coin, &(tinput->multisig),
|
||||
tinput->script_sig.bytes);
|
||||
|
@ -1461,7 +1461,9 @@ const HDNode *stellar_deriveNode(const uint32_t *address_n,
|
||||
return 0;
|
||||
}
|
||||
|
||||
hdnode_fill_public_key(&node);
|
||||
if (hdnode_fill_public_key(&node) != 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return &node;
|
||||
}
|
||||
|
@ -256,7 +256,9 @@ int compile_output(const CoinInfo *coin, AmountUnit amount_unit,
|
||||
NULL) == 0) {
|
||||
return 0; // failed to compile output
|
||||
}
|
||||
hdnode_fill_public_key(&node);
|
||||
if (hdnode_fill_public_key(&node) != 0) {
|
||||
return 0; // failed to compile output
|
||||
}
|
||||
if (!compute_address(coin, input_script_type, &node, in->has_multisig,
|
||||
&in->multisig, in->address)) {
|
||||
return 0; // failed to compile output
|
||||
|
Loading…
Reference in New Issue
Block a user