By the way, I am wondering whether attribute
SECP256K1_WARN_UNUSED_RESULT
should be added to functionsecp256k1_ecdsa_sign
: as (according to the documentation of this function) the nonce generation function may fail, it seems to be a good idea to force callers to check the value returned by this function. What do you think about this?
The default nonce generation function will fail only with astronomically low probability. So if you know that you have a valid secret key and you use the default nonce function (99% of the use cases), it’s okay not to check the return value.
Having said that, I think we’re not entirely consistent here… For example, the same argument would apply to secp256k1_ec_seckey_verify
(https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1.h#L632). Even secp256k1_ec_pubkey_negate
https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1.h#L650 has SECP256K1_WARN_UNUSED_RESULT
even if it’s guaranteed to return 1 according to the docs…
Maybe we should have a look at this in #783 or in a follow up PR.
Originally posted by @real-or-random in #960 (comment)
So I wonder what our (unwritten) policy for SECP256K1_WARN_UNUSED_RESULT
should be. I think we’re overdoing it in the two mentioned cases but I’m happy to hear other opinions.