Skip to content

secp256k1/ecdsa: Add compact signature tests.#2915

Merged
davecgh merged 2 commits intodecred:masterfrom
davecgh:secp256k1_compact_sig_tests
Apr 7, 2022
Merged

secp256k1/ecdsa: Add compact signature tests.#2915
davecgh merged 2 commits intodecred:masterfrom
davecgh:secp256k1_compact_sig_tests

Conversation

@davecgh
Copy link
Copy Markdown
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
davecgh added 2 commits April 7, 2022 11:07
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