@ -5,6 +5,7 @@
""" Test RPC commands for signing and verifying messages. """
""" Test RPC commands for signing and verifying messages. """
from test_framework . test_framework import BitcoinTestFramework
from test_framework . test_framework import BitcoinTestFramework
from test_framework . util import assert_equal
class SignMessagesTest ( BitcoinTestFramework ) :
class SignMessagesTest ( BitcoinTestFramework ) :
def set_test_params ( self ) :
def set_test_params ( self ) :
@ -14,20 +15,24 @@ class SignMessagesTest(BitcoinTestFramework):
def run_test ( self ) :
def run_test ( self ) :
message = ' This is just a test message '
message = ' This is just a test message '
# Test the signing with a privkey
self . log . info ( ' test signing with priv_key ' )
privK ey = ' cUeKHd5orzT3mz8P9pxyREHfsWtVfgsfDjiZZBcjUBAaGk1BTj7N '
priv_k ey = ' cUeKHd5orzT3mz8P9pxyREHfsWtVfgsfDjiZZBcjUBAaGk1BTj7N '
address = ' mpLQjfK79b7CCV4VMJWEWAj5Mpx8Up5zxB '
address = ' mpLQjfK79b7CCV4VMJWEWAj5Mpx8Up5zxB '
signature = self . nodes [ 0 ] . signmessagewithprivkey ( privKey , message )
expected_ signature = ' INbVnW4e6PeRmsv2Qgu8NuopvrVjkcxob+sX8OcZG0SALhWybUjzMLPdAsXI46YZGb0KQTRii+wWIQzRpG/U+S0= '
signature = self . nodes [ 0 ] . signmessagewithprivkey ( priv_key , message )
# Verify the message
assert_equal ( expected_signature , signature )
assert ( self . nodes [ 0 ] . verifymessage ( address , signature , message ) )
assert ( self . nodes [ 0 ] . verifymessage ( address , signature , message ) )
# Test the signing with an address with wallet
self . log . info ( ' test signing with an address with wallet ' )
address = self . nodes [ 0 ] . getnewaddress ( )
address = self . nodes [ 0 ] . getnewaddress ( )
signature = self . nodes [ 0 ] . signmessage ( address , message )
signature = self . nodes [ 0 ] . signmessage ( address , message )
# Verify the message
assert ( self . nodes [ 0 ] . verifymessage ( address , signature , message ) )
assert ( self . nodes [ 0 ] . verifymessage ( address , signature , message ) )
self . log . info ( ' test verifying with another address should not work ' )
other_address = self . nodes [ 0 ] . getnewaddress ( )
other_signature = self . nodes [ 0 ] . signmessage ( other_address , message )
assert ( not self . nodes [ 0 ] . verifymessage ( other_address , signature , message ) )
assert ( not self . nodes [ 0 ] . verifymessage ( address , other_signature , message ) )
if __name__ == ' __main__ ' :
if __name__ == ' __main__ ' :
SignMessagesTest ( ) . main ( )
SignMessagesTest ( ) . main ( )