Esempio n. 1
0
    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))
Esempio n. 2
0
    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))
Esempio n. 3
0
            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])))