RPCs that accept address parameters usually return the intended error code RPC_INVALID_ADDRESS_OR_KEY (-5) if a passed address is invalid. The two exceptions to the rule are signmessage and verifymessage, which return RPC_TYPE_ERROR (-3) in this case instead. Oddly enough verifymessage returns RPC_INVALID_ADDRESS_OR_KEY when the signature was malformed, where RPC_TYPE_ERROR would be more approriate.
This PR fixes these inaccuracies and as well adds tests to rpc_signmessage.py that check the parameter validity and error codes for the related RPCs signmessagewithprivkey, signmessage and verifymessage.
master branch:
$ ./bitcoin-cli signmessage invalid_addr message
error code: -3
error message:
Invalid address
$ ./bitcoin-cli verifymessage invalid_addr dummy_sig message
error code: -3
error message:
Invalid address
$ ./bitcoin-cli verifymessage 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX invalid_sig message
error code: -5
error message:
Malformed base64 encoding
PR branch:
$ ./bitcoin-cli signmessage invalid_addr message
error code: -5
error message:
Invalid address
$ ./bitcoin-cli verifymessage invalid_addr dummy_sig message
error code: -5
error message:
Invalid address
$ ./bitcoin-cli verifymessage 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX invalid_sig message
error code: -3
error message:
Malformed base64 encoding