* make tests generic
* restore serialization test; remove Debug bound by using debugless-unwrap
* fix spacings in Cargo.toml
* Add PartialEq bound to Ciphersuite and Group; remove it from functions
Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
* add VerifySignature method to Ciphersuite with default implementation
* VerifySignature -> verify_signature; fix comment
* add comment to verify_signature about batch verification
* fix batch support after rebase
* derive Eq when possible and disable clippy::derive_partial_eq_without_eq which is emitting false positives
* Make verify_prehashed() an associated method of the generic VerifyingKey
Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
* use Identifier instead of index
* remove pub(crate) from the Identifier index
* A comment
* Whitespace for readability
* check for zero in Identifier::to_scalar()
Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
* Clippy, linting, check rustdoc, etc
* Ignore frost-redjubjub in the workspace for now
* Make rustfmt happy
* Clippy
* Appease Clippy
* Comment out bench for now
* Support naive batch verification
* Generic batch verification compiles, but the batch verify test in core fails 😭
* The 'z' in old impl is now 'blind', as we call the response 'z' in our signatures
Co-authored-by: Conrado Gouvea <conradoplg@gmail.com>
* Do the last scalar mul by the Ciphersuite::Group::cofactor() with the check
* Make VerifyingKey::verify_prehashed() pub(crate)
Co-authored-by: Conrado Gouvea <conradoplg@gmail.com>
* add commit(), use it instead of preprocess()
* use a single scalarmul in compute_group_commitment per v5 spec
* add nonce_generate() from the spec and use it
* remove Order() from Group trait since it's not used
* style: carriage return
* use Secret instead of KeyPackage in some methods
* change commit to take explicit params and not return vectors
* removed unused import
Co-authored-by: Conrado Gouvea <conradoplg@gmail.com>
* add support for P-256 curve
* use a fixed-size array for P_256 point encoding (instead of )
* Apply suggestions from code review
Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
* frost-p256: remove direct elliptic_curve dependency; use the one from p256
* fix comment in invert()
* frost-p256: rename shorthand alias
* Apply suggestions from code review
Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
* improve imports, docs, use expect instead of unwrap
Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
* Remove AsMut bound which is not needed
* Use the generator point to get the encoded point size, since the identity in P-256 is just a single byte
* Remove FromHex bound
* Remove Default bound from Group
* Start port to frost-core
* Fix Signature from_bytes, frost-ristretto255 README / src/lib.rs doc test
* Move frost-ristretto255 test vector tests to that crate
* Uncomment proptest checks to exercise signature and verifying key (de)serialization
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* frost-core Cargo.toml
* Ciphersuite trait
* Signature trait
* Copy stub ristretto impl for now
* First stab at making signing and verifying generic over frost-core::Ciphersuite
* Update signing
* Nice const generics and stuff for frost-core::Ciphersuite
* Have to implement traits for the pre-parameterized types inside the module
* Ciphersuite::Group::Field
* Make frost/keys generic over Ciphersuite
* frost-core genericization mostly done, modulo batch
* Move tests around
* Remove internal test module
* Lots of tidies, including type refinement of Scalar, Challenge
* More genericization and tidy'ing
* Test vectors working against Ristretto impl in the frost-core integration tests
* clippy fix
* Fix generic params for full frost example integration test using ristretto
* Genericize proptests
* clippy --fix
* Doc comment identifier module
* In-flight batch and multiscalar mul
* Stop using Scalar::from_hash() as it expects impl Digest which sha2 0.10+ isn't doing anymore
* run cargo udeps
* Update frost-core/src/frost/round1.rs
* Update frost-core/src/frost.rs
* Update frost-core/src/frost/keys.rs
Generate the group commitment from all round one signing commitments as part
of aggregate(). Only re-derive a commitment share from the signing share
as part of signing share verification, just before aggregate.
* WIP
* Using H1/H2/H3 per spec, the verification still fails with Verificationkey
* Use FROST spec hashes, update all challenge generations to be DRY
Make clippy happy, etc
* DRY up generate_challenge
Also rename all methods to be generate_ instead of gen_