コード例 #1
0
    def test_msg_signing(self):
        msg1 = b'Chancellor on brink of second bailout for banks'
        msg2 = b'Electrum'

        def sign_message_with_wif_privkey(wif_privkey, msg):
            key = PrivateKey.from_WIF(wif_privkey)
            return key.sign_message(msg)

        sig1 = sign_message_with_wif_privkey(
            'L1TnU2zbNaAqMoVh65Cyvmcjzbrj41Gs9iTLcWbpJCMynXuap6UN', msg1)
        addr1 = '15hETetDmcXm1mM4sEf7U2KXC9hDHFMSzz'
        sig2 = sign_message_with_wif_privkey(
            '5Hxn5C4SQuiV6e62A1MtZmbSeQyrLFhu5uYks62pU5VBUygK2KD', msg2)
        addr2 = '1GPHVTY8UD9my6jyP4tb2TYJwUbDetyNC6'

        sig1_b64 = base64.b64encode(sig1)
        sig2_b64 = base64.b64encode(sig2)

        self.assertEqual(sig1_b64, b'H/9jMOnj4MFbH3d7t4yCQ9i7DgZU/VZ278w3+ySv2F4yIsdqjsc5ng3kmN8OZAThgyfCZOQxZCWza9V5XzlVY0Y=')
        self.assertEqual(sig2_b64, b'G84dmJ8TKIDKMT9qBRhpX2sNmR0y5t+POcYnFFJCs66lJmAs3T8A6Sbpx7KA6yTQ9djQMabwQXRrDomOkIKGn18=')

        self.assertTrue(PublicKey.verify_message_and_address(sig1, msg1, addr1))
        self.assertTrue(PublicKey.verify_message_and_address(sig2, msg2, addr2))

        self.assertFalse(PublicKey.verify_message_and_address(b'wrong', msg1, addr1))
        self.assertFalse(PublicKey.verify_message_and_address(sig2, msg1, addr1))
コード例 #2
0
ファイル: __init__.py プロジェクト: CallAndGus/electrumsv
def get_identified_release_signers(entry):
    signature_addresses = [
        ("rt121212121", "1Bu6ABvLAXn1ARFo1gjq6sogpajGbp6iK6"),
        ("kyuupichan", "1BH8E3TkuJMCcH5WGD11kVweKZuhh6vb7V"),
    ]

    release_version = entry['version']
    release_date = entry['date']
    release_signatures = entry.get('signatures', [])

    message = release_version + release_date
    signed_names = set()
    for signature in release_signatures:
        for signer_name, signer_address in signature_addresses:
            if signer_name not in signed_names:
                # They are mainnet addresses
                if PublicKey.verify_message_and_address(signature, message, signer_address):
                    signed_names.add(signer_name)
                    break
    return signed_names
コード例 #3
0
ファイル: commands.py プロジェクト: opReturn0/electrumsv
 def verifymessage(self, address, signature, message):
     """Verify a signature."""
     return PublicKey.verify_message_and_address(signature, message,
                                                 address)