def test_signing(self): seed = unhexlify('c882685a2859016f26ea3b95d3d06929') # tools.generate_seed(tools.STRENGTH_LOW, '') data = 'nazdar bazar' hsh = sha256(data).digest() # Generate secexp node = BIP32.get_node_from_seed(seed) bip32 = BIP32(node) # Get signing key and sign some data signer = bip32.get_signer([]) signature = signer.sign_digest_deterministic(hsh, sha256) # Transform secexp into master public key verifying = bip32.get_verifier([]) # Check that signature is valid using master public key self.assertTrue(verifying.verify(signature, data, sha256))
def test_seed_to_node(self): import pycoin.wallet as pywallet # Transform seed to xprv object seed = unhexlify('000102030405060708090a0b0c0d0e0f') node = BIP32.get_node_from_seed(seed) # Load xprv object to pycoin wallet node1 = pywallet.Wallet(chain_code=node.chain_code, secret_exponent_bytes=node.private_key, parent_fingerprint=struct.pack('I', node.fingerprint), depth=node.depth, child_number=node.child_num, is_private=True, is_test=False) # Load the same seed to pycoin wallet directly node2 = pywallet.Wallet.from_master_secret(seed) # ...and compare them self.assertEqual(node1.wallet_key(as_private=True), node2.wallet_key(as_private=True))
struct.pack('>I', network.version_private) + struct.pack('B', node.depth) + struct.pack('>I', node.fingerprint) + struct.pack('>I', node.child_num) + node.chain_code + struct.pack('B', 0x00) + node.private_key ) coin = BTCMainNet mnemonic = 'coyote chair wet catch income share nice unfair wish stamp fortune sentence' password = '' seed = Mnemonic('english').to_seed(mnemonic, passphrase=password) node = BIP32.get_node_from_seed(seed) print 'm' print serialize_public_node(node, coin) print serialize_private_node(node, coin) bip32 = BIP32(node) path = [] if len(sys.argv) > 1: print if sys.argv[1].startswith('m/'): sys.argv[1].replace('m/', '', 1) for i in sys.argv[1].split('/'): if i.endswith('\''): path.append(BIP32.prime(int(i[:-1])))