bitcoin/src/wallet
Wladimir J. van der Laan 362e901a17
Merge #18466: rpc: fix invalid parameter error codes for {sign,verify}message RPCs
a5cfb40e27 doc: release note for changed {sign,verify}message error codes (Sebastian Falbesoner)
9e399b9b2d test: check parameter validity in rpc_signmessage.py (Sebastian Falbesoner)
e62f0c71f1 rpc: fix {sign,message}verify RPC errors for invalid address/signature (Sebastian Falbesoner)

Pull request description:

  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
  ```

ACKs for top commit:
  laanwj:
    Code review ACK a5cfb40e27
  meshcollider:
    utACK a5cfb40e27

Tree-SHA512: bae0c4595a2603cea66090f6033785601837b45fd853052312b3a39d8520566c581994b68f693dd247c22586c638c3b7689c849085cce548cc36b9bf0e119d2d
2021-03-01 11:45:42 +01:00
..
test
bdb.cpp
bdb.h
coincontrol.cpp
coincontrol.h
coinselection.cpp
coinselection.h
context.cpp
context.h
crypter.cpp
crypter.h
db.cpp
db.h
dump.cpp
dump.h
external_signer.cpp rpc: send: support external signer 2021-02-23 14:34:32 +01:00
external_signer.h rpc: send: support external signer 2021-02-23 14:34:32 +01:00
external_signer_scriptpubkeyman.cpp rpc: signerdisplayaddress 2021-02-23 14:34:31 +01:00
external_signer_scriptpubkeyman.h rpc: send: support external signer 2021-02-23 14:34:32 +01:00
feebumper.cpp
feebumper.h
fees.cpp
fees.h
init.cpp wallet: fix doc typo in signer option 2021-02-23 11:05:13 -08:00
interfaces.cpp rpc: add external signer RPC files 2021-02-23 14:34:30 +01:00
ismine.h
load.cpp
load.h
rpcdump.cpp wallet: listdescriptors uses normalized descriptor form 2021-02-23 08:51:01 +01:00
rpcsigner.cpp rpc: signerdisplayaddress 2021-02-23 14:34:31 +01:00
rpcsigner.h rpc: add external signer RPC files 2021-02-23 14:34:30 +01:00
rpcwallet.cpp Merge #18466: rpc: fix invalid parameter error codes for {sign,verify}message RPCs 2021-03-01 11:45:42 +01:00
rpcwallet.h
salvage.cpp
salvage.h
scriptpubkeyman.cpp rpc: send: support external signer 2021-02-23 14:34:32 +01:00
scriptpubkeyman.h wallet: ExternalSigner: add GetDescriptors method 2021-02-23 14:34:31 +01:00
sqlite.cpp
sqlite.h
wallet.cpp rpc: send: support external signer 2021-02-23 14:34:32 +01:00
wallet.h rpc: signerdisplayaddress 2021-02-23 14:34:31 +01:00
walletdb.cpp
walletdb.h
wallettool.cpp
wallettool.h
walletutil.cpp
walletutil.h wallet: add external_signer flag 2021-02-23 14:34:30 +01:00