Beispiel #1
0
 def test_shared_secret(self):
     p = PrivateKey(bytes(range(32)))
     p2 = PrivateKey(bytes(range(1, 33)))
     msg = b'BitcoinSV'
     P = p.shared_secret(p2.public_key, msg)
     assert P.to_hex() == '034339a901d8526c4d733c8ea7c861f1a6324f37f6b86f838725820e0c5fc19570'
     assert P == p.shared_secret(p2.public_key, msg, sha256)
     assert P == p.shared_secret(p2.public_key, sha256(msg), hasher=None)
Beispiel #2
0
    def test_verify_recoverable_signature(self):
        priv = PrivateKey.from_random()
        message = b'BitcoinSV'
        sig = priv.sign_recoverable(message)

        P = priv.public_key
        assert P.verify_recoverable_signature(sig, message)
        assert P.verify_recoverable_signature(sig, message, sha256)
        assert P.verify_recoverable_signature(sig, sha256(message), None)
        assert not P.verify_recoverable_signature(sig, message[:-1])
Beispiel #3
0
 def test_sign_recoverable(self):
     p = PrivateKey(bytes(range(32)))
     msg = b'BitcoinSV'
     result = p.sign_recoverable(msg)
     assert result.hex() == (
         '914038d25ac6d195fa8e9b25c6c22a1cb711fde4a11fe305175b52fc77a12040'
         '2575b92f63cc6b08893cbd6791d41259129c7d9d5162258c19836976871f63bd01'
     )
     assert p.sign_recoverable(msg, hasher=sha256) == result
     assert p.sign_recoverable(sha256(msg), hasher=None) == result
Beispiel #4
0
 def test_str(self):
     p = PrivateKey.from_random()
     assert str(p) == sha256(p.to_bytes()).hex()
Beispiel #5
0
 def bad_hasher(data):
     return sha256(data)[:31]
Beispiel #6
0
 def test_from_minikey(self, minikey):
     p = PrivateKey.from_minikey(minikey)
     assert p._secret == sha256(minikey.encode())
     assert p.network() is Bitcoin
     assert not p.is_compressed()