Adding cross testing against non-openssl implementation was suggested multiple times #691 I attempted to do it in #641 but there wasn’t good consensus to add rust even to the testing suite. @gmaxwell suggested in #716 that we can use https://github.com/kmackay/micro-ecc for that.
So I integrated uECC into our tests build system and replaced the current openssl cross testing with uECC tests.
This is IMHO better for a couple of reasons:
- uECC is a simpler implementation, so this allows us to test that the different approaches don’t produce anything wrong.
- uECC has a deterministic ECDSA implementation so we also test signatures equivalence(there was a small bug there I had to fix).
- We replace an external dependency(OpenSSL) with a small vendored one, which makes things simpler.
- We could also add BIP-Schnorr impl into uECC when they get merged.
cc #736 https://github.com/bitcoin-core/secp256k1/issues/734