From 1695228d8019e98f0c5ca37e54c7e213519cc73e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 6 Apr 2020 15:49:36 +0000 Subject: [PATCH 1/3] core/crypto: remove unused serialize_private function --- .../modtrezorcrypto/modtrezorcrypto-bip32.h | 45 ++------- core/mocks/generated/trezorcrypto/bip32.pyi | 5 - core/tests/test_trezor.crypto.bip32.py | 96 ------------------- 3 files changed, 10 insertions(+), 136 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h index a33513f54..ef506eedb 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h @@ -259,26 +259,6 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_derive_path(mp_obj_t self, STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_HDNode_derive_path_obj, mod_trezorcrypto_HDNode_derive_path); -STATIC mp_obj_t serialize_public_private(mp_obj_t self, bool use_public, - uint32_t version) { - mp_obj_HDNode_t *o = MP_OBJ_TO_PTR(self); - char xpub[XPUB_MAXLEN] = {0}; - int written; - if (use_public) { - hdnode_fill_public_key(&o->hdnode); - written = hdnode_serialize_public(&o->hdnode, o->fingerprint, version, xpub, - XPUB_MAXLEN); - } else { - written = hdnode_serialize_private(&o->hdnode, o->fingerprint, version, - xpub, XPUB_MAXLEN); - } - if (written <= 0) { - mp_raise_ValueError("Failed to serialize"); - } - return mp_obj_new_str_copy(&mp_type_str, (const uint8_t *)xpub, - written - 1); // written includes 0 at the end -} - /// def serialize_public(self, version: int) -> str: /// """ /// Serialize the public info from HD node to base58 string. @@ -286,23 +266,20 @@ STATIC mp_obj_t serialize_public_private(mp_obj_t self, bool use_public, 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); - return serialize_public_private(self, true, ver); + mp_obj_HDNode_t *o = MP_OBJ_TO_PTR(self); + char xpub[XPUB_MAXLEN] = {0}; + hdnode_fill_public_key(&o->hdnode); + int written = hdnode_serialize_public(&o->hdnode, o->fingerprint, ver, xpub, + XPUB_MAXLEN); + if (written <= 0) { + mp_raise_ValueError("Failed to serialize"); + } + // written includes NULL at the end of the string + return mp_obj_new_str_copy(&mp_type_str, (const uint8_t *)xpub, written - 1); } STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_HDNode_serialize_public_obj, mod_trezorcrypto_HDNode_serialize_public); -/// def serialize_private(self, version: int) -> str: -/// """ -/// Serialize the private info HD node to base58 string. -/// """ -STATIC mp_obj_t mod_trezorcrypto_HDNode_serialize_private(mp_obj_t self, - mp_obj_t version) { - uint32_t ver = trezor_obj_get_uint(version); - return serialize_public_private(self, false, ver); -} -STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_HDNode_serialize_private_obj, - mod_trezorcrypto_HDNode_serialize_private); - /// def clone(self) -> HDNode: /// """ /// Returns a copy of the HD node. @@ -523,8 +500,6 @@ STATIC const mp_rom_map_elem_t mod_trezorcrypto_HDNode_locals_dict_table[] = { #endif {MP_ROM_QSTR(MP_QSTR_derive_path), MP_ROM_PTR(&mod_trezorcrypto_HDNode_derive_path_obj)}, - {MP_ROM_QSTR(MP_QSTR_serialize_private), - MP_ROM_PTR(&mod_trezorcrypto_HDNode_serialize_private_obj)}, {MP_ROM_QSTR(MP_QSTR_serialize_public), MP_ROM_PTR(&mod_trezorcrypto_HDNode_serialize_public_obj)}, {MP_ROM_QSTR(MP_QSTR_clone), diff --git a/core/mocks/generated/trezorcrypto/bip32.pyi b/core/mocks/generated/trezorcrypto/bip32.pyi index eeb8e6cab..8f5479cf7 100644 --- a/core/mocks/generated/trezorcrypto/bip32.pyi +++ b/core/mocks/generated/trezorcrypto/bip32.pyi @@ -41,11 +41,6 @@ class HDNode: Serialize the public info from HD node to base58 string. """ - def serialize_private(self, version: int) -> str: - """ - Serialize the private info HD node to base58 string. - """ - def clone(self) -> HDNode: """ Returns a copy of the HD node. diff --git a/core/tests/test_trezor.crypto.bip32.py b/core/tests/test_trezor.crypto.bip32.py index d7d883b75..4a18dcac8 100644 --- a/core/tests/test_trezor.crypto.bip32.py +++ b/core/tests/test_trezor.crypto.bip32.py @@ -42,10 +42,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('873dff81c02f525623fd1fe5167eac3a55a049de3d314bb42ee227ffed37d508')) self.assertEqual(n.private_key(), unhexlify('e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35')) self.assertEqual(n.public_key(), unhexlify('0339a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c2')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -59,10 +55,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('47fdacbd0f1097043b78c63c20c34ef4ed9a111d980047ad16282c7ae6236141')) self.assertEqual(n.private_key(), unhexlify('edb2e14f9ee77d26dd93b4ecede8d16ed408ce149b6cd80b0715a2d911a0afea')) self.assertEqual(n.public_key(), unhexlify('035a784662a4a20a65bf6aab9ae98a6c068a81c52e4b032c0fb5400c706cfccc56')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9uHRZZhk6KAJC1avXpDAp4MDc3sQKNxDiPvvkX8Br5ngLNv1TxvUxt4cV1rGL5hj6KCesnDYUhd7oWgT11eZG7XnxHrnYeSvkzY7d2bhkJ7') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -76,10 +68,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('2a7857631386ba23dacac34180dd1983734e444fdbf774041578e9b6adb37c19')) self.assertEqual(n.private_key(), unhexlify('3c6cb8d0f6a264c91ea8b5030fadaa8e538b020f0a387421a12de9319dc93368')) self.assertEqual(n.public_key(), unhexlify('03501e454bf00751f24b1b489aa925215d66af2234e3891c3b21a52bedb3cd711c')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSxqu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ASuArnXKPbfEwhqN6e3mwBcDTgzisQN1wXN9BJcM47sSikHjJf3UFHKkNAWbWMiGj7Wf5uMash7SyYq527Hqck2AxYysAA7xmALppuCkwQ') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -93,10 +81,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('04466b9cc8e161e966409ca52986c584f07e9dc81f735db683c3ff6ec7b1503f')) self.assertEqual(n.private_key(), unhexlify('cbce0d719ecf7431d88e6a89fa1483e02e35092af60c042b1df2ff59fa424dca')) self.assertEqual(n.public_key(), unhexlify('0357bfe1e341d01c69fe5654309956cbea516822fba8a601743a012a7896ee8dc2')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9z4pot5VBttmtdRTWfWQmoH1taj2axGVzFqSb8C9xaxKymcFzXBDptWmT7FwuEzG3ryjH4ktypQSAewRiNMjANTtpgP4mLTj34bhnZX7UiM') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6D4BDPcP2GT577Vvch3R8wDkScZWzQzMMUm3PWbmWvVJrZwQY4VUNgqFJPMM3No2dFDFGTsxxpG5uJh7n7epu4trkrX7x7DogT5Uv6fcLW5') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -110,10 +94,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('cfb71883f01676f587d023cc53a35bc7f88f724b1f8c2892ac1275ac822a3edd')) self.assertEqual(n.private_key(), unhexlify('0f479245fb19a38a1954c5c7c0ebab2f9bdfd96a17563ef28a6a4b1a2a764ef4')) self.assertEqual(n.public_key(), unhexlify('02e8445082a72f29b75ca48748a914df60622a609cacfce8ed0e35804560741d29')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -127,10 +107,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('c783e67b921d2beb8f6b389cc646d7263b4145701dadd2161548a8b078e65e9e')) self.assertEqual(n.private_key(), unhexlify('471b76e389e528d6de6d816857e012c5455051cad6660850e58372a6c3e6e7c8')) self.assertEqual(n.public_key(), unhexlify('022a471424da5e657499d1ff51cb43c47481a03b1e77f951fe64cec9f5a48f7011')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprvA41z7zogVVwxVSgdKUHDy1SKmdb533PjDz7J6N6mV6uS3ze1ai8FHa8kmHScGpWmj4WggLyQjgPie1rFSruoUihUZREPSL39UNdE3BBDu76') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -150,10 +126,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('60499f801b896d83179a4374aeb7822aaeaceaa0db1f85ee3e904c4defbd9689')) self.assertEqual(n.private_key(), unhexlify('4b03d6fc340455b363f51020ad3ecca4f0850280cf436c70c727923f6db46c3e')) self.assertEqual(n.public_key(), unhexlify('03cbcaa9c98c877a26977d00825c956a238e8dddfbd322cce4f74b0b5bd6ace4a7')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -167,10 +139,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('f0909affaa7ee7abe5dd4e100598d4dc53cd709d5a5c2cac40e7412f232f7c9c')) self.assertEqual(n.private_key(), unhexlify('abe74a98f6c7eabee0428f53798f0ab8aa1bd37873999041703c742f15ac7e1e')) self.assertEqual(n.public_key(), unhexlify('02fc9e5af0ac8d9b3cecfe2a888e2117ba3d089d8585886c9c826b6b22a98d12ea')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -184,10 +152,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('be17a268474a6bb9c61e1d720cf6215e2a88c5406c4aee7b38547f585c9a37d9')) self.assertEqual(n.private_key(), unhexlify('877c779ad9687164e9c2f4f0f4ff0340814392330693ce95a58fe18fd52e6e93')) self.assertEqual(n.public_key(), unhexlify('03c01e7425647bdefa82b12d9bad5e3e6865bee0502694b94ca58b666abc0a5c3b')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9wSp6B7kry3Vj9m1zSnLvN3xH8RdsPP1Mh7fAaR7aRLcQMKTR2vidYEeEg2mUCTAwCd6vnxVrcjfy2kRgVsFawNzmjuHc2YmYRmagcEPdU9') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ASAVgeehLbnwdqV6UKMHVzgqAG8Gr6riv3Fxxpj8ksbH9ebxaEyBLZ85ySDhKiLDBrQSARLq1uNRts8RuJiHjaDMBU4Zn9h8LZNnBC5y4a') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -201,10 +165,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('f366f48f1ea9f2d1d3fe958c95ca84ea18e4c4ddb9366c336c927eb246fb38cb')) self.assertEqual(n.private_key(), unhexlify('704addf544a06e5ee4bea37098463c23613da32020d604506da8c0518e1da4b7')) self.assertEqual(n.public_key(), unhexlify('03a7d1d856deb74c508e05031f9895dab54626251b3806e16b4bd12e781a7df5b9')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9zFnWC6h2cLgpmSA46vutJzBcfJ8yaJGg8cX1e5StJh45BBciYTRXSd25UEPVuesF9yog62tGAQtHjXajPPdbRCHuWS6T8XA2ECKADdw4Ef') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5EwVvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -218,10 +178,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('637807030d55d01f9a0cb3a7839515d796bd07706386a6eddf06cc29a65a0e29')) self.assertEqual(n.private_key(), unhexlify('f1c7c871a54a804afe328b4c83a1c33b8e5ff48f5087273f04efa83b247d6a2d')) self.assertEqual(n.public_key(), unhexlify('02d2b36900396c9282fa14628566582f206a5dd0bcc8d5e892611806cafb0301f0')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -235,10 +191,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('9452b549be8cea3ecb7a84bec10dcfd94afe4d129ebfd3b3cb58eedf394ed271')) self.assertEqual(n.private_key(), unhexlify('bb7d39bdb83ecf58f2fd82b6d918341cbef428661ef01ab97c28a4842125ac23')) self.assertEqual(n.public_key(), unhexlify('024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -259,10 +211,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('873dff81c02f525623fd1fe5167eac3a55a049de3d314bb42ee227ffed37d508')) self.assertEqual(n.private_key(), unhexlify('e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35')) self.assertEqual(n.public_key(), unhexlify('0339a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c2')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -277,10 +225,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('47fdacbd0f1097043b78c63c20c34ef4ed9a111d980047ad16282c7ae6236141')) self.assertEqual(n.private_key(), unhexlify('edb2e14f9ee77d26dd93b4ecede8d16ed408ce149b6cd80b0715a2d911a0afea')) self.assertEqual(n.public_key(), unhexlify('035a784662a4a20a65bf6aab9ae98a6c068a81c52e4b032c0fb5400c706cfccc56')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9uHRZZhk6KAJC1avXpDAp4MDc3sQKNxDiPvvkX8Br5ngLNv1TxvUxt4cV1rGL5hj6KCesnDYUhd7oWgT11eZG7XnxHrnYeSvkzY7d2bhkJ7') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -295,10 +239,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('2a7857631386ba23dacac34180dd1983734e444fdbf774041578e9b6adb37c19')) self.assertEqual(n.private_key(), unhexlify('3c6cb8d0f6a264c91ea8b5030fadaa8e538b020f0a387421a12de9319dc93368')) self.assertEqual(n.public_key(), unhexlify('03501e454bf00751f24b1b489aa925215d66af2234e3891c3b21a52bedb3cd711c')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSxqu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ASuArnXKPbfEwhqN6e3mwBcDTgzisQN1wXN9BJcM47sSikHjJf3UFHKkNAWbWMiGj7Wf5uMash7SyYq527Hqck2AxYysAA7xmALppuCkwQ') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -313,10 +253,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('04466b9cc8e161e966409ca52986c584f07e9dc81f735db683c3ff6ec7b1503f')) self.assertEqual(n.private_key(), unhexlify('cbce0d719ecf7431d88e6a89fa1483e02e35092af60c042b1df2ff59fa424dca')) self.assertEqual(n.public_key(), unhexlify('0357bfe1e341d01c69fe5654309956cbea516822fba8a601743a012a7896ee8dc2')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9z4pot5VBttmtdRTWfWQmoH1taj2axGVzFqSb8C9xaxKymcFzXBDptWmT7FwuEzG3ryjH4ktypQSAewRiNMjANTtpgP4mLTj34bhnZX7UiM') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6D4BDPcP2GT577Vvch3R8wDkScZWzQzMMUm3PWbmWvVJrZwQY4VUNgqFJPMM3No2dFDFGTsxxpG5uJh7n7epu4trkrX7x7DogT5Uv6fcLW5') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -331,10 +267,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('cfb71883f01676f587d023cc53a35bc7f88f724b1f8c2892ac1275ac822a3edd')) self.assertEqual(n.private_key(), unhexlify('0f479245fb19a38a1954c5c7c0ebab2f9bdfd96a17563ef28a6a4b1a2a764ef4')) self.assertEqual(n.public_key(), unhexlify('02e8445082a72f29b75ca48748a914df60622a609cacfce8ed0e35804560741d29')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -349,10 +281,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('c783e67b921d2beb8f6b389cc646d7263b4145701dadd2161548a8b078e65e9e')) self.assertEqual(n.private_key(), unhexlify('471b76e389e528d6de6d816857e012c5455051cad6660850e58372a6c3e6e7c8')) self.assertEqual(n.public_key(), unhexlify('022a471424da5e657499d1ff51cb43c47481a03b1e77f951fe64cec9f5a48f7011')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprvA41z7zogVVwxVSgdKUHDy1SKmdb533PjDz7J6N6mV6uS3ze1ai8FHa8kmHScGpWmj4WggLyQjgPie1rFSruoUihUZREPSL39UNdE3BBDu76') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -373,10 +301,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('60499f801b896d83179a4374aeb7822aaeaceaa0db1f85ee3e904c4defbd9689')) self.assertEqual(n.private_key(), unhexlify('4b03d6fc340455b363f51020ad3ecca4f0850280cf436c70c727923f6db46c3e')) self.assertEqual(n.public_key(), unhexlify('03cbcaa9c98c877a26977d00825c956a238e8dddfbd322cce4f74b0b5bd6ace4a7')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -391,10 +315,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('f0909affaa7ee7abe5dd4e100598d4dc53cd709d5a5c2cac40e7412f232f7c9c')) self.assertEqual(n.private_key(), unhexlify('abe74a98f6c7eabee0428f53798f0ab8aa1bd37873999041703c742f15ac7e1e')) self.assertEqual(n.public_key(), unhexlify('02fc9e5af0ac8d9b3cecfe2a888e2117ba3d089d8585886c9c826b6b22a98d12ea')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -409,10 +329,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('be17a268474a6bb9c61e1d720cf6215e2a88c5406c4aee7b38547f585c9a37d9')) self.assertEqual(n.private_key(), unhexlify('877c779ad9687164e9c2f4f0f4ff0340814392330693ce95a58fe18fd52e6e93')) self.assertEqual(n.public_key(), unhexlify('03c01e7425647bdefa82b12d9bad5e3e6865bee0502694b94ca58b666abc0a5c3b')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9wSp6B7kry3Vj9m1zSnLvN3xH8RdsPP1Mh7fAaR7aRLcQMKTR2vidYEeEg2mUCTAwCd6vnxVrcjfy2kRgVsFawNzmjuHc2YmYRmagcEPdU9') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ASAVgeehLbnwdqV6UKMHVzgqAG8Gr6riv3Fxxpj8ksbH9ebxaEyBLZ85ySDhKiLDBrQSARLq1uNRts8RuJiHjaDMBU4Zn9h8LZNnBC5y4a') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -427,10 +343,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('f366f48f1ea9f2d1d3fe958c95ca84ea18e4c4ddb9366c336c927eb246fb38cb')) self.assertEqual(n.private_key(), unhexlify('704addf544a06e5ee4bea37098463c23613da32020d604506da8c0518e1da4b7')) self.assertEqual(n.public_key(), unhexlify('03a7d1d856deb74c508e05031f9895dab54626251b3806e16b4bd12e781a7df5b9')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprv9zFnWC6h2cLgpmSA46vutJzBcfJ8yaJGg8cX1e5StJh45BBciYTRXSd25UEPVuesF9yog62tGAQtHjXajPPdbRCHuWS6T8XA2ECKADdw4Ef') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5EwVvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -445,10 +357,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('637807030d55d01f9a0cb3a7839515d796bd07706386a6eddf06cc29a65a0e29')) self.assertEqual(n.private_key(), unhexlify('f1c7c871a54a804afe328b4c83a1c33b8e5ff48f5087273f04efa83b247d6a2d')) self.assertEqual(n.public_key(), unhexlify('02d2b36900396c9282fa14628566582f206a5dd0bcc8d5e892611806cafb0301f0')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) @@ -463,10 +371,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.chain_code(), unhexlify('9452b549be8cea3ecb7a84bec10dcfd94afe4d129ebfd3b3cb58eedf394ed271')) self.assertEqual(n.private_key(), unhexlify('bb7d39bdb83ecf58f2fd82b6d918341cbef428661ef01ab97c28a4842125ac23')) self.assertEqual(n.public_key(), unhexlify('024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c')) - ns = n.serialize_private(VERSION_PRIVATE) - self.assertEqual(ns, 'xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j') - ns2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE).serialize_private(VERSION_PRIVATE) - self.assertEqual(ns2, ns) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt') n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) From a7806d08d7d91c899a87677e33ff7bf1e1a363ea Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 6 Apr 2020 18:04:24 +0200 Subject: [PATCH 2/3] core/crypto: remove unused bip32.deserialize function --- .../modtrezorcrypto/modtrezorcrypto-bip32.h | 34 ------- core/mocks/generated/trezorcrypto/bip32.pyi | 9 -- core/tests/test_trezor.crypto.bip32.py | 96 ------------------- 3 files changed, 139 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h index ef506eedb..fc55d4252 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h @@ -541,38 +541,6 @@ STATIC const mp_obj_type_t mod_trezorcrypto_HDNode_type = { /// mock:global -/// def deserialize( -/// value: str, version_public: int, version_private: int -/// ) -> HDNode: -/// """ -/// Construct a BIP0032 HD node from a base58-serialized value. -/// """ -STATIC mp_obj_t mod_trezorcrypto_bip32_deserialize(mp_obj_t value, - mp_obj_t version_public, - mp_obj_t version_private) { - mp_buffer_info_t valueb; - mp_get_buffer_raise(value, &valueb, MP_BUFFER_READ); - if (valueb.len == 0) { - mp_raise_ValueError("Invalid value"); - } - uint32_t vpub = trezor_obj_get_uint(version_public); - uint32_t vpriv = trezor_obj_get_uint(version_private); - HDNode hdnode; - uint32_t fingerprint; - if (hdnode_deserialize(valueb.buf, vpub, vpriv, SECP256K1_NAME, &hdnode, - &fingerprint) < 0) { - mp_raise_ValueError("Failed to deserialize"); - } - - mp_obj_HDNode_t *o = m_new_obj(mp_obj_HDNode_t); - o->base.type = &mod_trezorcrypto_HDNode_type; - o->hdnode = hdnode; - o->fingerprint = fingerprint; - return MP_OBJ_FROM_PTR(o); -} -STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_trezorcrypto_bip32_deserialize_obj, - mod_trezorcrypto_bip32_deserialize); - /// def from_seed(seed: bytes, curve_name: str) -> HDNode: /// """ /// Construct a BIP0032 HD node from a BIP0039 seed value. @@ -662,8 +630,6 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2( STATIC const mp_rom_map_elem_t mod_trezorcrypto_bip32_globals_table[] = { {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_bip32)}, {MP_ROM_QSTR(MP_QSTR_HDNode), MP_ROM_PTR(&mod_trezorcrypto_HDNode_type)}, - {MP_ROM_QSTR(MP_QSTR_deserialize), - MP_ROM_PTR(&mod_trezorcrypto_bip32_deserialize_obj)}, {MP_ROM_QSTR(MP_QSTR_from_seed), MP_ROM_PTR(&mod_trezorcrypto_bip32_from_seed_obj)}, #if !BITCOIN_ONLY diff --git a/core/mocks/generated/trezorcrypto/bip32.pyi b/core/mocks/generated/trezorcrypto/bip32.pyi index 8f5479cf7..14eb04ddd 100644 --- a/core/mocks/generated/trezorcrypto/bip32.pyi +++ b/core/mocks/generated/trezorcrypto/bip32.pyi @@ -109,15 +109,6 @@ class HDNode: """ -# extmod/modtrezorcrypto/modtrezorcrypto-bip32.h -def deserialize( - value: str, version_public: int, version_private: int -) -> HDNode: - """ - Construct a BIP0032 HD node from a base58-serialized value. - """ - - # extmod/modtrezorcrypto/modtrezorcrypto-bip32.h def from_seed(seed: bytes, curve_name: str) -> HDNode: """ diff --git a/core/tests/test_trezor.crypto.bip32.py b/core/tests/test_trezor.crypto.bip32.py index 4a18dcac8..866d96cb1 100644 --- a/core/tests/test_trezor.crypto.bip32.py +++ b/core/tests/test_trezor.crypto.bip32.py @@ -44,10 +44,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('0339a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c2')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'] n.derive(HARDENED | 0) @@ -57,10 +53,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('035a784662a4a20a65bf6aab9ae98a6c068a81c52e4b032c0fb5400c706cfccc56')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'/1] n.derive(1) @@ -70,10 +62,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('03501e454bf00751f24b1b489aa925215d66af2234e3891c3b21a52bedb3cd711c')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ASuArnXKPbfEwhqN6e3mwBcDTgzisQN1wXN9BJcM47sSikHjJf3UFHKkNAWbWMiGj7Wf5uMash7SyYq527Hqck2AxYysAA7xmALppuCkwQ') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'/1/2'] n.derive(HARDENED | 2) @@ -83,10 +71,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('0357bfe1e341d01c69fe5654309956cbea516822fba8a601743a012a7896ee8dc2')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6D4BDPcP2GT577Vvch3R8wDkScZWzQzMMUm3PWbmWvVJrZwQY4VUNgqFJPMM3No2dFDFGTsxxpG5uJh7n7epu4trkrX7x7DogT5Uv6fcLW5') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'/1/2'/2] n.derive(2) @@ -96,10 +80,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('02e8445082a72f29b75ca48748a914df60622a609cacfce8ed0e35804560741d29')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'/1/2'/2/1000000000] n.derive(1000000000) @@ -109,10 +89,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('022a471424da5e657499d1ff51cb43c47481a03b1e77f951fe64cec9f5a48f7011')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) def test_secp256k1_vector_2_derive(self): # pylint: disable=C0301 @@ -128,10 +104,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('03cbcaa9c98c877a26977d00825c956a238e8dddfbd322cce4f74b0b5bd6ace4a7')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0] n.derive(0) @@ -141,10 +113,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('02fc9e5af0ac8d9b3cecfe2a888e2117ba3d089d8585886c9c826b6b22a98d12ea')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0/2147483647'] n.derive(HARDENED | 2147483647) @@ -154,10 +122,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('03c01e7425647bdefa82b12d9bad5e3e6865bee0502694b94ca58b666abc0a5c3b')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ASAVgeehLbnwdqV6UKMHVzgqAG8Gr6riv3Fxxpj8ksbH9ebxaEyBLZ85ySDhKiLDBrQSARLq1uNRts8RuJiHjaDMBU4Zn9h8LZNnBC5y4a') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0/2147483647'/1] n.derive(1) @@ -167,10 +131,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('03a7d1d856deb74c508e05031f9895dab54626251b3806e16b4bd12e781a7df5b9')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5EwVvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0/2147483647'/1/2147483646'] n.derive(HARDENED | 2147483646) @@ -180,10 +140,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('02d2b36900396c9282fa14628566582f206a5dd0bcc8d5e892611806cafb0301f0')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0/2147483647'/1/2147483646'/2] n.derive(2) @@ -193,10 +149,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) def test_secp256k1_vector_1_derive_path(self): # pylint: disable=C0301 @@ -213,10 +165,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('0339a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c2')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'] n = m.clone() @@ -227,10 +175,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('035a784662a4a20a65bf6aab9ae98a6c068a81c52e4b032c0fb5400c706cfccc56')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'/1] n = m.clone() @@ -241,10 +185,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('03501e454bf00751f24b1b489aa925215d66af2234e3891c3b21a52bedb3cd711c')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ASuArnXKPbfEwhqN6e3mwBcDTgzisQN1wXN9BJcM47sSikHjJf3UFHKkNAWbWMiGj7Wf5uMash7SyYq527Hqck2AxYysAA7xmALppuCkwQ') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'/1/2'] n = m.clone() @@ -255,10 +195,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('0357bfe1e341d01c69fe5654309956cbea516822fba8a601743a012a7896ee8dc2')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6D4BDPcP2GT577Vvch3R8wDkScZWzQzMMUm3PWbmWvVJrZwQY4VUNgqFJPMM3No2dFDFGTsxxpG5uJh7n7epu4trkrX7x7DogT5Uv6fcLW5') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'/1/2'/2] n = m.clone() @@ -269,10 +205,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('02e8445082a72f29b75ca48748a914df60622a609cacfce8ed0e35804560741d29')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0'/1/2'/2/1000000000] n = m.clone() @@ -283,10 +215,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('022a471424da5e657499d1ff51cb43c47481a03b1e77f951fe64cec9f5a48f7011')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) def test_secp256k1_vector_2_derive_path(self): # pylint: disable=C0301 @@ -303,10 +231,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('03cbcaa9c98c877a26977d00825c956a238e8dddfbd322cce4f74b0b5bd6ace4a7')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0] n = m.clone() @@ -317,10 +241,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('02fc9e5af0ac8d9b3cecfe2a888e2117ba3d089d8585886c9c826b6b22a98d12ea')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0/2147483647'] n = m.clone() @@ -331,10 +251,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('03c01e7425647bdefa82b12d9bad5e3e6865bee0502694b94ca58b666abc0a5c3b')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ASAVgeehLbnwdqV6UKMHVzgqAG8Gr6riv3Fxxpj8ksbH9ebxaEyBLZ85ySDhKiLDBrQSARLq1uNRts8RuJiHjaDMBU4Zn9h8LZNnBC5y4a') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0/2147483647'/1] n = m.clone() @@ -345,10 +261,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('03a7d1d856deb74c508e05031f9895dab54626251b3806e16b4bd12e781a7df5b9')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5EwVvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0/2147483647'/1/2147483646'] n = m.clone() @@ -359,10 +271,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('02d2b36900396c9282fa14628566582f206a5dd0bcc8d5e892611806cafb0301f0')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) # [Chain m/0/2147483647'/1/2147483646'/2] n = m.clone() @@ -373,10 +281,6 @@ class TestCryptoBip32(unittest.TestCase): self.assertEqual(n.public_key(), unhexlify('024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c')) ns = n.serialize_public(VERSION_PUBLIC) self.assertEqual(ns, 'xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt') - n2 = bip32.deserialize(ns, VERSION_PUBLIC, VERSION_PRIVATE) - self.assertEqual(n2.private_key(), bytes(32)) - ns2 = n2.serialize_public(VERSION_PUBLIC) - self.assertEqual(ns2, ns) if __name__ == '__main__': From ff706eb70b77ba1ded744cc78a38ccf0010f09ef Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 6 Apr 2020 16:28:02 +0000 Subject: [PATCH 3/3] crypto: split hdnode_deserialize into hdnode_deserialize_{public,private} --- crypto/bip32.c | 46 +++++--- crypto/bip32.h | 10 +- crypto/tests/test_check.c | 217 ++++++++++++++++++------------------- crypto/tools/xpubaddrgen.c | 5 +- 4 files changed, 147 insertions(+), 131 deletions(-) diff --git a/crypto/bip32.c b/crypto/bip32.c index f7fb92046..84c8f85a8 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -824,7 +824,7 @@ int hdnode_get_shared_key(const HDNode *node, const uint8_t *peer_public_key, } static int hdnode_serialize(const HDNode *node, uint32_t fingerprint, - uint32_t version, char use_public, char *str, + uint32_t version, bool use_private, char *str, int strsize) { uint8_t node_data[78] = {0}; write_be(node_data, version); @@ -832,11 +832,11 @@ static int hdnode_serialize(const HDNode *node, uint32_t fingerprint, write_be(node_data + 5, fingerprint); write_be(node_data + 9, node->child_num); memcpy(node_data + 13, node->chain_code, 32); - if (use_public) { - memcpy(node_data + 45, node->public_key, 33); - } else { + if (use_private) { node_data[45] = 0; memcpy(node_data + 46, node->private_key, 32); + } else { + memcpy(node_data + 45, node->public_key, 33); } int ret = base58_encode_check(node_data, sizeof(node_data), node->curve->hasher_base58, str, strsize); @@ -846,18 +846,18 @@ static int hdnode_serialize(const HDNode *node, uint32_t fingerprint, int hdnode_serialize_public(const HDNode *node, uint32_t fingerprint, uint32_t version, char *str, int strsize) { - return hdnode_serialize(node, fingerprint, version, 1, str, strsize); + return hdnode_serialize(node, fingerprint, version, false, str, strsize); } int hdnode_serialize_private(const HDNode *node, uint32_t fingerprint, uint32_t version, char *str, int strsize) { - return hdnode_serialize(node, fingerprint, version, 0, str, strsize); + return hdnode_serialize(node, fingerprint, version, true, str, strsize); } // check for validity of curve point in case of public data not performed -int hdnode_deserialize(const char *str, uint32_t version_public, - uint32_t version_private, const char *curve, - HDNode *node, uint32_t *fingerprint) { +static int hdnode_deserialize(const char *str, uint32_t version, + bool use_private, const char *curve, HDNode *node, + uint32_t *fingerprint) { uint8_t node_data[78] = {0}; memzero(node, sizeof(HDNode)); node->curve = get_curve_by_name(curve); @@ -865,18 +865,20 @@ int hdnode_deserialize(const char *str, uint32_t version_public, sizeof(node_data)) != sizeof(node_data)) { return -1; } - uint32_t version = read_be(node_data); - if (version == version_public) { - memzero(node->private_key, sizeof(node->private_key)); - memcpy(node->public_key, node_data + 45, 33); - } else if (version == version_private) { // private node - if (node_data[45]) { // invalid data + uint32_t ver = read_be(node_data); + if (ver != version) { + return -3; // invalid version + } + if (use_private) { + // invalid data + if (node_data[45]) { return -2; } memcpy(node->private_key, node_data + 46, 32); memzero(node->public_key, sizeof(node->public_key)); } else { - return -3; // invalid version + memzero(node->private_key, sizeof(node->private_key)); + memcpy(node->public_key, node_data + 45, 33); } node->depth = node_data[4]; if (fingerprint) { @@ -887,6 +889,18 @@ int hdnode_deserialize(const char *str, uint32_t version_public, return 0; } +int hdnode_deserialize_public(const char *str, uint32_t version, + const char *curve, HDNode *node, + uint32_t *fingerprint) { + return hdnode_deserialize(str, version, false, curve, node, fingerprint); +} + +int hdnode_deserialize_private(const char *str, uint32_t version, + const char *curve, HDNode *node, + uint32_t *fingerprint) { + return hdnode_deserialize(str, version, true, curve, node, fingerprint); +} + const curve_info *get_curve_by_name(const char *curve_name) { if (curve_name == 0) { return 0; diff --git a/crypto/bip32.h b/crypto/bip32.h index 84910cd34..b3b408f87 100644 --- a/crypto/bip32.h +++ b/crypto/bip32.h @@ -133,9 +133,13 @@ int hdnode_serialize_public(const HDNode *node, uint32_t fingerprint, int hdnode_serialize_private(const HDNode *node, uint32_t fingerprint, uint32_t version, char *str, int strsize); -int hdnode_deserialize(const char *str, uint32_t version_public, - uint32_t version_private, const char *curve, - HDNode *node, uint32_t *fingerprint); +int hdnode_deserialize_public(const char *str, uint32_t version, + const char *curve, HDNode *node, + uint32_t *fingerprint); + +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, diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index d77ee26db..8ff1103b6 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -1167,8 +1167,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqji" "ChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); @@ -1177,8 +1177,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2" "gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1209,8 +1209,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xprv9uHRZZhk6KAJC1avXpDAp4MDc3sQKNxDiPvvkX8Br5ngLNv1TxvUxt4" "cV1rGL5hj6KCesnDYUhd7oWgT11eZG7XnxHrnYeSvkzY7d2bhkJ7"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1218,8 +1218,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP" "6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1250,8 +1250,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSx" "qu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1259,8 +1259,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xpub6ASuArnXKPbfEwhqN6e3mwBcDTgzisQN1wXN9BJcM47sSikHjJf3UFH" "KkNAWbWMiGj7Wf5uMash7SyYq527Hqck2AxYysAA7xmALppuCkwQ"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1291,8 +1291,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xprv9z4pot5VBttmtdRTWfWQmoH1taj2axGVzFqSb8C9xaxKymcFzXBDptW" "mT7FwuEzG3ryjH4ktypQSAewRiNMjANTtpgP4mLTj34bhnZX7UiM"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1300,8 +1300,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xpub6D4BDPcP2GT577Vvch3R8wDkScZWzQzMMUm3PWbmWvVJrZwQY4VUNgq" "FJPMM3No2dFDFGTsxxpG5uJh7n7epu4trkrX7x7DogT5Uv6fcLW5"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1332,8 +1332,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Ty" "h8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1341,8 +1341,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJ" "AyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1373,8 +1373,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xprvA41z7zogVVwxVSgdKUHDy1SKmdb533PjDz7J6N6mV6uS3ze1ai8FHa8" "kmHScGpWmj4WggLyQjgPie1rFSruoUihUZREPSL39UNdE3BBDu76"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1382,8 +1382,8 @@ START_TEST(test_bip32_vector_1) { ck_assert_str_eq(str, "xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNT" "EcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1430,8 +1430,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGds" "o3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1439,8 +1439,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSC" "Gu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1472,8 +1472,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT" "3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1481,8 +1481,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGm" "XUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1514,8 +1514,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xprv9wSp6B7kry3Vj9m1zSnLvN3xH8RdsPP1Mh7fAaR7aRLcQMKTR2vidYE" "eEg2mUCTAwCd6vnxVrcjfy2kRgVsFawNzmjuHc2YmYRmagcEPdU9"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1523,8 +1523,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xpub6ASAVgeehLbnwdqV6UKMHVzgqAG8Gr6riv3Fxxpj8ksbH9ebxaEyBLZ" "85ySDhKiLDBrQSARLq1uNRts8RuJiHjaDMBU4Zn9h8LZNnBC5y4a"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1556,8 +1556,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xprv9zFnWC6h2cLgpmSA46vutJzBcfJ8yaJGg8cX1e5StJh45BBciYTRXSd" "25UEPVuesF9yog62tGAQtHjXajPPdbRCHuWS6T8XA2ECKADdw4Ef"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1565,8 +1565,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5Ew" "VvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1598,8 +1598,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz" "7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1607,8 +1607,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJ" "bZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1640,8 +1640,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw" "7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1649,8 +1649,8 @@ START_TEST(test_bip32_vector_2) { ck_assert_str_eq(str, "xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLF" "bdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1712,8 +1712,8 @@ START_TEST(test_bip32_vector_3) { ck_assert_str_eq(str, "xprv9s21ZrQH143K25QhxbucbDDuQ4naNntJRi4KUfWT7xo4EKsHt2QJDu7" "KXp1A3u7Bi1j8ph3EGsZ9Xvz9dGuVrtHHs7pXeTzjuxBrCmmhgC6"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1721,8 +1721,8 @@ START_TEST(test_bip32_vector_3) { ck_assert_str_eq(str, "xpub661MyMwAqRbcEZVB4dScxMAdx6d4nFc9nvyvH3v4gJL378CSRZiYmhR" "oP7mBy6gSPSCYk6SzXPTf3ND1cZAceL7SfJ1Z3GC8vBgp2epUt13"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -1738,8 +1738,8 @@ START_TEST(test_bip32_vector_3) { ck_assert_str_eq(str, "xprv9uPDJpEQgRQfDcW7BkF7eTya6RPxXeJCqCJGHuCJ4GiRVLzkTXBAJMu" "2qaMWPrS7AANYqdq6vcBcBUdJCVVFceUvJFjaPdGZ2y9WACViL4L"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_private(str, VERSION_PRIVATE, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); ck_assert_mem_eq(&node, &node2, sizeof(HDNode)); @@ -1747,8 +1747,8 @@ START_TEST(test_bip32_vector_3) { ck_assert_str_eq(str, "xpub68NZiKmJWnxxS6aaHmn81bvJeTESw724CRDs6HbuccFQN9Ku14VQrAD" "WgqbhhTHBaohPX4CjNLf9fq9MYo6oDaPPLPxSb7gwQN3ih19Zm4Y"); - r = hdnode_deserialize(str, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node2, NULL); + r = hdnode_deserialize_public(str, VERSION_PUBLIC, SECP256K1_NAME, &node2, + NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -2716,8 +2716,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dprv3hCznBesA6jBtmoyVFPfyMSZ1qYZ3WdjdebquvkEfmRfxC9VFEFi2YD" "aJqHnx7uGe75eGSa3Mn3oHK11hBW7KZUrPxwbCPBmuCi1nwm182s"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_private(str, DECRED_VERSION_PRIVATE, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); ck_assert_int_eq(r, 0); hdnode_fill_public_key(&node2); @@ -2727,8 +2727,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dpubZ9169KDAEUnyoBhjjmT2VaEodr6pUTDoqCEAeqgbfr2JfkB88BbK77j" "bTYbcYXb2FVz7DKBdW4P618yd51MwF8DjKVopSbS7Lkgi6bowX5w"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -2759,8 +2759,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dprv3kUQDBztdyjKuwnaL3hfKYpT7W6X2huYH5d61YSWFBebSYwEBHAXJkC" "pQ7rvMAxPzKqxVCGLvBqWvGxXjAyMJsV1XwKkfnQCM9KctC8k8bk"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -2769,8 +2769,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dpubZCGVaKZBiMo7pMgLaZm1qmchjWenTeVcUdFQkTNsFGFEA6xs4EW8PKi" "qYqP7HBAitt9Hw16VQkQ1tjsZQSHNWFc6bEK6bLqrbco24FzBTY4"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -2801,8 +2801,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dprv3nRtCZ5VAoHW4RUwQgRafSNRPUDFrmsgyY71A5eoZceVfuyL9SbZe2r" "cbwDW2UwpkEniE4urffgbypegscNchPajWzy9QS4cRxF8QYXsZtq"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -2811,8 +2811,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dpubZEDyZgdnFBMHxqNhfCUwBfAg1UmXHiTmB5jKtzbAZhF8PTzy2PwAicN" "dkg1CmW6TARxQeUbgC7nAQenJts4YoG3KMiqcjsjgeMvwLc43w6C"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -2843,8 +2843,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dprv3pYtkZK168vgrU38gXkUSjHQ2LGpEUzQ9fXrR8fGUR59YviSnm6U82X" "jQYhpJEUPnVcC9bguJBQU5xVM4VFcDHu9BgScGPA6mQMH4bn5Cth"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -2853,8 +2853,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dpubZGLz7gsJAWzUksvtw3opxx5eeLq5fRaUMDABA3bdUVfnGUk5fiS5Cc3" "kZGTjWtYr3jrEavQQnAF6jv2WCpZtFX4uFgifXqev6ED1TM9rTCB"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -2885,8 +2885,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dprv3r7zqYFjT3NiNzdnwGxGpYh6S1TJCp1zA6mSEGaqLBJFnCB94cRMp7Y" "YLR49aTZHZ7ya1CXwQJ6rodKeU9NgQTxkPSK7pzgZRgjYkQ7rgJh"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -2895,8 +2895,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dpubZHv6Cfp2XRSWHQXZBo1dLmVM421Zdkc4MePkyBXCLFttVkCmwZkxth4" "ZV9PzkFP3DtD5xcVq2CPSYpJMWMaoxu1ixz4GNZFVcE2xnHP6chJ"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -2927,8 +2927,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dprv3tJXnTDSb3uE6Euo6WvvhFKfBMNfxuJt5smqyPoHEoomoBMQyhYoQSK" "JAHWtWxmuqdUVb8q9J2NaTkF6rYm6XDrSotkJ55bM21fffa7VV97"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -2937,8 +2937,8 @@ START_TEST(test_bip32_decred_vector_1) { ck_assert_str_eq(str, "dpubZL6d9amjfRy1zeoZM2zHDU7uoMvwPqtxHRQAiJjeEtQQWjP3retQV1q" "KJyzUd6ZJNgbJGXjtc5pdoBcTTYTLoxQzvV9JJCzCjB2eCWpRf8T"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -2989,8 +2989,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dprv3hCznBesA6jBtPKJbQTxRZAKG2gyj8tZKEPaCsV4e9YYFBAgRP2eTSP" "Aeu4r8dTMt9q51j2Vdt5zNqj7jbtovvocrP1qLj6WUTLF9xYQt4y"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -2999,8 +2999,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dpubZ9169KDAEUnynoD4qvXJwmxZt3FFA5UdWn1twnRReE9AxjCKJLNFY1u" "BoegbFmwzA4Du7yqnu8tLivhrCCH6P3DgBS1HH5vmf8MpNXvvYT9"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -3032,8 +3032,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dprv3jMy45BuuDETfxi59P8NTSjHPrNVq4wPRfLgRd57923L2hosj5NUEqi" "LYQ4i7fJtUpiXZLr2wUeToJY2Tm5sCpAJdajEHDmieVJiPQNXwu9"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -3042,8 +3042,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dpubZBA4RCkCybJFaNbqPuBiyfXY1rvmG1XTdCy1AY1U96dxkFqWc2i5KRE" "Mh7NYPpy7ZPMhdpFMAesex3JdFDfX4J5FEW3HjSacqEYPfwb9Cj7"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -3075,8 +3075,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dprv3mgHPRgK838mLK6T1p6WeBoJoJtXA1pGTHjqFuyHekcM7UTuER8fGwe" "RRsoLqSuHa98uskVPnJnfWZEBUC1AVmXnSCPDvUFKydXNnnPHTuQ"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -3085,8 +3085,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dpubZDUNkZEcCRCZEizDGL9sAQbZRKSnaxQLeqN9zpueeqCyq2VY7NUGMXA" "SacsK96S8XzNjq3YgFgwLtj8MJBToW6To9U5zxuazEyh89bjR1xA"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -3118,8 +3118,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dprv3oFqwZZ9bJcUmhAeJyyshvrTWtrAsHfcRYQbEzNiiH5nGvM6wVTDn6w" "oQEz92b2EHTYZBtLi82jKEnxSouA3cVaW8YWBsw5c3f4mwAhA3d2"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -3128,8 +3128,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dpubZF3wJh7SfggGg74QZW3EE9ei8uQSJEFgd62uyuK5iMgQzUNjpSnprgT" "pYz3d6Q3fXXtEEXQqpzWcP4LUVuXFsgA8JKt1Hot5kyUk4pPRhDz"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -3161,8 +3161,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dprv3qF3177i87wMirg6sraDvqty8yZg6THpXFPSXuM5AShBiiUQbq8FhSZ" "DGkYmBNR3RKfBrxzkKDBpsRFJfTnQfLsvpPPqRnakat6hHQA43X9"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -3171,8 +3171,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dpubZH38NEg1CW19dGZs8NdaT4hDkz7wXPstio1mGpHSAXHpSGW3UnTrn25" "ERT1Mp8ae5GMoQHMbgQiPrChMXQMdx3UqS8YqFkT1pqait8fY92u"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); @@ -3204,8 +3204,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dprv3s15tfqzxhw8Kmo7RBEqMeyvC7uGekLniSmvbs3bckpxQ6ks1KKqfmH" "144Jgh3PLxkyZRcS367kp7DrtUmnG16NpnsoNhxSXRgKbJJ7MUQR"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + 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_mem_eq(&node, &node2, sizeof(HDNode)); @@ -3214,19 +3214,18 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dpubZJoBFoQJ35zvEBgsfhJBssnAp8TY5gvruzQFLmyxcqRb7enVtGfSkLo" "2CkAZJMpa6T2fx6fUtvTgXtUvSVgAZ56bEwGxQsToeZfFV8VadE1"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); memcpy(&node3, &node, sizeof(HDNode)); memzero(&node3.private_key, 32); ck_assert_mem_eq(&node2, &node3, sizeof(HDNode)); // init m - hdnode_deserialize( + hdnode_deserialize_public( "dpubZF4LSCdF9YKZfNzTVYhz4RBxsjYXqms8AQnMBHXZ8GUKoRSigG7kQnKiJt5pzk93Q8Fx" "cdVBEkQZruSXduGtWnkwXzGnjbSovQ97dCxqaXc", - DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, SECP256K1_DECRED_NAME, - &node, NULL); + DECRED_VERSION_PUBLIC, SECP256K1_DECRED_NAME, &node, NULL); // test public derivation // [Chain m/0] @@ -3249,8 +3248,8 @@ START_TEST(test_bip32_decred_vector_2) { ck_assert_str_eq(str, "dpubZHJs2Z3PtHbbpaXQCi5wBKPhU8tC5ztBKUYBCYNGKk8eZ1EmBs3MhnL" "JbxHFMAahGnDnZT7qZxC7AXKP8PB6BDNUZgkG77moNMRmXyQ6s6s"); - r = hdnode_deserialize(str, DECRED_VERSION_PUBLIC, DECRED_VERSION_PRIVATE, - SECP256K1_DECRED_NAME, &node2, NULL); + r = hdnode_deserialize_public(str, DECRED_VERSION_PUBLIC, + SECP256K1_DECRED_NAME, &node2, NULL); ck_assert_int_eq(r, 0); ck_assert_mem_eq(&node2, &node, sizeof(HDNode)); } diff --git a/crypto/tools/xpubaddrgen.c b/crypto/tools/xpubaddrgen.c index fd5e83fd7..cce472923 100644 --- a/crypto/tools/xpubaddrgen.c +++ b/crypto/tools/xpubaddrgen.c @@ -7,14 +7,13 @@ #include "ecdsa.h" #define VERSION_PUBLIC 0x0488b21e -#define VERSION_PRIVATE 0x0488ade4 void process_job(uint32_t jobid, const char *xpub, uint32_t change, uint32_t from, uint32_t to) { HDNode node, child; if (change > 1 || to <= from || - hdnode_deserialize(xpub, VERSION_PUBLIC, VERSION_PRIVATE, SECP256K1_NAME, - &node, NULL) != 0) { + hdnode_deserialize_public(xpub, VERSION_PUBLIC, SECP256K1_NAME, &node, + NULL) != 0) { printf("%d error\n", jobid); return; }