Ejemplo n.º 1
0
 def test_decrypt_message(self):
     password = '******'
     enc_msg = ('QklFMQNkonLnVmRMF3dl+P0rHSbM4lvDPmnE2CFcD+98gGsOe6qtKtmVbCg4'
                '9bxmT6vfmzl7udrvT81wH1Ri7wZItndtLiNHii6FBNVzoSV/1ZqN3w==')
     d = Imported_KeyStore({})
     pubkey = d.import_privkey("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ", password)
     dec_msg = d.decrypt_message(pubkey, enc_msg, password)
     assert dec_msg == b'BitcoinSV'
Ejemplo n.º 2
0
 def test_sign_message(self):
     password = '******'
     message = 'BitcoinSV'
     d = Imported_KeyStore({})
     pubkey = d.import_privkey("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ", password)
     msg_sig = d.sign_message(pubkey, message, password)
     assert msg_sig.hex() == (
         '1c26a18cb236e54bbe7e3db56639ef5cbefcf5a2e28850cdd304970832f84031'
         'fc073bed1a151f0510e5558a22d23f16ed8032a1b74ffcac05227c053e1a1d8af5'
     )
Ejemplo n.º 3
0
 def test_update_password(self):
     keystore = Imported_KeyStore({'keypairs': keypairs_dict})
     keystore.update_password('password', 'new password')
     pubkey = list(keystore.keypairs.keys())[0]
     assert keystore.export_private_key(pubkey, 'new password') == (
         'KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617')
     keystore.update_password('new password', '')
     assert keystore.export_private_key(pubkey, None) == (
         'KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617')
     with pytest.raises(InvalidPassword):
         keystore.export_private_key(pubkey, '')
Ejemplo n.º 4
0
    def test_decrypt_message(self):
        password = '******'
        message = b'BitcoinSV'
        prvkey_text = "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ"
        enc_prvkey_text = pw_encode(prvkey_text, password)
        public_key = PrivateKey.from_text(prvkey_text).public_key
        d = Imported_KeyStore({})
        d.import_private_key(1, public_key, enc_prvkey_text)

        enc_msg = ('QklFMQNkonLnVmRMF3dl+P0rHSbM4lvDPmnE2CFcD+98gGsOe6qtKtmVbCg4'
                   '9bxmT6vfmzl7udrvT81wH1Ri7wZItndtLiNHii6FBNVzoSV/1ZqN3w==')
        decrypted_message = d.decrypt_message(public_key, enc_msg, password)
        assert decrypted_message == message
Ejemplo n.º 5
0
    def test_sign_message(self):
        password = '******'
        message = 'BitcoinSV'
        prvkey_text = "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ"
        enc_prvkey_text = pw_encode(prvkey_text, password)
        public_key = PrivateKey.from_text(prvkey_text).public_key
        d = Imported_KeyStore({})
        d.import_private_key(1, public_key, enc_prvkey_text)

        msg_sig = d.sign_message(public_key, message, password)
        assert msg_sig.hex() == (
            '1c26a18cb236e54bbe7e3db56639ef5cbefcf5a2e28850cdd304970832f84031'
            'fc073bed1a151f0510e5558a22d23f16ed8032a1b74ffcac05227c053e1a1d8af5'
        )
Ejemplo n.º 6
0
 def test_update_password(self):
     keystore = Imported_KeyStore()
     keystore._keypairs = { PublicKey.from_hex(a): b for a, b in keypairs_dict.items() }
     keystore.update_password('new password', 'password')
     pubkey = list(keystore._keypairs.keys())[0]
     assert keystore.export_private_key(pubkey, 'new password') == (
         'KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617')
     with pytest.raises(AssertionError):
         keystore.update_password('', 'new password')
Ejemplo n.º 7
0
 def test_import_privkey(self, WIF, pk_string):
     enc_prvkey_text = pw_encode(WIF, "password")
     public_key = PrivateKey.from_text(WIF).public_key
     d = Imported_KeyStore({})
     d.import_private_key(1, public_key, enc_prvkey_text)
     assert d.get_public_key_for_id(1) == public_key
     assert WIF == d.export_private_key(public_key, "password")
Ejemplo n.º 8
0
 def test_import_privkey_bad(self, WIF):
     d = Imported_KeyStore({})
     with pytest.raises(Exception):
         d.import_privkey(WIF, b'')
Ejemplo n.º 9
0
 def test_import_privkey(self, WIF, pk_string):
     d = Imported_KeyStore({})
     pubkey = d.import_privkey(WIF, b'')
     assert pubkey.to_hex() == pk_string
Ejemplo n.º 10
0
        assert keystore.get_pubkey_derivation(
            'fe18863ac1de668decc6406880c4c8d9a74e9986a5e8d9f2be262ac4af8a68863b37d'
            'f75ac48afcbb68bdd6a00f58a648bda9e5eb5e73bd51ef130a6e72dc698d001000301'
        ) is None
        assert keystore.get_pubkey_derivation("ff") is None


# Password b'password'; one minikey, one WIF
keypairs_dict = {
    '02d0de0aaeaefad02b8bdc8a01a1b8b11c696bd3d66a2c5f10780d95b7df42645c':
    'tfxSNL1G2aHpNCELs8aGnmB0SvlRHgZ3tXlLmO/XoVPElTo4/Pr+Gx+icCa4Dpjd+HtfhA+5pChRumaQ5QFbzFItC0uQ+ZVtRhr/sRxakrE=',
    '04e7dd15b4271f8308ff52ad3d3e472b652e78a2c5bc6ed10250a543d28c0128894ae863d086488e6773c4589be93a1793f685dd3f1e8a1f1b390b23470f7d1095':
    'NithPh1OqOiALYK0TP4wBdZZOOWVF+wJwBakvlrH7mpho65PVR3DMuC3WAdmyMJ2'
}
imported_keystore = Imported_KeyStore({
    'keypairs': keypairs_dict,
})


class TestImported_KeyStore:
    @pytest.mark.parametrize("WIF,pk_string", (
        ("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ",
         "04d0de0aaeaefad02b8bdc8a01a1b8b11c696bd3d66a2c5f10780d95b7df42645cd"
         "85228a6fb29940e858e7e55842ae2bd115d1ed7cc0e82d934e929c97648cb0a"),
        ("KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617",
         "02d0de0aaeaefad02b8bdc8a01a1b8b11c696bd3d66a2c5f10780d95b7df42645c"),
        ("SZEfg4eYxCJoqzumUqP34g",
         "04e7dd15b4271f8308ff52ad3d3e472b652e78a2c5bc6ed10250a543d28c0128894ae86"
         "3d086488e6773c4589be93a1793f685dd3f1e8a1f1b390b23470f7d1095"),
        ("S6c56bnXQiBjk9mqSYE7ykVQ7NzrRy",
         "04fb4fd5872ff2f8a46c2d496383fccc503c0260ef126ffbac61407f6bd384e5d"
Ejemplo n.º 11
0
            'fe08863ac1de668decc6406880c4c8d9a74e9986a5e8d9f2be262ac4af8a68863b37d'
            'f75ac48afcbb68bdd6a00f58a648bda9e5eb5e73bd51ef130a6e72dc698d001000301'
        ))
        with pytest.raises(ValueError):
            keystore.is_signature_candidate(XPublicKey.from_hex(
                'fe18863ac1de668decc6406880c4c8d9a74e9986a5e8d9f2be262ac4af8a68863b37d'
                'f75ac48afcbb68bdd6a00f58a648bda9e5eb5e73bd51ef130a6e72dc698d001000301'
            ))


# Password b'password'; one minikey, one WIF
keypairs_dict = {
    '02d0de0aaeaefad02b8bdc8a01a1b8b11c696bd3d66a2c5f10780d95b7df42645c': 'tfxSNL1G2aHpNCELs8aGnmB0SvlRHgZ3tXlLmO/XoVPElTo4/Pr+Gx+icCa4Dpjd+HtfhA+5pChRumaQ5QFbzFItC0uQ+ZVtRhr/sRxakrE=',
    '04e7dd15b4271f8308ff52ad3d3e472b652e78a2c5bc6ed10250a543d28c0128894ae863d086488e6773c4589be93a1793f685dd3f1e8a1f1b390b23470f7d1095': 'NithPh1OqOiALYK0TP4wBdZZOOWVF+wJwBakvlrH7mpho65PVR3DMuC3WAdmyMJ2'
}
imported_keystore = Imported_KeyStore()
imported_keystore._keypairs = { PublicKey.from_hex(a): b for a, b in keypairs_dict.items() }

class TestImported_KeyStore:

    @pytest.mark.parametrize("WIF,pk_string", (
        ("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ",
         "04d0de0aaeaefad02b8bdc8a01a1b8b11c696bd3d66a2c5f10780d95b7df42645cd"
         "85228a6fb29940e858e7e55842ae2bd115d1ed7cc0e82d934e929c97648cb0a"),
        ("KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617",
         "02d0de0aaeaefad02b8bdc8a01a1b8b11c696bd3d66a2c5f10780d95b7df42645c"),
        ("SZEfg4eYxCJoqzumUqP34g",
         "04e7dd15b4271f8308ff52ad3d3e472b652e78a2c5bc6ed10250a543d28c0128894ae86"
         "3d086488e6773c4589be93a1793f685dd3f1e8a1f1b390b23470f7d1095"
        ),
        ("S6c56bnXQiBjk9mqSYE7ykVQ7NzrRy",