def test_seed_to_xprv(self): # Transform seed to xprv object seed = unhexlify('000102030405060708090a0b0c0d0e0f') xprv = BIP32.get_xprv_from_seed(seed) # Load xprv object to pycoin wallet xprv1 = pywallet.Wallet(chain_code=xprv.chain_code, secret_exponent_bytes=xprv.private_key, parent_fingerprint=struct.pack('I', xprv.fingerprint), depth=xprv.depth, child_number=xprv.child_num, is_private=True, is_test=False) # Load the same seed to pycoin wallet directly xprv2 = pywallet.Wallet.from_master_secret(seed) # ...and compare them self.assertEqual(xprv1.wallet_key(as_private=True), xprv2.wallet_key(as_private=True))
def test_signing(self): seed = unhexlify('c882685a2859016f26ea3b95d3d06929') # tools.generate_seed(tools.STRENGTH_LOW, '') data = 'nazdar bazar' hsh = sha256(data).digest() # Generate secexp xprv = BIP32.get_xprv_from_seed(seed) bip32 = BIP32(xprv) # Get signing key and sign some data signing = bip32._get_master_private_key() signature = signing.sign_digest_deterministic(hsh, sha256) # Transform secexp into master public key master_public_key = bip32.get_master_public_key() # Load verifying class from master public key verifying = VerifyingKey.from_string(unhexlify(master_public_key), SECP256k1) # Check that signature is valid using master public key self.assertTrue(verifying.verify(signature, data, sha256))