Example #1
0
    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))
Example #2
0
    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))