Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
1from Crypt import CryptBitcoin
2
3
4class TestCryptBitcoin:
5 def testSign(self, crypt_bitcoin_lib):
6 privatekey = "5K9S6dVpufGnroRgFrT6wsKiz2mJRYsC73eWDmajaHserAp3F1C"
7 privatekey_bad = "5Jbm9rrusXyApAoM8YoM4Rja337zMMoBUMRJ1uijiguU2aZRnwC"
8
9 # Get address by privatekey
10 address = crypt_bitcoin_lib.privatekeyToAddress(privatekey)
11 assert address == "1MpDMxFeDUkiHohxx9tbGLeEGEuR4ZNsJz"
12
13 address_bad = crypt_bitcoin_lib.privatekeyToAddress(privatekey_bad)
14 assert address_bad != "1MpDMxFeDUkiHohxx9tbGLeEGEuR4ZNsJz"
15
16 # Text signing
17 data_len_list = list(range(0, 300, 10))
18 data_len_list += [1024, 2048, 1024 * 128, 1024 * 1024, 1024 * 2048]
19 for data_len in data_len_list:
20 data = data_len * "!"
21 sign = crypt_bitcoin_lib.sign(data, privatekey)
22
23 assert crypt_bitcoin_lib.verify(data, address, sign)
24 assert not crypt_bitcoin_lib.verify("invalid" + data, address, sign)
25
26 # Signed by bad privatekey
27 sign_bad = crypt_bitcoin_lib.sign("hello", privatekey_bad)
28 assert not crypt_bitcoin_lib.verify("hello", address, sign_bad)
29
30 def testVerify(self, crypt_bitcoin_lib):
31 sign_uncompressed = b'G6YkcFTuwKMVMHI2yycGQIFGbCZVNsZEZvSlOhKpHUt/BlADY94egmDAWdlrbbFrP9wH4aKcEfbLO8sa6f63VU0='
32 assert crypt_bitcoin_lib.verify("1NQUem2M4cAqWua6BVFBADtcSP55P4QobM#web/gitcenter", "19Bir5zRm1yo4pw9uuxQL8xwf9b7jqMpR", sign_uncompressed)
33
34 sign_compressed = b'H6YkcFTuwKMVMHI2yycGQIFGbCZVNsZEZvSlOhKpHUt/BlADY94egmDAWdlrbbFrP9wH4aKcEfbLO8sa6f63VU0='
35 assert crypt_bitcoin_lib.verify("1NQUem2M4cAqWua6BVFBADtcSP55P4QobM#web/gitcenter", "1KH5BdNnqxh2KRWMMT8wUXzUgz4vVQ4S8p", sign_compressed)
36
37 def testNewPrivatekey(self):
38 assert CryptBitcoin.newPrivatekey() != CryptBitcoin.newPrivatekey()
39 assert CryptBitcoin.privatekeyToAddress(CryptBitcoin.newPrivatekey())
40
41 def testNewSeed(self):
42 assert CryptBitcoin.newSeed() != CryptBitcoin.newSeed()
43 assert CryptBitcoin.privatekeyToAddress(
44 CryptBitcoin.hdPrivatekey(CryptBitcoin.newSeed(), 0)
45 )
46 assert CryptBitcoin.privatekeyToAddress(
47 CryptBitcoin.hdPrivatekey(CryptBitcoin.newSeed(), 2**256)
48 )