Пример #1
0
 def _test_wallet(self, wallet, data):
     self.assertEqual(wallet.serialize_b58(private=True), data["private_key"])
     self.assertEqual(wallet.serialize_b58(private=False), data["public_key"])
     self.assertEqual(wallet.export_to_wif(), data["wif"])
     self.assertEqual(wallet.chain_code, ensure_bytes(data["chain_code"]))
     fingerprint = ensure_bytes(data["fingerprint"])
     if not fingerprint.startswith(b"0x"):
         fingerprint = b"0x" + fingerprint
     self.assertEqual(wallet.fingerprint, fingerprint)
     self.assertEqual(wallet.depth, data["depth"])
     self.assertEqual(wallet.private_key._private_key.privkey.secret_multiplier, data["secret_exponent"])
Пример #2
0
def _test_wallet(wallet, data):
    assert wallet.serialize_b58(private=True) == data['private_key']
    assert wallet.serialize_b58(private=False) == data['public_key']
    assert wallet.export_to_wif() == data['wif']
    assert wallet.chain_code == ensure_bytes(data['chain_code'])
    fingerprint = ensure_bytes(data['fingerprint'])
    if not fingerprint.startswith(b'0x'):
        fingerprint = b'0x' + fingerprint
    assert wallet.fingerprint == fingerprint
    assert wallet.depth == data['depth']
    assert wallet.private_key._private_key.privkey.secret_multiplier == \
        data['secret_exponent']
Пример #3
0
 def _test_wallet(self, wallet, data):
     self.assertEqual(
         wallet.serialize_b58(private=True), data['private_key'])
     self.assertEqual(
         wallet.serialize_b58(private=False), data['public_key'])
     self.assertEqual(wallet.export_to_wif(), data['wif'])
     self.assertEqual(wallet.chain_code, ensure_bytes(data['chain_code']))
     fingerprint = ensure_bytes(data['fingerprint'])
     if not fingerprint.startswith(b'0x'):
         fingerprint = b'0x' + fingerprint
     self.assertEqual(wallet.fingerprint, fingerprint)
     self.assertEqual(wallet.depth, data['depth'])
     self.assertEqual(
         wallet.private_key._private_key.privkey.secret_multiplier,
         data['secret_exponent'])
Пример #4
0
    def test_leading_zeros(self):
        """This zero-leading x coordinate generated by:

        pvk = '18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725'  # nopep8
        from ecdsa import SECP256k1
        from ecdsa.ecdsa import Public_key
        from bitmerchant.wallet.utils import long_to_hex

        pubkey = Public_key(
            SECP256k1.generator,
            SECP256k1.generator * long(pvk, 16))
        for i in range(1, 10000):
            p = pubkey.point * i
            x = p.x()
            k = long_to_hex(x, 64)
            if k.startswith('0'):
                print(i)
                print(long_to_hex(p.x(), 64))
                print(long_to_hex(p.y(), 64))
                break
        """
        expected_key = ensure_bytes(
            "04"
            "02cbfd5410fd04973c096a4275bf75070955ebd689f316a6fbd449980ba7b756"
            "c559764e5c367c03e002751aaf4ef8ec40fe97cda9b2d3f14fdd4cd244e8fcd2")
        public_key = PublicKey.from_hex_key(expected_key)
        self.assertEqual(public_key.get_key(), expected_key)
Пример #5
0
    def test_leading_zeros(self):
        """This zero-leading x coordinate generated by:

        pvk = '18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725'  # nopep8
        from ecdsa import SECP256k1
        from ecdsa.ecdsa import Public_key
        from bitmerchant.wallet.utils import long_to_hex

        pubkey = Public_key(
            SECP256k1.generator,
            SECP256k1.generator * long(pvk, 16))
        for i in range(1, 10000):
            p = pubkey.point * i
            x = p.x()
            k = long_to_hex(x, 64)
            if k.startswith('0'):
                print(i)
                print(long_to_hex(p.x(), 64))
                print(long_to_hex(p.y(), 64))
                break
        """
        expected_key = ensure_bytes(
            "04"
            "02cbfd5410fd04973c096a4275bf75070955ebd689f316a6fbd449980ba7b756"
            "c559764e5c367c03e002751aaf4ef8ec40fe97cda9b2d3f14fdd4cd244e8fcd2")
        public_key = PublicKey.from_hex_key(expected_key)
        self.assertEqual(public_key.get_key(), expected_key)
Пример #6
0
 def _test(self, key, private_key_b58, private_key_wif,
           pubkey_b58, pubkey_hex, address, include_private=True):
     if include_private:
         self.assertEqual(key.serialize_b58(), private_key_b58)
         self.assertEqual(key.export_to_wif(), private_key_wif)
     self.assertEqual(key.serialize_b58(private=False), pubkey_b58)
     self.assertEqual(key.get_public_key_hex(), ensure_bytes(pubkey_hex))
     self.assertEqual(key.to_address(), address)
Пример #7
0
 def setUpClass(cls):
     cls.expected_key = ensure_bytes(
         "0488ade4"  # BitcoinMainNet version
         "00"  # depth
         "00000000"  # parent fingerprint
         "00000000"  # child_number
         # chain_code
         "873dff81c02f525623fd1fe5167eac3a55a049de3d314bb42ee227ffed37d508"
         "00"  # key identifier
         # private exponent
         "e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35")
     cls.master_key = Wallet.deserialize(cls.expected_key)
Пример #8
0
    def _test_vector(self, key, id_hex, fingerprint, address,
                     secret_key_hex, secret_key_wif,
                     pubkey_hex, chaincode_hex,
                     pubkey_serialized_hex, private_serialized_hex,
                     pubkey_base58, private_base58,
                     include_private=True
                     ):
        self.assertEqual(key.identifier, ensure_bytes(id_hex))
        self.assertEqual(key.fingerprint, ensure_bytes(fingerprint))
        self.assertEqual(key.to_address(), address)
        self.assertEqual(key.get_public_key_hex(), ensure_bytes(pubkey_hex))
        self.assertEqual(key.chain_code, ensure_bytes(chaincode_hex))
        self.assertEqual(key.serialize(private=False),
                         ensure_bytes(pubkey_serialized_hex))
        self.assertEqual(key.serialize_b58(private=False), pubkey_base58)

        if include_private:
            self.assertEqual(key.get_private_key_hex(),
                             ensure_bytes(secret_key_hex))
            self.assertEqual(key.export_to_wif(), secret_key_wif)
            self.assertEqual(key.serialize(),
                             ensure_bytes(private_serialized_hex))
            self.assertEqual(key.serialize_b58(), private_base58)
Пример #9
0
 def test_bad_checksum(self):
     wif = self.key.export_to_wif()
     bad_checksum = base58.b58encode(unhexlify(ensure_bytes('FFFFFFFF')))
     wif = wif[:-8] + bad_checksum
     self.assertRaises(ChecksumException, PrivateKey.from_wif, wif)
Пример #10
0
 def test_bad_checksum(self):
     wif = self.key.export_to_wif()
     bad_checksum = base58.b58encode(
         unhexlify(ensure_bytes('FFFFFFFF')))
     wif = wif[:-8] + bad_checksum
     self.assertRaises(ChecksumException, PrivateKey.from_wif, wif)