Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

secp256k1/ecdsa: Add compact signature tests. #2915

Merged
merged 2 commits into from
Apr 7, 2022

Conversation

davecgh
Copy link
Member

@davecgh davecgh commented Apr 4, 2022

This requires #2914.

This adds tests for compact signature generation and associated public key recovery for both the positive and negative paths and reworks the tests that deal with signing random messages with random private keys and recovering the associated public key to make them more consistent with modern practices in the code as well as to expand the testing methodology to include additional assurances.

The following is a high-level overview of the changes:

  • Add tests to ensure test data that was independently verified with the Sage computer algebra system produces the expected results
  • Add tests which are specifically designed to exercise all of the recovery failure paths
  • Adds a test that uses random data:
    • Signs random representative hashes instead of a fixed non-hashed message
    • Signs, recovers, and verifies both the compressed and uncompressed public key variants for each iteration
    • Ensures mutating a random bit in the good signature results in failure to recover the original public key
    • Ensures mutating a random bit in the message hash that was originally signed results in failure to recover the original public key from the good signature

@davecgh davecgh added this to the 1.8.0 milestone Apr 4, 2022
This adds tests for compact signature generation and associated public
key recovery for both the positive and negative paths.

The following is a high-level overview of the changes:

- Add tests to ensure test data that was independently verified with the
  Sage computer algebra system produces the expected results
- Add tests which are specifically designed to exercise all of the
  recovery failure paths
This reworks the tests that deal with signing random messages with
random private keys and recovering the associated public key to make
them more consistent with modern practices in the code as well as to
expand the testing methodology to include additional assurances.

Specifically, the relevant test now:

- Signs random representative hashes instead of a fixed non-hashed message
- Signs, recovers, and verifies both the compressed and uncompressed
  public key variants for each iteration
- Ensures mutating a random bit in the good signature results in failure
  to recover the original public key
- Ensures mutating a random bit in the message hash that was originally
  signed results in failure to recover the original public key from the
  good signature
@davecgh davecgh force-pushed the secp256k1_compact_sig_tests branch from daaaeba to b2be01a Compare April 7, 2022 16:08
@davecgh davecgh merged commit b2be01a into decred:master Apr 7, 2022
@davecgh davecgh deleted the secp256k1_compact_sig_tests branch April 7, 2022 16:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants