Esempio n. 1
0
def test_from_prvkey():

    secp256r1 = CURVES["secp256r1"]
    m_c = (q, "mainnet", True)
    m_unc = (q, "mainnet", False)
    t_c = (q, "testnet", True)
    t_unc = (q, "testnet", False)
    for prv_key in [q] + plain_prv_keys:
        assert q == int_from_prvkey(prv_key)
        assert q == int_from_prvkey(prv_key, secp256r1)
        assert m_c == prvkeyinfo_from_prvkey(prv_key)
        assert m_c == prvkeyinfo_from_prvkey(prv_key, "mainnet")
        assert m_c == prvkeyinfo_from_prvkey(prv_key, "mainnet", compressed=True)
        assert m_c == prvkeyinfo_from_prvkey(prv_key, compressed=True)
        assert m_unc == prvkeyinfo_from_prvkey(prv_key, "mainnet", compressed=False)
        assert m_unc == prvkeyinfo_from_prvkey(prv_key, compressed=False)
        assert t_c == prvkeyinfo_from_prvkey(prv_key, "testnet")
        assert t_c == prvkeyinfo_from_prvkey(prv_key, "testnet", compressed=True)
        assert t_unc == prvkeyinfo_from_prvkey(prv_key, "testnet", compressed=False)

    for prv_key in [xprv_dict] + compressed_prv_keys:
        assert q == int_from_prvkey(prv_key)
        with pytest.raises(ValueError):
            int_from_prvkey(prv_key, secp256r1)
        assert m_c == prvkeyinfo_from_prvkey(prv_key)
        assert m_c == prvkeyinfo_from_prvkey(prv_key, "mainnet")
        assert m_c == prvkeyinfo_from_prvkey(prv_key, "mainnet", compressed=True)
        assert m_c == prvkeyinfo_from_prvkey(prv_key, compressed=True)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, "mainnet", compressed=False)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, compressed=False)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, "testnet")
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, "testnet", compressed=True)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, "testnet", compressed=False)

    for prv_key in uncompressed_prv_keys:
        assert q == int_from_prvkey(prv_key)
        with pytest.raises(ValueError):
            int_from_prvkey(prv_key, secp256r1)
        assert m_unc == prvkeyinfo_from_prvkey(prv_key)
        assert m_unc == prvkeyinfo_from_prvkey(prv_key, "mainnet")
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, "mainnet", compressed=True)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, compressed=True)
        assert m_unc == prvkeyinfo_from_prvkey(prv_key, "mainnet", compressed=False)
        assert m_unc == prvkeyinfo_from_prvkey(prv_key, compressed=False)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, "testnet")
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, "testnet", compressed=True)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, "testnet", compressed=False)

    for prv_key in [xprv_dict] + net_aware_prv_keys:
        assert q == int_from_prvkey(prv_key)
        with pytest.raises(ValueError):
            int_from_prvkey(prv_key, secp256r1)
        assert prvkeyinfo_from_prvkey(prv_key) in (m_c, m_unc)
        assert prvkeyinfo_from_prvkey(prv_key, "mainnet") in (m_c, m_unc)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(prv_key, "testnet")

    for prv_key in [q] + net_unaware_prv_keys:
        assert q == int_from_prvkey(prv_key)
        assert q == int_from_prvkey(prv_key, secp256r1)
        assert prvkeyinfo_from_prvkey(prv_key) in (m_c, m_unc)
        assert prvkeyinfo_from_prvkey(prv_key, "mainnet") in (m_c, m_unc)
        assert prvkeyinfo_from_prvkey(prv_key, "testnet") in (t_c, t_unc)

    for invalid_prv_key in [q0, qn, xprv0_dict, xprvn_dict] + invalid_prv_keys:
        with pytest.raises(ValueError):
            int_from_prvkey(invalid_prv_key)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(invalid_prv_key)

    for not_a_prv_key in (
        [q0, qn, xprv0_dict, xprvn_dict]
        + [INF, INF_xpub_dict]
        + not_a_prv_keys
        + [Q]
        + plain_pub_keys
        + [xpub_dict]
        + compressed_pub_keys
        + uncompressed_pub_keys
    ):
        with pytest.raises(ValueError):
            int_from_prvkey(not_a_prv_key)
        with pytest.raises(ValueError):
            prvkeyinfo_from_prvkey(not_a_prv_key)
Esempio n. 2
0
    def test_int_from_prvkey(self):

        # BIP32
        xprv = (
            "xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiC"
            "hkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi").encode()
        xprv_str = xprv.decode("ascii")
        xprv_dict = bip32.deserialize(xprv)
        # WIF
        wif = wif_from_prvkey(xprv)
        wif_str = wif.decode("ascii")
        # bytes
        qbytes = xprv_dict["key"][1:]
        qhex = qbytes.hex()
        # int
        q = xprv_dict["q"]
        self.assertEqual(q, int_from_prvkey(q))
        # bytes
        self.assertEqual(q, int_from_prvkey(qbytes))
        self.assertRaises(ValueError, int_from_prvkey, b"\x00" + qbytes)
        self.assertEqual(q, int_from_prvkey(qhex))
        self.assertEqual(q, int_from_prvkey(" " + qhex + " "))
        self.assertRaises(ValueError, int_from_prvkey, qhex + "00")
        # WIF
        self.assertEqual(q, int_from_prvkey(wif))
        self.assertRaises(ValueError, int_from_prvkey, wif + b"\x00")
        self.assertEqual(q, int_from_prvkey(wif_str))
        self.assertEqual(q, int_from_prvkey(" " + wif_str + " "))
        # BIP32
        self.assertEqual(q, int_from_prvkey(xprv))
        self.assertRaises(ValueError, int_from_prvkey, xprv + b"\x00")
        self.assertEqual(q, int_from_prvkey(xprv_str))
        self.assertEqual(q, int_from_prvkey(" " + xprv_str + " "))
        self.assertEqual(q, int_from_prvkey(xprv_dict))

        # wrong private key int
        q = ec.n
        self.assertRaises(ValueError, int_from_prvkey, q)
        # bytes
        qbytes = q.to_bytes(32, byteorder="big")
        qhex = qbytes.hex()
        self.assertRaises(ValueError, int_from_prvkey, qbytes)
        self.assertRaises(ValueError, int_from_prvkey, qhex)
        # WIF
        t = b"\x80" + qbytes + b"\x01"
        wif = b58encode(t)
        wif_str = wif.decode("ascii")
        self.assertRaises(ValueError, int_from_prvkey, wif)
        self.assertRaises(ValueError, int_from_prvkey, wif_str)
        # BIP32
        t = xprv_dict["version"]
        t += xprv_dict["depth"].to_bytes(1, "big")
        t += xprv_dict["parent_fingerprint"]
        t += xprv_dict["index"]
        t += xprv_dict["chain_code"]
        t += b"\x00" + qbytes
        xprv = b58encode(t, 78)
        xprv_str = xprv.decode("ascii")
        self.assertRaises(ValueError, int_from_prvkey, xprv)
        self.assertRaises(ValueError, int_from_prvkey, xprv_str)

        # wrong private key int
        q = 0
        self.assertRaises(ValueError, int_from_prvkey, q)
        # bytes
        qbytes = q.to_bytes(32, byteorder="big")
        qhex = qbytes.hex()
        self.assertRaises(ValueError, int_from_prvkey, qbytes)
        self.assertRaises(ValueError, int_from_prvkey, qhex)
        # WIF
        t = b"\x80" + qbytes + b"\x01"
        wif = b58encode(t)
        wif_str = wif.decode("ascii")
        self.assertRaises(ValueError, int_from_prvkey, wif)
        self.assertRaises(ValueError, int_from_prvkey, wif_str)
        # BIP32
        t = xprv_dict["version"]
        t += xprv_dict["depth"].to_bytes(1, "big")
        t += xprv_dict["parent_fingerprint"]
        t += xprv_dict["index"]
        t += xprv_dict["chain_code"]
        t += b"\x00" + qbytes
        xprv = b58encode(t, 78)
        xprv_str = xprv.decode("ascii")
        self.assertRaises(ValueError, int_from_prvkey, xprv)
        self.assertRaises(ValueError, int_from_prvkey, xprv_str)

        # pub key
        xpub = (
            "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2g"
            "Z29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8").encode()
        self.assertRaises(ValueError, int_from_prvkey, xpub)
Esempio n. 3
0
    def test_int_from_prvkey(self):

        # BIP32
        xprv = b"xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi"
        xprv_str = xprv.decode('ascii')
        xprv_dict = bip32.deserialize(xprv)
        # WIF
        wif = wif_from_prvkey(xprv)
        wif_str = wif.decode('ascii')
        # bytes
        qbytes = xprv_dict['key'][1:]
        qhex = qbytes.hex()
        # int
        q = xprv_dict['q']
        self.assertEqual(q, int_from_prvkey(q))
        # bytes
        self.assertEqual(q, int_from_prvkey(qbytes))
        self.assertRaises(ValueError, int_from_prvkey, b'\x00' + qbytes)
        self.assertEqual(q, int_from_prvkey(qhex))
        self.assertEqual(q, int_from_prvkey(' ' + qhex + ' '))
        self.assertRaises(ValueError, int_from_prvkey, qhex + '00')
        # WIF
        self.assertEqual(q, int_from_prvkey(wif))
        self.assertRaises(ValueError, int_from_prvkey, wif + b'\x00')
        self.assertEqual(q, int_from_prvkey(wif_str))
        self.assertEqual(q, int_from_prvkey(' ' + wif_str + ' '))
        # BIP32
        self.assertEqual(q, int_from_prvkey(xprv))
        self.assertRaises(ValueError, int_from_prvkey, xprv + b'\x00')
        self.assertEqual(q, int_from_prvkey(xprv_str))
        self.assertEqual(q, int_from_prvkey(' ' + xprv_str + ' '))
        self.assertEqual(q, int_from_prvkey(xprv_dict))

        # wrong private key int
        q = ec.n
        self.assertRaises(ValueError, int_from_prvkey, q)
        # bytes
        qbytes = q.to_bytes(32, byteorder='big')
        qhex = qbytes.hex()
        self.assertRaises(ValueError, int_from_prvkey, qbytes)
        self.assertRaises(ValueError, int_from_prvkey, qhex)
        # WIF
        t = b'\x80' + qbytes + b'\x01'
        wif = b58encode(t)
        wif_str = wif.decode('ascii')
        self.assertRaises(ValueError, int_from_prvkey, wif)
        self.assertRaises(ValueError, int_from_prvkey, wif_str)
        # BIP32
        t = xprv_dict['version']
        t += xprv_dict['depth'].to_bytes(1, 'big')
        t += xprv_dict['parent_fingerprint']
        t += xprv_dict['index']
        t += xprv_dict['chain_code']
        t += b'\x00' + qbytes
        xprv = b58encode(t)
        xprv_str = xprv.decode('ascii')
        self.assertRaises(ValueError, int_from_prvkey, xprv)
        self.assertRaises(ValueError, int_from_prvkey, xprv_str)

        # wrong private key int
        q = 0
        self.assertRaises(ValueError, int_from_prvkey, q)
        # bytes
        qbytes = q.to_bytes(32, byteorder='big')
        qhex = qbytes.hex()
        self.assertRaises(ValueError, int_from_prvkey, qbytes)
        self.assertRaises(ValueError, int_from_prvkey, qhex)
        # WIF
        t = b'\x80' + qbytes + b'\x01'
        wif = b58encode(t)
        wif_str = wif.decode('ascii')
        self.assertRaises(ValueError, int_from_prvkey, wif)
        self.assertRaises(ValueError, int_from_prvkey, wif_str)
        # BIP32
        t = xprv_dict['version']
        t += xprv_dict['depth'].to_bytes(1, 'big')
        t += xprv_dict['parent_fingerprint']
        t += xprv_dict['index']
        t += xprv_dict['chain_code']
        t += b'\x00' + qbytes
        xprv = b58encode(t)
        xprv_str = xprv.decode('ascii')
        self.assertRaises(ValueError, int_from_prvkey, xprv)
        self.assertRaises(ValueError, int_from_prvkey, xprv_str)

        # pub key
        xpub = b'xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8'
        self.assertRaises(ValueError, int_from_prvkey, xpub)