From eee505a49ec516e115a9e82b1eef05c93f405476 Mon Sep 17 00:00:00 2001 From: natalie Date: Fri, 15 Sep 2023 15:53:43 +0100 Subject: [PATCH] Rename fields to match types (#539) * Rename signer_pubkeys to verifying_shares (#495) * Rename group_public to verifying_key (#495) Some naming needed to be updated in DKG as well as there was already a verifying_key which was actually a verifying_share * Update KeyPackage field from secret_share to signing_share (#495) * Update Package field from secret_share to signing_share (#495) * Update KeyPackage field from public to verifying_share (#495) * Update SecretShare field vrom value to signing_share (#495) * Remove secret function from SecretShare (#495) This is because we now can use the getter to get signing_share() without the need for an additional function * Update serde_tests with updated field names (#495) --- book/src/zcash/ywallet-demo.md | 4 +- frost-core/src/benches.rs | 4 +- frost-core/src/frost.rs | 20 ++--- frost-core/src/frost/keys.rs | 77 +++++++++---------- frost-core/src/frost/keys/dkg.rs | 49 ++++++------ frost-core/src/frost/keys/repairable.rs | 4 +- frost-core/src/frost/round2.rs | 6 +- frost-core/src/tests/ciphersuite_generic.rs | 46 +++++------ frost-core/src/tests/repairable.rs | 6 +- frost-core/src/tests/vectors.rs | 32 ++++---- frost-ed25519/README.md | 4 +- frost-ed25519/tests/helpers/samples.rs | 4 +- .../tests/helpers/vectors-big-identifier.json | 2 +- frost-ed25519/tests/helpers/vectors.json | 2 +- frost-ed25519/tests/recreation_tests.rs | 16 ++-- frost-ed25519/tests/serde_tests.rs | 52 ++++++------- frost-ed448/README.md | 4 +- frost-ed448/tests/helpers/samples.rs | 4 +- .../tests/helpers/vectors-big-identifier.json | 2 +- frost-ed448/tests/helpers/vectors.json | 2 +- frost-ed448/tests/recreation_tests.rs | 16 ++-- frost-ed448/tests/serde_tests.rs | 52 ++++++------- frost-p256/README.md | 4 +- frost-p256/tests/helpers/samples.rs | 4 +- .../tests/helpers/vectors-big-identifier.json | 2 +- frost-p256/tests/helpers/vectors.json | 2 +- frost-p256/tests/recreation_tests.rs | 16 ++-- frost-p256/tests/serde_tests.rs | 52 ++++++------- frost-rerandomized/src/lib.rs | 14 ++-- frost-rerandomized/src/tests.rs | 8 +- frost-ristretto255/README.md | 4 +- frost-ristretto255/tests/helpers/samples.rs | 4 +- .../tests/helpers/vectors-big-identifier.json | 2 +- frost-ristretto255/tests/helpers/vectors.json | 2 +- frost-ristretto255/tests/recreation_tests.rs | 16 ++-- frost-ristretto255/tests/serde_tests.rs | 52 ++++++------- frost-secp256k1/README.md | 4 +- frost-secp256k1/tests/helpers/samples.rs | 4 +- .../tests/helpers/vectors-big-identifier.json | 2 +- frost-secp256k1/tests/helpers/vectors.json | 2 +- frost-secp256k1/tests/recreation_tests.rs | 16 ++-- frost-secp256k1/tests/serde_tests.rs | 52 ++++++------- 42 files changed, 334 insertions(+), 336 deletions(-) diff --git a/book/src/zcash/ywallet-demo.md b/book/src/zcash/ywallet-demo.md index 7d1db2c..af33bca 100644 --- a/book/src/zcash/ywallet-demo.md +++ b/book/src/zcash/ywallet-demo.md @@ -82,13 +82,13 @@ take a bit to compile. It will show a bunch of warnings which is normal. cargo build --release --bin sign --features dotenv -- -g ``` -When prompted for the `ak`, paste the `group_public` value that was printed in +When prompted for the `ak`, paste the `verifying_key` value that was printed in the previous part, inside the Public Key Package. For example, in the following package ``` Public key package: -{"signer_pubkeys": ...snip... ,"group_public":"d2bf40ca860fb97e9d6d15d7d25e4f17d2e8ba5dd7069188cbf30b023910a71b","ciphersuite":"FROST(Pallas, BLAKE2b-512)"} +{"verifying_shares": ...snip... ,"verifying_key":"d2bf40ca860fb97e9d6d15d7d25e4f17d2e8ba5dd7069188cbf30b023910a71b","ciphersuite":"FROST(Pallas, BLAKE2b-512)"} ``` you would need to use diff --git a/frost-core/src/benches.rs b/frost-core/src/benches.rs index 2a75eae..a0b28db 100644 --- a/frost-core/src/benches.rs +++ b/frost-core/src/benches.rs @@ -130,7 +130,7 @@ pub fn bench_sign( key_packages .get(&participant_identifier) .unwrap() - .secret_share(), + .signing_share(), rng, ); }) @@ -146,7 +146,7 @@ pub fn bench_sign( key_packages .get(&participant_identifier) .unwrap() - .secret_share(), + .signing_share(), rng, ); nonces.insert(participant_identifier, nonce); diff --git a/frost-core/src/frost.rs b/frost-core/src/frost.rs index 1909c7d..137b549 100644 --- a/frost-core/src/frost.rs +++ b/frost-core/src/frost.rs @@ -100,13 +100,13 @@ where #[cfg_attr(docsrs, doc(cfg(feature = "internals")))] pub(crate) fn compute_binding_factor_list( signing_package: &SigningPackage, - group_public: &VerifyingKey, + verifying_key: &VerifyingKey, additional_prefix: &[u8], ) -> BindingFactorList where C: Ciphersuite, { - let preimages = signing_package.binding_factor_preimages(group_public, additional_prefix); + let preimages = signing_package.binding_factor_preimages(verifying_key, additional_prefix); BindingFactorList( preimages @@ -274,7 +274,7 @@ where #[cfg_attr(docsrs, doc(cfg(feature = "internals")))] pub fn binding_factor_preimages( &self, - group_public: &VerifyingKey, + verifying_key: &VerifyingKey, additional_prefix: &[u8], ) -> Vec<(Identifier, Vec)> { let mut binding_factor_input_prefix = vec![]; @@ -282,7 +282,7 @@ where // The length of a serialized verifying key of the same cipersuite does // not change between runs of the protocol, so we don't need to hash to // get a fixed length. - binding_factor_input_prefix.extend_from_slice(group_public.serialize().as_ref()); + binding_factor_input_prefix.extend_from_slice(verifying_key.serialize().as_ref()); // The message is hashed with H4 to force the variable-length message // into a fixed-length byte string, same for hashing the variable-sized @@ -422,14 +422,14 @@ where C: Ciphersuite, { // Check if signing_package.signing_commitments and signature_shares have - // the same set of identifiers, and if they are all in pubkeys.signer_pubkeys. + // the same set of identifiers, and if they are all in pubkeys.verifying_shares. if signing_package.signing_commitments().len() != signature_shares.len() { return Err(Error::UnknownIdentifier); } if !signing_package .signing_commitments() .keys() - .all(|id| signature_shares.contains_key(id) && pubkeys.signer_pubkeys().contains_key(id)) + .all(|id| signature_shares.contains_key(id) && pubkeys.verifying_shares().contains_key(id)) { return Err(Error::UnknownIdentifier); } @@ -437,7 +437,7 @@ where // Encodes the signing commitment list produced in round one as part of generating [`BindingFactor`], the // binding factor. let binding_factor_list: BindingFactorList = - compute_binding_factor_list(signing_package, &pubkeys.group_public, &[]); + compute_binding_factor_list(signing_package, &pubkeys.verifying_key, &[]); // Compute the group commitment from signing commitments produced in round one. let group_commitment = compute_group_commitment(signing_package, &binding_factor_list)?; @@ -461,7 +461,7 @@ where // Verify the aggregate signature let verification_result = pubkeys - .group_public + .verifying_key .verify(signing_package.message(), &signature); // Only if the verification of the aggregate signature failed; verify each share to find the cheater. @@ -471,7 +471,7 @@ where // Compute the per-message challenge. let challenge = crate::challenge::( &group_commitment.0, - &pubkeys.group_public.element, + &pubkeys.verifying_key.element, signing_package.message().as_slice(), ); @@ -480,7 +480,7 @@ where // Look up the public key for this signer, where `signer_pubkey` = _G.ScalarBaseMult(s[i])_, // and where s[i] is a secret share of the constant term of _f_, the secret polynomial. let signer_pubkey = pubkeys - .signer_pubkeys + .verifying_shares .get(signature_share_identifier) .ok_or(Error::UnknownIdentifier)?; diff --git a/frost-core/src/frost/keys.rs b/frost-core/src/frost/keys.rs index 85ecb87..5c5904c 100644 --- a/frost-core/src/frost/keys.rs +++ b/frost-core/src/frost/keys.rs @@ -356,7 +356,7 @@ pub struct SecretShare { #[zeroize(skip)] pub(crate) identifier: Identifier, /// Secret Key. - pub(crate) value: SigningShare, + pub(crate) signing_share: SigningShare, #[zeroize(skip)] /// The commitments to be distributed among signers. pub(crate) commitment: VerifiableSecretSharingCommitment, @@ -380,22 +380,17 @@ where /// Create a new [`SecretShare`] instance. pub fn new( identifier: Identifier, - value: SigningShare, + signing_share: SigningShare, commitment: VerifiableSecretSharingCommitment, ) -> Self { SecretShare { identifier, - value, + signing_share, commitment, ciphersuite: (), } } - /// Gets the inner [`SigningShare`] value. - pub fn secret(&self) -> &SigningShare { - &self.value - } - /// Verifies that a secret share is consistent with a verifiable secret sharing commitment, /// and returns the derived group info for the participant (their public verification share, /// and the group public key) if successful. @@ -411,18 +406,18 @@ where /// /// [spec]: https://www.ietf.org/archive/id/draft-irtf-cfrg-frost-14.html#appendix-C.2-4 pub fn verify(&self) -> Result<(VerifyingShare, VerifyingKey), Error> { - let f_result = ::generator() * self.value.0; + let f_result = ::generator() * self.signing_share.0; let result = evaluate_vss(&self.commitment, self.identifier); if !(f_result == result) { return Err(Error::InvalidSecretShare); } - let group_public = VerifyingKey { + let verifying_key = VerifyingKey { element: self.commitment.first()?.0, }; - Ok((VerifyingShare(result), group_public)) + Ok((VerifyingShare(result), verifying_key)) } } @@ -496,7 +491,7 @@ pub fn split( } } - let group_public = VerifyingKey::from(key); + let verifying_key = VerifyingKey::from(key); let coefficients = generate_coefficients::(min_signers as usize - 1, rng); @@ -509,15 +504,15 @@ pub fn split( generate_secret_shares(key, max_signers, min_signers, coefficients, identifiers)? } }; - let mut signer_pubkeys: HashMap, VerifyingShare> = + let mut verifying_shares: HashMap, VerifyingShare> = HashMap::with_capacity(max_signers as usize); let mut secret_shares_by_id: HashMap, SecretShare> = HashMap::with_capacity(max_signers as usize); for secret_share in secret_shares { - let signer_public = secret_share.value.into(); - signer_pubkeys.insert(secret_share.identifier, signer_public); + let signer_public = secret_share.signing_share.into(); + verifying_shares.insert(secret_share.identifier, signer_public); secret_shares_by_id.insert(secret_share.identifier, secret_share); } @@ -525,8 +520,8 @@ pub fn split( Ok(( secret_shares_by_id, PublicKeyPackage { - signer_pubkeys, - group_public, + verifying_shares, + verifying_key, ciphersuite: (), }, )) @@ -585,14 +580,14 @@ pub struct KeyPackage { /// Denotes the participant identifier each secret share key package is owned by. #[zeroize(skip)] pub(crate) identifier: Identifier, - /// This participant's secret share. - pub(crate) secret_share: SigningShare, + /// This participant's signing share. This is secret. + pub(crate) signing_share: SigningShare, /// This participant's public key. #[zeroize(skip)] - pub(crate) public: VerifyingShare, + pub(crate) verifying_share: VerifyingShare, /// The public verifying key that represents the entire group. #[zeroize(skip)] - pub(crate) group_public: VerifyingKey, + pub(crate) verifying_key: VerifyingKey, pub(crate) min_signers: u16, /// Ciphersuite ID for serialization #[cfg_attr( @@ -614,16 +609,16 @@ where /// Create a new [`KeyPackage`] instance. pub fn new( identifier: Identifier, - secret_share: SigningShare, - public: VerifyingShare, - group_public: VerifyingKey, + signing_share: SigningShare, + verifying_share: VerifyingShare, + verifying_key: VerifyingKey, min_signers: u16, ) -> Self { Self { identifier, - secret_share, - public, - group_public, + signing_share, + verifying_share, + verifying_key, min_signers, ciphersuite: (), } @@ -661,13 +656,13 @@ where /// dealer, but implementations *MUST* make sure that all participants have /// a consistent view of this commitment in practice. fn try_from(secret_share: SecretShare) -> Result> { - let (public, group_public) = secret_share.verify()?; + let (verifying_share, verifying_key) = secret_share.verify()?; Ok(KeyPackage { identifier: secret_share.identifier, - secret_share: secret_share.value, - public, - group_public, + signing_share: secret_share.signing_share, + verifying_share, + verifying_key, min_signers: secret_share.commitment.0.len() as u16, ciphersuite: (), }) @@ -684,9 +679,9 @@ where pub struct PublicKeyPackage { /// The verifying shares for all participants. Used to validate signature /// shares they generate. - pub(crate) signer_pubkeys: HashMap, VerifyingShare>, + pub(crate) verifying_shares: HashMap, VerifyingShare>, /// The joint public key for the entire group. - pub(crate) group_public: VerifyingKey, + pub(crate) verifying_key: VerifyingKey, /// Ciphersuite ID for serialization #[cfg_attr( feature = "serde", @@ -706,12 +701,12 @@ where { /// Create a new [`PublicKeyPackage`] instance. pub fn new( - signer_pubkeys: HashMap, VerifyingShare>, - group_public: VerifyingKey, + verifying_shares: HashMap, VerifyingShare>, + verifying_key: VerifyingKey, ) -> Self { Self { - signer_pubkeys, - group_public, + verifying_shares, + verifying_key, ciphersuite: (), } } @@ -827,7 +822,7 @@ pub(crate) fn generate_secret_shares( secret_shares.push(SecretShare { identifier: *id, - value: SigningShare(value), + signing_share: SigningShare(value), commitment: commitment.clone(), ciphersuite: (), }); @@ -880,12 +875,12 @@ pub fn reconstruct( } // Compute the Lagrange coefficients - for secret_share in key_packages.iter() { + for key_package in key_packages.iter() { let lagrange_coefficient = - compute_lagrange_coefficient(&identifiers, None, secret_share.identifier)?; + compute_lagrange_coefficient(&identifiers, None, key_package.identifier)?; // Compute y = f(0) via polynomial interpolation of these t-of-n solutions ('points) of f - secret = secret + (lagrange_coefficient * secret_share.secret_share().0); + secret = secret + (lagrange_coefficient * key_package.signing_share().0); } Ok(SigningKey { scalar: secret }) diff --git a/frost-core/src/frost/keys/dkg.rs b/frost-core/src/frost/keys/dkg.rs index 1269e37..db4210d 100644 --- a/frost-core/src/frost/keys/dkg.rs +++ b/frost-core/src/frost/keys/dkg.rs @@ -179,7 +179,7 @@ pub mod round2 { #[cfg_attr(feature = "serde", serde(deny_unknown_fields))] pub struct Package { /// The secret share being sent. - pub(crate) secret_share: SigningShare, + pub(crate) signing_share: SigningShare, /// Ciphersuite ID for serialization #[cfg_attr( feature = "serde", @@ -198,9 +198,9 @@ pub mod round2 { C: Ciphersuite, { /// Create a new [`Package`] instance. - pub fn new(secret_share: SigningShare) -> Self { + pub fn new(signing_share: SigningShare) -> Self { Self { - secret_share, + signing_share, ciphersuite: (), } } @@ -400,7 +400,7 @@ pub fn part2( round2_packages.insert( ell, round2::Package { - secret_share: SigningShare(value), + signing_share: SigningShare(value), ciphersuite: (), }, ); @@ -418,9 +418,9 @@ pub fn part2( )) } -/// Computes the verifying keys of the other participants for the third step +/// Computes the verifying shares of the other participants for the third step /// of the DKG protocol. -fn compute_verifying_keys( +fn compute_verifying_shares( round1_packages: &HashMap, round1::Package>, round2_secret_package: &round2::SecretPackage, ) -> Result, VerifyingShare>, Error> { @@ -428,7 +428,7 @@ fn compute_verifying_keys( // // > Any participant can compute the public verification share of any other participant // > by calculating Y_i = ∏_{j=1}^n ∏_{k=0}^{t−1} φ_{jk}^{i^k mod q}. - let mut others_verifying_keys = HashMap::new(); + let mut others_verifying_shares = HashMap::new(); // Note that in this loop, "i" refers to the other participant whose public verification share // we are computing, and not the current participant. @@ -454,9 +454,9 @@ fn compute_verifying_keys( y_i = y_i + evaluate_vss(commitment?, i); } let y_i = VerifyingShare(y_i); - others_verifying_keys.insert(i, y_i); + others_verifying_shares.insert(i, y_i); } - Ok(others_verifying_keys) + Ok(others_verifying_shares) } /// Performs the third and final part of the distributed key generation protocol @@ -495,7 +495,7 @@ pub fn part3( } let mut signing_share = <::Field>::zero(); - let mut group_public = ::identity(); + let mut verifying_key = ::identity(); for (sender_identifier, round2_package) in round2_packages { // Round 2, Step 2 @@ -504,7 +504,7 @@ pub fn part3( // > g^{f_ℓ(i)} ≟ ∏^{t−1}_{k=0} φ^{i^k mod q}_{ℓk}, aborting if the // > check fails. let ell = *sender_identifier; - let f_ell_i = round2_package.secret_share; + let f_ell_i = round2_package.signing_share; let commitment = &round1_packages .get(&ell) @@ -516,7 +516,7 @@ pub fn part3( // Build a temporary SecretShare so what we can call verify(). let secret_share = SecretShare { identifier: round2_secret_package.identifier, - value: f_ell_i, + signing_share: f_ell_i, commitment: commitment.clone(), ciphersuite: (), }; @@ -533,41 +533,42 @@ pub fn part3( // Round 2, Step 4 // // > Each P_i calculates [...] the group’s public key Y = ∏^n_{j=1} φ_{j0}. - group_public = group_public + commitment.first()?.0; + verifying_key = verifying_key + commitment.first()?.0; } signing_share = signing_share + round2_secret_package.secret_share; - group_public = group_public + round2_secret_package.commitment.first()?.0; + verifying_key = verifying_key + round2_secret_package.commitment.first()?.0; let signing_share = SigningShare(signing_share); // Round 2, Step 4 // // > Each P_i calculates their public verification share Y_i = g^{s_i}. - let verifying_key = signing_share.into(); - let group_public = VerifyingKey { - element: group_public, + let verifying_share = signing_share.into(); + let verifying_key = VerifyingKey { + element: verifying_key, }; // Round 2, Step 4 // // > Any participant can compute the public verification share of any other participant // > by calculating Y_i = ∏_{j=1}^n ∏_{k=0}^{t−1} φ_{jk}^{i^k mod q}. - let mut all_verifying_keys = compute_verifying_keys(round1_packages, round2_secret_package)?; + let mut all_verifying_shares = + compute_verifying_shares(round1_packages, round2_secret_package)?; // Add the participant's own public verification share for consistency - all_verifying_keys.insert(round2_secret_package.identifier, verifying_key); + all_verifying_shares.insert(round2_secret_package.identifier, verifying_share); let key_package = KeyPackage { identifier: round2_secret_package.identifier, - secret_share: signing_share, - public: verifying_key, - group_public, + signing_share, + verifying_share, + verifying_key, min_signers: round2_secret_package.min_signers, ciphersuite: (), }; let public_key_package = PublicKeyPackage { - signer_pubkeys: all_verifying_keys, - group_public, + verifying_shares: all_verifying_shares, + verifying_key, ciphersuite: (), }; diff --git a/frost-core/src/frost/keys/repairable.rs b/frost-core/src/frost/keys/repairable.rs index 50eeabb..0fbe0d3 100644 --- a/frost-core/src/frost/keys/repairable.rs +++ b/frost-core/src/frost/keys/repairable.rs @@ -56,7 +56,7 @@ fn compute_last_random_value( // Calculate Lagrange Coefficient for helper_i let zeta_i = compute_lagrange_coefficient(helpers, Some(participant), share_i.identifier)?; - let lhs = zeta_i * share_i.value.0; + let lhs = zeta_i * share_i.signing_share.0; let mut out: HashMap, Scalar> = helpers .iter() @@ -122,7 +122,7 @@ pub fn repair_share_step_3( SecretShare { identifier, - value: SigningShare(share), + signing_share: SigningShare(share), commitment: commitment.clone(), ciphersuite: (), } diff --git a/frost-core/src/frost/round2.rs b/frost-core/src/frost/round2.rs index 9a42d72..64a91e6 100644 --- a/frost-core/src/frost/round2.rs +++ b/frost-core/src/frost/round2.rs @@ -167,7 +167,7 @@ fn compute_signature_share( ) -> SignatureShare { let z_share: <::Field as Field>::Scalar = signer_nonces.hiding.0 + (signer_nonces.binding.0 * binding_factor.0) - + (lambda_i * key_package.secret_share.0 * challenge.0); + + (lambda_i * key_package.signing_share.0 * challenge.0); SignatureShare:: { share: z_share } } @@ -207,7 +207,7 @@ pub fn sign( // Encodes the signing commitment list produced in round one as part of generating [`BindingFactor`], the // binding factor. let binding_factor_list: BindingFactorList = - compute_binding_factor_list(signing_package, &key_package.group_public, &[]); + compute_binding_factor_list(signing_package, &key_package.verifying_key, &[]); let binding_factor: frost::BindingFactor = binding_factor_list .get(&key_package.identifier) .ok_or(Error::UnknownIdentifier)? @@ -222,7 +222,7 @@ pub fn sign( // Compute the per-message challenge. let challenge = challenge::( &group_commitment.0, - &key_package.group_public.element, + &key_package.verifying_key.element, signing_package.message.as_slice(), ); diff --git a/frost-core/src/tests/ciphersuite_generic.rs b/frost-core/src/tests/ciphersuite_generic.rs index ac78e42..2d140a1 100644 --- a/frost-core/src/tests/ciphersuite_generic.rs +++ b/frost-core/src/tests/ciphersuite_generic.rs @@ -212,7 +212,7 @@ pub fn check_sign( key_packages .get(&participant_identifier) .unwrap() - .secret_share(), + .signing_share(), &mut rng, ); nonces_map.insert(participant_identifier, nonces); @@ -263,21 +263,23 @@ pub fn check_sign( // Check that the threshold signature can be verified by the group public // key (the verification key). pubkey_package - .group_public + .verifying_key .verify(message, &group_signature)?; // Check that the threshold signature can be verified by the group public - // key (the verification key) from KeyPackage.group_public + // key (the verification key) from KeyPackage.verifying_key for (participant_identifier, _) in nonces_map.clone() { let key_package = key_packages.get(&participant_identifier).unwrap(); - key_package.group_public.verify(message, &group_signature)?; + key_package + .verifying_key + .verify(message, &group_signature)?; } Ok(( message.to_owned(), group_signature, - pubkey_package.group_public, + pubkey_package.verifying_key, )) } @@ -311,10 +313,10 @@ fn check_aggregate_errors( signature_shares.clone(), pubkey_package.clone(), ); - check_aggregate_invalid_share_identifier_for_signer_pubkeys( - signing_package.clone(), - signature_shares.clone(), - pubkey_package.clone(), + check_aggregate_invalid_share_identifier_for_verifying_shares( + signing_package, + signature_shares, + pubkey_package, ); } @@ -336,7 +338,7 @@ fn check_aggregate_corrupted_share( /// Note that the SigningPackage part of the finding is not currently reachable /// since it's caught by `compute_lagrange_coefficient()`, and the Binding Factor /// part can't either since it's caught before by the PublicKeyPackage part. -fn check_aggregate_invalid_share_identifier_for_signer_pubkeys( +fn check_aggregate_invalid_share_identifier_for_verifying_shares( signing_package: frost::SigningPackage, mut signature_shares: HashMap, frost::round2::SignatureShare>, pubkey_package: frost::keys::PublicKeyPackage, @@ -467,7 +469,7 @@ where // Used by the signing test that follows. let mut verifying_keys = HashMap::new(); // The group public key, used by the signing test that follows. - let mut group_public = None; + let mut verifying_key = None; // For each participant, store the set of verifying keys they have computed. // This is used to check if the set is correct (the same) for all participants. // In practice, if there is a Coordinator, only they need to store the set. @@ -493,12 +495,12 @@ where &received_round2_packages[&participant_identifier], ) .unwrap(); - verifying_keys.insert(participant_identifier, key_package.public); - // Test if all group_public are equal - if let Some(previous_group_public) = group_public { - assert_eq!(previous_group_public, key_package.group_public) + verifying_keys.insert(participant_identifier, key_package.verifying_share); + // Test if all verifying_key are equal + if let Some(previous_verifying_key) = verifying_key { + assert_eq!(previous_verifying_key, key_package.verifying_key) } - group_public = Some(key_package.group_public); + verifying_key = Some(key_package.verifying_key); key_packages.insert(participant_identifier, key_package); pubkey_packages_by_participant .insert(participant_identifier, pubkey_package_for_participant); @@ -506,10 +508,10 @@ where // Test if the set of verifying keys is correct for all participants. for verifying_keys_for_participant in pubkey_packages_by_participant.values() { - assert!(verifying_keys_for_participant.signer_pubkeys == verifying_keys); + assert!(verifying_keys_for_participant.verifying_shares == verifying_keys); } - let pubkeys = frost::keys::PublicKeyPackage::new(verifying_keys, group_public.unwrap()); + let pubkeys = frost::keys::PublicKeyPackage::new(verifying_keys, verifying_key.unwrap()); // Proceed with the signing test. check_sign(min_signers, key_packages, rng, pubkeys).unwrap() @@ -713,7 +715,7 @@ pub fn check_sign_with_missing_identifier(mut rng: R) { ); // TODO: assert on commitment equality as well once updates have been made to VerifiableSecretSharingCommitment - assert!(participant.secret() == participant_recovered_share.secret()) + assert!(participant.signing_share() == participant_recovered_share.signing_share()) } fn generate_scalar_from_byte_string( @@ -144,7 +144,7 @@ pub fn check_repair_share_step_1(mut rng rhs = rhs + v; } - let lhs = lagrange_coefficient * helper_4.value.0; + let lhs = lagrange_coefficient * helper_4.signing_share.0; assert!(lhs == rhs) } @@ -208,7 +208,7 @@ pub fn check_repair_share_step_3( commitment, ); - assert!(actual.value == expected.value); + assert!(actual.signing_share == expected.signing_share); } /// Test repair share step 1 fails with invalid numbers of signers. diff --git a/frost-core/src/tests/vectors.rs b/frost-core/src/tests/vectors.rs index 5a98daa..4a4f5e2 100644 --- a/frost-core/src/tests/vectors.rs +++ b/frost-core/src/tests/vectors.rs @@ -13,7 +13,7 @@ use crate::{ /// Test vectors for a ciphersuite. pub struct TestVectors { secret_key: SigningKey, - group_public: VerifyingKey, + verifying_key: VerifyingKey, key_packages: HashMap, KeyPackage>, message_bytes: Vec, share_polynomial_coefficients: Vec>, @@ -57,8 +57,8 @@ pub fn parse_test_vectors(json_vectors: &Value) -> TestVectors::from_hex(inputs["group_public_key"].as_str().unwrap()).unwrap(); + let verifying_key = + VerifyingKey::::from_hex(inputs["verifying_key_key"].as_str().unwrap()).unwrap(); for secret_share in possible_participants { let i = secret_share["identifier"].as_u64().unwrap() as u16; @@ -72,7 +72,7 @@ pub fn parse_test_vectors(json_vectors: &Value) -> TestVectors(json_vectors: &Value) -> TestVectors(json_vectors: &Value) -> TestVectors(json_vectors: &Value) { let TestVectors { secret_key, - group_public, + verifying_key, key_packages, message_bytes, share_polynomial_coefficients, @@ -208,12 +208,12 @@ pub fn check_sign_with_test_vectors(json_vectors: &Value) { for key_package in key_packages.values() { assert_eq!( - *key_package.public(), - frost::keys::VerifyingShare::from(*key_package.secret_share()) + *key_package.verifying_share(), + frost::keys::VerifyingShare::from(*key_package.signing_share()) ); assert_eq!( - key_package.secret_share(), - secret_shares[key_package.identifier()].secret() + key_package.signing_share(), + secret_shares[key_package.identifier()].signing_share() ) } @@ -225,7 +225,7 @@ pub fn check_sign_with_test_vectors(json_vectors: &Value) { let nonces = signer_nonces.get(&i).unwrap(); // compute nonces from secret and randomness - let secret = secret_shares[&i].secret(); + let secret = secret_shares[&i].signing_share(); let hiding_nonce_randomness = &hiding_nonces_randomness[&i]; let hiding_nonce = Nonce::nonce_generate_from_random_bytes( @@ -262,14 +262,14 @@ pub fn check_sign_with_test_vectors(json_vectors: &Value) { let signing_package = frost::SigningPackage::new(signer_commitments, &message_bytes); for (identifier, input) in signing_package - .binding_factor_preimages(&group_public, &[]) + .binding_factor_preimages(&verifying_key, &[]) .iter() { assert_eq!(*input, binding_factor_inputs[identifier]); } let binding_factor_list: frost::BindingFactorList = - compute_binding_factor_list(&signing_package, &group_public, &[]); + compute_binding_factor_list(&signing_package, &verifying_key, &[]); for (identifier, binding_factor) in binding_factor_list.iter() { assert_eq!(*binding_factor, binding_factors[identifier]); @@ -290,12 +290,12 @@ pub fn check_sign_with_test_vectors(json_vectors: &Value) { assert_eq!(our_signature_shares, signature_shares); - let signer_pubkeys = key_packages + let verifying_shares = key_packages .into_iter() - .map(|(i, key_package)| (i, *key_package.public())) + .map(|(i, key_package)| (i, *key_package.verifying_share())) .collect(); - let pubkey_package = frost::keys::PublicKeyPackage::new(signer_pubkeys, group_public); + let pubkey_package = frost::keys::PublicKeyPackage::new(verifying_shares, verifying_key); //////////////////////////////////////////////////////////////////////////// // Aggregation: collects the signing shares from all participants, diff --git a/frost-ed25519/README.md b/frost-ed25519/README.md index e43eb58..596ebe3 100644 --- a/frost-ed25519/README.md +++ b/frost-ed25519/README.md @@ -52,7 +52,7 @@ for participant_index in 1..(min_signers as u16 + 1) { // participant, up to _threshold_. # // ANCHOR: round1_commit let (nonces, commitments) = frost::round1::commit( - key_packages[&participant_identifier].secret_share(), + key_packages[&participant_identifier].signing_share(), &mut rng, ); # // ANCHOR_END: round1_commit @@ -111,7 +111,7 @@ let group_signature = frost::aggregate(&signing_package, &signature_shares, &pub // key (the verification key). # // ANCHOR: verify let is_signature_valid = pubkey_package - .group_public() + .verifying_key() .verify(message, &group_signature) .is_ok(); # // ANCHOR_END: verify diff --git a/frost-ed25519/tests/helpers/samples.rs b/frost-ed25519/tests/helpers/samples.rs index cb021dc..621e659 100644 --- a/frost-ed25519/tests/helpers/samples.rs +++ b/frost-ed25519/tests/helpers/samples.rs @@ -90,9 +90,9 @@ pub fn public_key_package() -> PublicKeyPackage { let verifying_share = VerifyingShare::deserialize(serialized_element).unwrap(); let serialized_element = ::Group::serialize(&element1()); let verifying_key = VerifyingKey::deserialize(serialized_element).unwrap(); - let signer_pubkeys = HashMap::from([(identifier, verifying_share)]); + let verifying_shares = HashMap::from([(identifier, verifying_share)]); - PublicKeyPackage::new(signer_pubkeys, verifying_key) + PublicKeyPackage::new(verifying_shares, verifying_key) } /// Generate a sample round1::Package. diff --git a/frost-ed25519/tests/helpers/vectors-big-identifier.json b/frost-ed25519/tests/helpers/vectors-big-identifier.json index 3485826..6dbbe88 100644 --- a/frost-ed25519/tests/helpers/vectors-big-identifier.json +++ b/frost-ed25519/tests/helpers/vectors-big-identifier.json @@ -14,7 +14,7 @@ 257 ], "group_secret_key": "7b1c33d3f5291d85de664833beb1ad469f7fb6025a0ec78b3a790c6e13a98304", - "group_public_key": "15d21ccd7ee42959562fc8aa63224c8851fb3ec85a3faf66040d380fb9738673", + "verifying_key_key": "15d21ccd7ee42959562fc8aa63224c8851fb3ec85a3faf66040d380fb9738673", "message": "74657374", "share_polynomial_coefficients": [ "178199860edd8c62f5212ee91eff1295d0d670ab4ed4506866bae57e7030b204" diff --git a/frost-ed25519/tests/helpers/vectors.json b/frost-ed25519/tests/helpers/vectors.json index a0e8f5a..6020dfe 100644 --- a/frost-ed25519/tests/helpers/vectors.json +++ b/frost-ed25519/tests/helpers/vectors.json @@ -13,7 +13,7 @@ 3 ], "group_secret_key": "7b1c33d3f5291d85de664833beb1ad469f7fb6025a0ec78b3a790c6e13a98304", - "group_public_key": "15d21ccd7ee42959562fc8aa63224c8851fb3ec85a3faf66040d380fb9738673", + "verifying_key_key": "15d21ccd7ee42959562fc8aa63224c8851fb3ec85a3faf66040d380fb9738673", "message": "74657374", "share_polynomial_coefficients": [ "178199860edd8c62f5212ee91eff1295d0d670ab4ed4506866bae57e7030b204" diff --git a/frost-ed25519/tests/recreation_tests.rs b/frost-ed25519/tests/recreation_tests.rs index a76d5f0..8e20c1b 100644 --- a/frost-ed25519/tests/recreation_tests.rs +++ b/frost-ed25519/tests/recreation_tests.rs @@ -54,7 +54,7 @@ fn check_secret_share_recreation() { let secret_share = samples::secret_share(); let identifier = secret_share.identifier(); - let value = secret_share.value(); + let value = secret_share.signing_share(); let commitment = secret_share.commitment(); let new_secret_share = SecretShare::new(*identifier, *value, commitment.clone()); @@ -68,9 +68,9 @@ fn check_key_package_recreation() { let key_package = samples::key_package(); let identifier = key_package.identifier(); - let signing_share = key_package.secret_share(); - let verifying_share = key_package.public(); - let verifying_key = key_package.group_public(); + let signing_share = key_package.signing_share(); + let verifying_share = key_package.verifying_share(); + let verifying_key = key_package.verifying_key(); let min_signers = key_package.min_signers(); let new_key_package = KeyPackage::new( @@ -89,10 +89,10 @@ fn check_key_package_recreation() { fn check_public_key_package_recreation() { let public_key_package = samples::public_key_package(); - let signer_pubkeys = public_key_package.signer_pubkeys(); - let verifying_key = public_key_package.group_public(); + let verifying_shares = public_key_package.verifying_shares(); + let verifying_key = public_key_package.verifying_key(); - let new_public_key_package = PublicKeyPackage::new(signer_pubkeys.clone(), *verifying_key); + let new_public_key_package = PublicKeyPackage::new(verifying_shares.clone(), *verifying_key); assert!(public_key_package == new_public_key_package); } @@ -115,7 +115,7 @@ fn check_round1_package_recreation() { fn check_round2_package_recreation() { let round2_package = samples::round2_package(); - let signing_share = round2_package.secret_share(); + let signing_share = round2_package.signing_share(); let new_round2_package = round2::Package::new(*signing_share); diff --git a/frost-ed25519/tests/serde_tests.rs b/frost-ed25519/tests/serde_tests.rs index a9576f4..62cedc5 100644 --- a/frost-ed25519/tests/serde_tests.rs +++ b/frost-ed25519/tests/serde_tests.rs @@ -212,7 +212,7 @@ fn check_secret_share_serialization() { let json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "value": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "commitment": [ "5866666666666666666666666666666666666666666666666666666666666666" ], @@ -227,7 +227,7 @@ fn check_secret_share_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "value": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "commitment": [ "5866666666666666666666666666666666666666666666666666666666666666" ], @@ -259,7 +259,7 @@ fn check_secret_share_serialization() { // Extra field let invalid_json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "value": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "commitment": [ "5866666666666666666666666666666666666666666666666666666666666666" ], @@ -281,9 +281,9 @@ fn check_key_package_serialization() { let json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", - "public": "5866666666666666666666666666666666666666666666666666666666666666", - "group_public": "5866666666666666666666666666666666666666666666666666666666666666", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "verifying_share": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_key": "5866666666666666666666666666666666666666666666666666666666666666", "min_signers": 2, "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; @@ -296,9 +296,9 @@ fn check_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", - "public": "5866666666666666666666666666666666666666666666666666666666666666", - "group_public": "5866666666666666666666666666666666666666666666666666666666666666", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "verifying_share": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_key": "5866666666666666666666666666666666666666666666666666666666666666", "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -307,8 +307,8 @@ fn check_key_package_serialization() { let invalid_json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", "foo": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", - "public": "5866666666666666666666666666666666666666666666666666666666666666", - "group_public": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_share": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_key": "5866666666666666666666666666666666666666666666666666666666666666", "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -316,8 +316,8 @@ fn check_key_package_serialization() { // Missing field let invalid_json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "public": "5866666666666666666666666666666666666666666666666666666666666666", - "group_public": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_share": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_key": "5866666666666666666666666666666666666666666666666666666666666666", "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -325,9 +325,9 @@ fn check_key_package_serialization() { // Extra field let invalid_json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", - "public": "5866666666666666666666666666666666666666666666666666666666666666", - "group_public": "5866666666666666666666666666666666666666666666666666666666666666", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "verifying_share": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_key": "5866666666666666666666666666666666666666666666666666666666666666", "extra_field": 1, "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; @@ -345,10 +345,10 @@ fn check_public_key_package_serialization() { assert!(public_key_package == decoded_public_key_package); let json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a00000000000000000000000000000000000000000000000000000000000000": "5866666666666666666666666666666666666666666666666666666666666666" }, - "group_public": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_key": "5866666666666666666666666666666666666666666666666666666666666666", "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; let decoded_public_key_package: PublicKeyPackage = serde_json::from_str(json).unwrap(); @@ -359,17 +359,17 @@ fn check_public_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "0000000000000000000000000000000000000000000000000000000000000000": "5866666666666666666666666666666666666666666666666666666666666666" }, - "group_public": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_key": "5866666666666666666666666666666666666666666666666666666666666666", "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); // Invalid field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a00000000000000000000000000000000000000000000000000000000000000": "5866666666666666666666666666666666666666666666666666666666666666" }, "foo": "5866666666666666666666666666666666666666666666666666666666666666", @@ -379,7 +379,7 @@ fn check_public_key_package_serialization() { // Missing field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a00000000000000000000000000000000000000000000000000000000000000": "5866666666666666666666666666666666666666666666666666666666666666" }, "ciphersuite": "FROST(Ed25519, SHA-512)" @@ -388,10 +388,10 @@ fn check_public_key_package_serialization() { // Extra field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a00000000000000000000000000000000000000000000000000000000000000": "5866666666666666666666666666666666666666666666666666666666666666" }, - "group_public": "5866666666666666666666666666666666666666666666666666666666666666", + "verifying_key": "5866666666666666666666666666666666666666666666666666666666666666", "extra": 1, "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; @@ -463,7 +463,7 @@ fn check_round2_package_serialization() { assert!(round2_package == decoded_round2_package); let json = r#"{ - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; let decoded_round2_package: round2::Package = serde_json::from_str(json).unwrap(); @@ -487,7 +487,7 @@ fn check_round2_package_serialization() { // Extra field let invalid_json = r#"{ - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "extra": 1, "ciphersuite": "FROST(Ed25519, SHA-512)" }"#; diff --git a/frost-ed448/README.md b/frost-ed448/README.md index 83310b1..4b5ae86 100644 --- a/frost-ed448/README.md +++ b/frost-ed448/README.md @@ -52,7 +52,7 @@ for participant_index in 1..(min_signers as u16 + 1) { // participant, up to _threshold_. # // ANCHOR: round1_commit let (nonces, commitments) = frost::round1::commit( - key_packages[&participant_identifier].secret_share(), + key_packages[&participant_identifier].signing_share(), &mut rng, ); # // ANCHOR_END: round1_commit @@ -111,7 +111,7 @@ let group_signature = frost::aggregate(&signing_package, &signature_shares, &pub // key (the verification key). # // ANCHOR: verify let is_signature_valid = pubkey_package - .group_public() + .verifying_key() .verify(message, &group_signature) .is_ok(); # // ANCHOR_END: verify diff --git a/frost-ed448/tests/helpers/samples.rs b/frost-ed448/tests/helpers/samples.rs index f6d523d..88bbbb2 100644 --- a/frost-ed448/tests/helpers/samples.rs +++ b/frost-ed448/tests/helpers/samples.rs @@ -90,9 +90,9 @@ pub fn public_key_package() -> PublicKeyPackage { let verifying_share = VerifyingShare::deserialize(serialized_element).unwrap(); let serialized_element = ::Group::serialize(&element1()); let verifying_key = VerifyingKey::deserialize(serialized_element).unwrap(); - let signer_pubkeys = HashMap::from([(identifier, verifying_share)]); + let verifying_shares = HashMap::from([(identifier, verifying_share)]); - PublicKeyPackage::new(signer_pubkeys, verifying_key) + PublicKeyPackage::new(verifying_shares, verifying_key) } /// Generate a sample round1::Package. diff --git a/frost-ed448/tests/helpers/vectors-big-identifier.json b/frost-ed448/tests/helpers/vectors-big-identifier.json index 6460385..b1823f6 100644 --- a/frost-ed448/tests/helpers/vectors-big-identifier.json +++ b/frost-ed448/tests/helpers/vectors-big-identifier.json @@ -14,7 +14,7 @@ 257 ], "group_secret_key": "6298e1eef3c379392caaed061ed8a31033c9e9e3420726f23b404158a401cd9df24632adfe6b418dc942d8a091817dd8bd70e1c72ba52f3c00", - "group_public_key": "3832f82fda00ff5365b0376df705675b63d2a93c24c6e81d40801ba265632be10f443f95968fadb70d10786827f30dc001c8d0f9b7c1d1b000", + "verifying_key_key": "3832f82fda00ff5365b0376df705675b63d2a93c24c6e81d40801ba265632be10f443f95968fadb70d10786827f30dc001c8d0f9b7c1d1b000", "message": "74657374", "share_polynomial_coefficients": [ "dbd7a514f7a731976620f0436bd135fe8dddc3fadd6e0d13dbd58a1981e587d377d48e0b7ce4e0092967c5e85884d0275a7a740b6abdcd0500" diff --git a/frost-ed448/tests/helpers/vectors.json b/frost-ed448/tests/helpers/vectors.json index 120b396..90c92b6 100644 --- a/frost-ed448/tests/helpers/vectors.json +++ b/frost-ed448/tests/helpers/vectors.json @@ -13,7 +13,7 @@ 3 ], "group_secret_key": "6298e1eef3c379392caaed061ed8a31033c9e9e3420726f23b404158a401cd9df24632adfe6b418dc942d8a091817dd8bd70e1c72ba52f3c00", - "group_public_key": "3832f82fda00ff5365b0376df705675b63d2a93c24c6e81d40801ba265632be10f443f95968fadb70d10786827f30dc001c8d0f9b7c1d1b000", + "verifying_key_key": "3832f82fda00ff5365b0376df705675b63d2a93c24c6e81d40801ba265632be10f443f95968fadb70d10786827f30dc001c8d0f9b7c1d1b000", "message": "74657374", "share_polynomial_coefficients": [ "dbd7a514f7a731976620f0436bd135fe8dddc3fadd6e0d13dbd58a1981e587d377d48e0b7ce4e0092967c5e85884d0275a7a740b6abdcd0500" diff --git a/frost-ed448/tests/recreation_tests.rs b/frost-ed448/tests/recreation_tests.rs index a901e83..9db4a5a 100644 --- a/frost-ed448/tests/recreation_tests.rs +++ b/frost-ed448/tests/recreation_tests.rs @@ -54,7 +54,7 @@ fn check_secret_share_recreation() { let secret_share = samples::secret_share(); let identifier = secret_share.identifier(); - let value = secret_share.value(); + let value = secret_share.signing_share(); let commitment = secret_share.commitment(); let new_secret_share = SecretShare::new(*identifier, *value, commitment.clone()); @@ -68,9 +68,9 @@ fn check_key_package_recreation() { let key_package = samples::key_package(); let identifier = key_package.identifier(); - let signing_share = key_package.secret_share(); - let verifying_share = key_package.public(); - let verifying_key = key_package.group_public(); + let signing_share = key_package.signing_share(); + let verifying_share = key_package.verifying_share(); + let verifying_key = key_package.verifying_key(); let min_signers = key_package.min_signers(); let new_key_package = KeyPackage::new( @@ -89,10 +89,10 @@ fn check_key_package_recreation() { fn check_public_key_package_recreation() { let public_key_package = samples::public_key_package(); - let signer_pubkeys = public_key_package.signer_pubkeys(); - let verifying_key = public_key_package.group_public(); + let verifying_shares = public_key_package.verifying_shares(); + let verifying_key = public_key_package.verifying_key(); - let new_public_key_package = PublicKeyPackage::new(signer_pubkeys.clone(), *verifying_key); + let new_public_key_package = PublicKeyPackage::new(verifying_shares.clone(), *verifying_key); assert!(public_key_package == new_public_key_package); } @@ -115,7 +115,7 @@ fn check_round1_package_recreation() { fn check_round2_package_recreation() { let round2_package = samples::round2_package(); - let signing_share = round2_package.secret_share(); + let signing_share = round2_package.signing_share(); let new_round2_package = round2::Package::new(*signing_share); diff --git a/frost-ed448/tests/serde_tests.rs b/frost-ed448/tests/serde_tests.rs index cbfe800..95f7102 100644 --- a/frost-ed448/tests/serde_tests.rs +++ b/frost-ed448/tests/serde_tests.rs @@ -212,7 +212,7 @@ fn check_secret_share_serialization() { let json = r#"{ "identifier": "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "value": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", + "signing_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", "commitment": [ "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900" ], @@ -227,7 +227,7 @@ fn check_secret_share_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "value": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", + "signing_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", "commitment": [ "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900" ], @@ -259,7 +259,7 @@ fn check_secret_share_serialization() { // Extra field let invalid_json = r#"{ "identifier": "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "value": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", + "signing_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", "commitment": [ "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900" ], @@ -281,9 +281,9 @@ fn check_key_package_serialization() { let json = r#"{ "identifier": "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "secret_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", - "public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", - "group_public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "signing_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", + "verifying_share": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_key": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", "min_signers": 2, "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; @@ -296,9 +296,9 @@ fn check_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "secret_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", - "public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", - "group_public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "signing_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", + "verifying_share": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_key": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -307,8 +307,8 @@ fn check_key_package_serialization() { let invalid_json = r#"{ "identifier": "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "foo": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", - "public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", - "group_public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_share": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_key": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -316,8 +316,8 @@ fn check_key_package_serialization() { // Missing field let invalid_json = r#"{ "identifier": "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", - "group_public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_share": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_key": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -325,9 +325,9 @@ fn check_key_package_serialization() { // Extra field let invalid_json = r#"{ "identifier": "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "secret_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", - "public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", - "group_public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "signing_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", + "verifying_share": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_key": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", "extra_field": 1, "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; @@ -345,10 +345,10 @@ fn check_public_key_package_serialization() { assert!(public_key_package == decoded_public_key_package); let json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900" }, - "group_public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_key": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; let decoded_public_key_package: PublicKeyPackage = serde_json::from_str(json).unwrap(); @@ -359,17 +359,17 @@ fn check_public_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "0000000000000000000000000000000000000000000000000000000000000000": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900" }, - "group_public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_key": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); // Invalid field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900" }, "foo": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", @@ -379,7 +379,7 @@ fn check_public_key_package_serialization() { // Missing field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900" }, "ciphersuite": "FROST(Ed448, SHAKE256)" @@ -388,10 +388,10 @@ fn check_public_key_package_serialization() { // Extra field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900" }, - "group_public": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", + "verifying_key": "14fa30f25b790898adc8d74e2c13bdfdc4397ce61cffd33ad7c2a0051e9c78874098a36c7373ea4b62c7c9563720768824bcb66e71463f6900", "extra": 1, "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; @@ -463,7 +463,7 @@ fn check_round2_package_serialization() { assert!(round2_package == decoded_round2_package); let json = r#"{ - "secret_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", + "signing_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; let decoded_round2_package: round2::Package = serde_json::from_str(json).unwrap(); @@ -487,7 +487,7 @@ fn check_round2_package_serialization() { // Extra field let invalid_json = r#"{ - "secret_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", + "signing_share": "4d83e51cb78150c2380ad9b3a18148166024e4c9db3cdf82466d3153aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2a00", "extra": 1, "ciphersuite": "FROST(Ed448, SHAKE256)" }"#; diff --git a/frost-p256/README.md b/frost-p256/README.md index 951c29a..d5830fb 100644 --- a/frost-p256/README.md +++ b/frost-p256/README.md @@ -52,7 +52,7 @@ for participant_index in 1..(min_signers as u16 + 1) { // participant, up to _threshold_. # // ANCHOR: round1_commit let (nonces, commitments) = frost::round1::commit( - key_packages[&participant_identifier].secret_share(), + key_packages[&participant_identifier].signing_share(), &mut rng, ); # // ANCHOR_END: round1_commit @@ -111,7 +111,7 @@ let group_signature = frost::aggregate(&signing_package, &signature_shares, &pub // key (the verification key). # // ANCHOR: verify let is_signature_valid = pubkey_package - .group_public() + .verifying_key() .verify(message, &group_signature) .is_ok(); # // ANCHOR_END: verify diff --git a/frost-p256/tests/helpers/samples.rs b/frost-p256/tests/helpers/samples.rs index 9c2edb1..67c1a97 100644 --- a/frost-p256/tests/helpers/samples.rs +++ b/frost-p256/tests/helpers/samples.rs @@ -90,9 +90,9 @@ pub fn public_key_package() -> PublicKeyPackage { let verifying_share = VerifyingShare::deserialize(serialized_element).unwrap(); let serialized_element = ::Group::serialize(&element1()); let verifying_key = VerifyingKey::deserialize(serialized_element).unwrap(); - let signer_pubkeys = HashMap::from([(identifier, verifying_share)]); + let verifying_shares = HashMap::from([(identifier, verifying_share)]); - PublicKeyPackage::new(signer_pubkeys, verifying_key) + PublicKeyPackage::new(verifying_shares, verifying_key) } /// Generate a sample round1::Package. diff --git a/frost-p256/tests/helpers/vectors-big-identifier.json b/frost-p256/tests/helpers/vectors-big-identifier.json index 1eacb53..2d48f59 100644 --- a/frost-p256/tests/helpers/vectors-big-identifier.json +++ b/frost-p256/tests/helpers/vectors-big-identifier.json @@ -14,7 +14,7 @@ 257 ], "group_secret_key": "8ba9bba2e0fd8c4767154d35a0b7562244a4aaf6f36c8fb8735fa48b301bd8de", - "group_public_key": "023a309ad94e9fe8a7ba45dfc58f38bf091959d3c99cfbd02b4dc00585ec45ab70", + "verifying_key_key": "023a309ad94e9fe8a7ba45dfc58f38bf091959d3c99cfbd02b4dc00585ec45ab70", "message": "74657374", "share_polynomial_coefficients": [ "80f25e6c0709353e46bfbe882a11bdbb1f8097e46340eb8673b7e14556e6c3a4" diff --git a/frost-p256/tests/helpers/vectors.json b/frost-p256/tests/helpers/vectors.json index 881c604..312643d 100644 --- a/frost-p256/tests/helpers/vectors.json +++ b/frost-p256/tests/helpers/vectors.json @@ -13,7 +13,7 @@ 3 ], "group_secret_key": "8ba9bba2e0fd8c4767154d35a0b7562244a4aaf6f36c8fb8735fa48b301bd8de", - "group_public_key": "023a309ad94e9fe8a7ba45dfc58f38bf091959d3c99cfbd02b4dc00585ec45ab70", + "verifying_key_key": "023a309ad94e9fe8a7ba45dfc58f38bf091959d3c99cfbd02b4dc00585ec45ab70", "message": "74657374", "share_polynomial_coefficients": [ "80f25e6c0709353e46bfbe882a11bdbb1f8097e46340eb8673b7e14556e6c3a4" diff --git a/frost-p256/tests/recreation_tests.rs b/frost-p256/tests/recreation_tests.rs index 9b8a912..bfd4699 100644 --- a/frost-p256/tests/recreation_tests.rs +++ b/frost-p256/tests/recreation_tests.rs @@ -54,7 +54,7 @@ fn check_secret_share_recreation() { let secret_share = samples::secret_share(); let identifier = secret_share.identifier(); - let value = secret_share.value(); + let value = secret_share.signing_share(); let commitment = secret_share.commitment(); let new_secret_share = SecretShare::new(*identifier, *value, commitment.clone()); @@ -68,9 +68,9 @@ fn check_key_package_recreation() { let key_package = samples::key_package(); let identifier = key_package.identifier(); - let signing_share = key_package.secret_share(); - let verifying_share = key_package.public(); - let verifying_key = key_package.group_public(); + let signing_share = key_package.signing_share(); + let verifying_share = key_package.verifying_share(); + let verifying_key = key_package.verifying_key(); let min_signers = key_package.min_signers(); let new_key_package = KeyPackage::new( @@ -89,10 +89,10 @@ fn check_key_package_recreation() { fn check_public_key_package_recreation() { let public_key_package = samples::public_key_package(); - let signer_pubkeys = public_key_package.signer_pubkeys(); - let verifying_key = public_key_package.group_public(); + let verifying_shares = public_key_package.verifying_shares(); + let verifying_key = public_key_package.verifying_key(); - let new_public_key_package = PublicKeyPackage::new(signer_pubkeys.clone(), *verifying_key); + let new_public_key_package = PublicKeyPackage::new(verifying_shares.clone(), *verifying_key); assert!(public_key_package == new_public_key_package); } @@ -115,7 +115,7 @@ fn check_round1_package_recreation() { fn check_round2_package_recreation() { let round2_package = samples::round2_package(); - let signing_share = round2_package.secret_share(); + let signing_share = round2_package.signing_share(); let new_round2_package = round2::Package::new(*signing_share); diff --git a/frost-p256/tests/serde_tests.rs b/frost-p256/tests/serde_tests.rs index 7d977ca..994c196 100644 --- a/frost-p256/tests/serde_tests.rs +++ b/frost-p256/tests/serde_tests.rs @@ -212,7 +212,7 @@ fn check_secret_share_serialization() { let json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "value": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", + "signing_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", "commitment": [ "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296" ], @@ -227,7 +227,7 @@ fn check_secret_share_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "value": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", + "signing_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", "commitment": [ "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296" ], @@ -259,7 +259,7 @@ fn check_secret_share_serialization() { // Extra field let invalid_json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "value": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", + "signing_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", "commitment": [ "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296" ], @@ -281,9 +281,9 @@ fn check_key_package_serialization() { let json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "secret_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", - "public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", - "group_public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "signing_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", + "verifying_share": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_key": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", "min_signers": 2, "ciphersuite": "FROST(P-256, SHA-256)" }"#; @@ -296,9 +296,9 @@ fn check_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "secret_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", - "public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", - "group_public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "signing_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", + "verifying_share": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_key": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", "ciphersuite": "FROST(P-256, SHA-256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -307,8 +307,8 @@ fn check_key_package_serialization() { let invalid_json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", "foo": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", - "public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", - "group_public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_share": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_key": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", "ciphersuite": "FROST(P-256, SHA-256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -316,8 +316,8 @@ fn check_key_package_serialization() { // Missing field let invalid_json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", - "group_public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_share": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_key": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", "ciphersuite": "FROST(P-256, SHA-256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -325,9 +325,9 @@ fn check_key_package_serialization() { // Extra field let invalid_json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "secret_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", - "public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", - "group_public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "signing_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", + "verifying_share": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_key": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", "extra_field": 1, "ciphersuite": "FROST(P-256, SHA-256)" }"#; @@ -345,10 +345,10 @@ fn check_public_key_package_serialization() { assert!(public_key_package == decoded_public_key_package); let json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "000000000000000000000000000000000000000000000000000000000000002a": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296" }, - "group_public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_key": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", "ciphersuite": "FROST(P-256, SHA-256)" }"#; let decoded_public_key_package: PublicKeyPackage = serde_json::from_str(json).unwrap(); @@ -359,17 +359,17 @@ fn check_public_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "0000000000000000000000000000000000000000000000000000000000000000": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296" }, - "group_public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_key": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", "ciphersuite": "FROST(P-256, SHA-256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); // Invalid field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "000000000000000000000000000000000000000000000000000000000000002a": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296" }, "foo": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", @@ -379,7 +379,7 @@ fn check_public_key_package_serialization() { // Missing field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "000000000000000000000000000000000000000000000000000000000000002a": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296" }, "ciphersuite": "FROST(P-256, SHA-256)" @@ -388,10 +388,10 @@ fn check_public_key_package_serialization() { // Extra field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "000000000000000000000000000000000000000000000000000000000000002a": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296" }, - "group_public": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", + "verifying_key": "036b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", "extra": 1, "ciphersuite": "FROST(P-256, SHA-256)" }"#; @@ -463,7 +463,7 @@ fn check_round2_package_serialization() { assert!(round2_package == decoded_round2_package); let json = r#"{ - "secret_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", + "signing_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", "ciphersuite": "FROST(P-256, SHA-256)" }"#; let decoded_round2_package: round2::Package = serde_json::from_str(json).unwrap(); @@ -487,7 +487,7 @@ fn check_round2_package_serialization() { // Extra field let invalid_json = r#"{ - "secret_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", + "signing_share": "aaaaaaaa00000000aaaaaaaaaaaaaaaa7def51c91a0fbf034d26872ca84218e1", "extra": 1, "ciphersuite": "FROST(P-256, SHA-256)" }"#; diff --git a/frost-rerandomized/src/lib.rs b/frost-rerandomized/src/lib.rs index 38c4bce..0e33379 100644 --- a/frost-rerandomized/src/lib.rs +++ b/frost-rerandomized/src/lib.rs @@ -58,12 +58,12 @@ impl Randomize for KeyPackage { Self: Sized, C: Ciphersuite, { - let verifying_share = self.public(); + let verifying_share = self.verifying_share(); let randomized_verifying_share = VerifyingShare::::new( verifying_share.to_element() + randomized_params.randomizer_element, ); - let signing_share = self.secret_share(); + let signing_share = self.signing_share(); let randomized_signing_share = SigningShare::new(signing_share.to_scalar() + randomized_params.randomizer.0); @@ -89,7 +89,7 @@ impl Randomize for PublicKeyPackage { Self: Sized, C: Ciphersuite, { - let verifying_shares = self.signer_pubkeys().clone(); + let verifying_shares = self.verifying_shares().clone(); let randomized_verifying_shares = verifying_shares .iter() .map(|(identifier, verifying_share)| { @@ -120,7 +120,7 @@ pub fn sign( randomizer: Randomizer, ) -> Result, Error> { let randomized_params = - RandomizedParams::from_randomizer(key_package.group_public(), randomizer); + RandomizedParams::from_randomizer(key_package.verifying_key(), randomizer); let randomized_key_package = key_package.randomize(&randomized_params)?; frost::round2::sign(signing_package, signer_nonces, &randomized_key_package) } @@ -238,9 +238,9 @@ where randomizer: Randomizer, ) -> Self { let randomizer_element = ::generator() * randomizer.0; - let group_public_element = group_verifying_key.to_element(); - let randomized_group_public_element = group_public_element + randomizer_element; - let randomized_verifying_key = VerifyingKey::::new(randomized_group_public_element); + let verifying_key_element = group_verifying_key.to_element(); + let randomized_verifying_key_element = verifying_key_element + randomizer_element; + let randomized_verifying_key = VerifyingKey::::new(randomized_verifying_key_element); Self { randomizer, diff --git a/frost-rerandomized/src/tests.rs b/frost-rerandomized/src/tests.rs index 06a35ec..1029101 100644 --- a/frost-rerandomized/src/tests.rs +++ b/frost-rerandomized/src/tests.rs @@ -39,7 +39,7 @@ pub fn check_randomized_sign_with_dealer BTreeMap::new(); check_from_randomizer(&pubkeys, &mut rng); - let randomizer_params = RandomizedParams::new(pubkeys.group_public(), &mut rng); + let randomizer_params = RandomizedParams::new(pubkeys.verifying_key(), &mut rng); let randomizer = randomizer_params.randomizer(); //////////////////////////////////////////////////////////////////////////// @@ -54,7 +54,7 @@ pub fn check_randomized_sign_with_dealer key_packages .get(&participant_identifier) .unwrap() - .secret_share(), + .signing_share(), &mut rng, ); nonces.insert(participant_identifier, nonce); @@ -108,7 +108,7 @@ pub fn check_randomized_sign_with_dealer .verify(message, &group_signature) .is_ok()); - // Note that key_package.group_public can't be used to verify the signature + // Note that key_package.verifying_key can't be used to verify the signature // since those are non-randomized. ( @@ -124,7 +124,7 @@ fn check_from_randomizer( ) { let randomizer = Randomizer::new(rng); - let randomizer_params = RandomizedParams::from_randomizer(pubkeys.group_public(), randomizer); + let randomizer_params = RandomizedParams::from_randomizer(pubkeys.verifying_key(), randomizer); assert!(*randomizer_params.randomizer() == randomizer); } diff --git a/frost-ristretto255/README.md b/frost-ristretto255/README.md index d2c8a64..cfd397b 100644 --- a/frost-ristretto255/README.md +++ b/frost-ristretto255/README.md @@ -52,7 +52,7 @@ for participant_index in 1..(min_signers as u16 + 1) { // participant, up to _threshold_. # // ANCHOR: round1_commit let (nonces, commitments) = frost::round1::commit( - key_packages[&participant_identifier].secret_share(), + key_packages[&participant_identifier].signing_share(), &mut rng, ); # // ANCHOR_END: round1_commit @@ -111,7 +111,7 @@ let group_signature = frost::aggregate(&signing_package, &signature_shares, &pub // key (the verification key). # // ANCHOR: verify let is_signature_valid = pubkey_package - .group_public() + .verifying_key() .verify(message, &group_signature) .is_ok(); # // ANCHOR_END: verify diff --git a/frost-ristretto255/tests/helpers/samples.rs b/frost-ristretto255/tests/helpers/samples.rs index ca4143a..550b7cf 100644 --- a/frost-ristretto255/tests/helpers/samples.rs +++ b/frost-ristretto255/tests/helpers/samples.rs @@ -90,9 +90,9 @@ pub fn public_key_package() -> PublicKeyPackage { let verifying_share = VerifyingShare::deserialize(serialized_element).unwrap(); let serialized_element = ::Group::serialize(&element1()); let verifying_key = VerifyingKey::deserialize(serialized_element).unwrap(); - let signer_pubkeys = HashMap::from([(identifier, verifying_share)]); + let verifying_shares = HashMap::from([(identifier, verifying_share)]); - PublicKeyPackage::new(signer_pubkeys, verifying_key) + PublicKeyPackage::new(verifying_shares, verifying_key) } /// Generate a sample round1::Package. diff --git a/frost-ristretto255/tests/helpers/vectors-big-identifier.json b/frost-ristretto255/tests/helpers/vectors-big-identifier.json index 0208297..ba7e1d4 100644 --- a/frost-ristretto255/tests/helpers/vectors-big-identifier.json +++ b/frost-ristretto255/tests/helpers/vectors-big-identifier.json @@ -14,7 +14,7 @@ 257 ], "group_secret_key": "1b25a55e463cfd15cf14a5d3acc3d15053f08da49c8afcf3ab265f2ebc4f970b", - "group_public_key": "e2a62f39eede11269e3bd5a7d97554f5ca384f9f6d3dd9c3c0d05083c7254f57", + "verifying_key_key": "e2a62f39eede11269e3bd5a7d97554f5ca384f9f6d3dd9c3c0d05083c7254f57", "message": "74657374", "share_polynomial_coefficients": [ "410f8b744b19325891d73736923525a4f596c805d060dfb9c98009d34e3fec02" diff --git a/frost-ristretto255/tests/helpers/vectors.json b/frost-ristretto255/tests/helpers/vectors.json index b0af3b5..2d85a41 100644 --- a/frost-ristretto255/tests/helpers/vectors.json +++ b/frost-ristretto255/tests/helpers/vectors.json @@ -13,7 +13,7 @@ 3 ], "group_secret_key": "1b25a55e463cfd15cf14a5d3acc3d15053f08da49c8afcf3ab265f2ebc4f970b", - "group_public_key": "e2a62f39eede11269e3bd5a7d97554f5ca384f9f6d3dd9c3c0d05083c7254f57", + "verifying_key_key": "e2a62f39eede11269e3bd5a7d97554f5ca384f9f6d3dd9c3c0d05083c7254f57", "message": "74657374", "share_polynomial_coefficients": [ "410f8b744b19325891d73736923525a4f596c805d060dfb9c98009d34e3fec02" diff --git a/frost-ristretto255/tests/recreation_tests.rs b/frost-ristretto255/tests/recreation_tests.rs index 5e03a7d..41888a6 100644 --- a/frost-ristretto255/tests/recreation_tests.rs +++ b/frost-ristretto255/tests/recreation_tests.rs @@ -54,7 +54,7 @@ fn check_secret_share_recreation() { let secret_share = samples::secret_share(); let identifier = secret_share.identifier(); - let value = secret_share.value(); + let value = secret_share.signing_share(); let commitment = secret_share.commitment(); let new_secret_share = SecretShare::new(*identifier, *value, commitment.clone()); @@ -68,9 +68,9 @@ fn check_key_package_recreation() { let key_package = samples::key_package(); let identifier = key_package.identifier(); - let signing_share = key_package.secret_share(); - let verifying_share = key_package.public(); - let verifying_key = key_package.group_public(); + let signing_share = key_package.signing_share(); + let verifying_share = key_package.verifying_share(); + let verifying_key = key_package.verifying_key(); let min_signers = key_package.min_signers(); let new_key_package = KeyPackage::new( @@ -89,10 +89,10 @@ fn check_key_package_recreation() { fn check_public_key_package_recreation() { let public_key_package = samples::public_key_package(); - let signer_pubkeys = public_key_package.signer_pubkeys(); - let verifying_key = public_key_package.group_public(); + let verifying_shares = public_key_package.verifying_shares(); + let verifying_key = public_key_package.verifying_key(); - let new_public_key_package = PublicKeyPackage::new(signer_pubkeys.clone(), *verifying_key); + let new_public_key_package = PublicKeyPackage::new(verifying_shares.clone(), *verifying_key); assert!(public_key_package == new_public_key_package); } @@ -115,7 +115,7 @@ fn check_round1_package_recreation() { fn check_round2_package_recreation() { let round2_package = samples::round2_package(); - let signing_share = round2_package.secret_share(); + let signing_share = round2_package.signing_share(); let new_round2_package = round2::Package::new(*signing_share); diff --git a/frost-ristretto255/tests/serde_tests.rs b/frost-ristretto255/tests/serde_tests.rs index afaff78..de14a3b 100644 --- a/frost-ristretto255/tests/serde_tests.rs +++ b/frost-ristretto255/tests/serde_tests.rs @@ -212,7 +212,7 @@ fn check_secret_share_serialization() { let json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "value": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "commitment": [ "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" ], @@ -227,7 +227,7 @@ fn check_secret_share_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "value": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "commitment": [ "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" ], @@ -259,7 +259,7 @@ fn check_secret_share_serialization() { // Extra field let invalid_json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "value": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "commitment": [ "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" ], @@ -281,9 +281,9 @@ fn check_key_package_serialization() { let json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", - "public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", - "group_public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "verifying_share": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_key": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", "min_signers": 2, "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; @@ -296,9 +296,9 @@ fn check_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", - "public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", - "group_public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "verifying_share": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_key": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -307,8 +307,8 @@ fn check_key_package_serialization() { let invalid_json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", "foo": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", - "public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", - "group_public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_share": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_key": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -316,8 +316,8 @@ fn check_key_package_serialization() { // Missing field let invalid_json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", - "group_public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_share": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_key": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -325,9 +325,9 @@ fn check_key_package_serialization() { // Extra field let invalid_json = r#"{ "identifier": "2a00000000000000000000000000000000000000000000000000000000000000", - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", - "public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", - "group_public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "verifying_share": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_key": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", "extra_field": 1, "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; @@ -345,10 +345,10 @@ fn check_public_key_package_serialization() { assert!(public_key_package == decoded_public_key_package); let json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a00000000000000000000000000000000000000000000000000000000000000": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" }, - "group_public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_key": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; let decoded_public_key_package: PublicKeyPackage = serde_json::from_str(json).unwrap(); @@ -359,17 +359,17 @@ fn check_public_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "0000000000000000000000000000000000000000000000000000000000000000": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" }, - "group_public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_key": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); // Invalid field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a00000000000000000000000000000000000000000000000000000000000000": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" }, "foo": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", @@ -379,7 +379,7 @@ fn check_public_key_package_serialization() { // Missing field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a00000000000000000000000000000000000000000000000000000000000000": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" }, "ciphersuite": "FROST(ristretto255, SHA-512)" @@ -388,10 +388,10 @@ fn check_public_key_package_serialization() { // Extra field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "2a00000000000000000000000000000000000000000000000000000000000000": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" }, - "group_public": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", + "verifying_key": "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76", "extra": 1, "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; @@ -463,7 +463,7 @@ fn check_round2_package_serialization() { assert!(round2_package == decoded_round2_package); let json = r#"{ - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; let decoded_round2_package: round2::Package = serde_json::from_str(json).unwrap(); @@ -487,7 +487,7 @@ fn check_round2_package_serialization() { // Extra field let invalid_json = r#"{ - "secret_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", + "signing_share": "498d4e9311420c903913a56c94a694b8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a", "extra": 1, "ciphersuite": "FROST(ristretto255, SHA-512)" }"#; diff --git a/frost-secp256k1/README.md b/frost-secp256k1/README.md index 19f4d13..f609049 100644 --- a/frost-secp256k1/README.md +++ b/frost-secp256k1/README.md @@ -52,7 +52,7 @@ for participant_index in 1..(min_signers as u16 + 1) { // participant, up to _threshold_. # // ANCHOR: round1_commit let (nonces, commitments) = frost::round1::commit( - key_packages[&participant_identifier].secret_share(), + key_packages[&participant_identifier].signing_share(), &mut rng, ); # // ANCHOR_END: round1_commit @@ -111,7 +111,7 @@ let group_signature = frost::aggregate(&signing_package, &signature_shares, &pub // key (the verification key). # // ANCHOR: verify let is_signature_valid = pubkey_package - .group_public() + .verifying_key() .verify(message, &group_signature) .is_ok(); # // ANCHOR_END: verify diff --git a/frost-secp256k1/tests/helpers/samples.rs b/frost-secp256k1/tests/helpers/samples.rs index 67e2cdb..fc1d266 100644 --- a/frost-secp256k1/tests/helpers/samples.rs +++ b/frost-secp256k1/tests/helpers/samples.rs @@ -90,9 +90,9 @@ pub fn public_key_package() -> PublicKeyPackage { let verifying_share = VerifyingShare::deserialize(serialized_element).unwrap(); let serialized_element = ::Group::serialize(&element1()); let verifying_key = VerifyingKey::deserialize(serialized_element).unwrap(); - let signer_pubkeys = HashMap::from([(identifier, verifying_share)]); + let verifying_shares = HashMap::from([(identifier, verifying_share)]); - PublicKeyPackage::new(signer_pubkeys, verifying_key) + PublicKeyPackage::new(verifying_shares, verifying_key) } /// Generate a sample round1::Package. diff --git a/frost-secp256k1/tests/helpers/vectors-big-identifier.json b/frost-secp256k1/tests/helpers/vectors-big-identifier.json index cddce31..8a8b7a9 100644 --- a/frost-secp256k1/tests/helpers/vectors-big-identifier.json +++ b/frost-secp256k1/tests/helpers/vectors-big-identifier.json @@ -14,7 +14,7 @@ 257 ], "group_secret_key": "0d004150d27c3bf2a42f312683d35fac7394b1e9e318249c1bfe7f0795a83114", - "group_public_key": "02f37c34b66ced1fb51c34a90bdae006901f10625cc06c4f64663b0eae87d87b4f", + "verifying_key_key": "02f37c34b66ced1fb51c34a90bdae006901f10625cc06c4f64663b0eae87d87b4f", "message": "74657374", "share_polynomial_coefficients": [ "fbf85eadae3058ea14f19148bb72b45e4399c0b16028acaf0395c9b03c823579" diff --git a/frost-secp256k1/tests/helpers/vectors.json b/frost-secp256k1/tests/helpers/vectors.json index 983fae4..93bdee4 100644 --- a/frost-secp256k1/tests/helpers/vectors.json +++ b/frost-secp256k1/tests/helpers/vectors.json @@ -13,7 +13,7 @@ 3 ], "group_secret_key": "0d004150d27c3bf2a42f312683d35fac7394b1e9e318249c1bfe7f0795a83114", - "group_public_key": "02f37c34b66ced1fb51c34a90bdae006901f10625cc06c4f64663b0eae87d87b4f", + "verifying_key_key": "02f37c34b66ced1fb51c34a90bdae006901f10625cc06c4f64663b0eae87d87b4f", "message": "74657374", "share_polynomial_coefficients": [ "fbf85eadae3058ea14f19148bb72b45e4399c0b16028acaf0395c9b03c823579" diff --git a/frost-secp256k1/tests/recreation_tests.rs b/frost-secp256k1/tests/recreation_tests.rs index 6b390ac..6fdf8ea 100644 --- a/frost-secp256k1/tests/recreation_tests.rs +++ b/frost-secp256k1/tests/recreation_tests.rs @@ -54,7 +54,7 @@ fn check_secret_share_recreation() { let secret_share = samples::secret_share(); let identifier = secret_share.identifier(); - let value = secret_share.value(); + let value = secret_share.signing_share(); let commitment = secret_share.commitment(); let new_secret_share = SecretShare::new(*identifier, *value, commitment.clone()); @@ -68,9 +68,9 @@ fn check_key_package_recreation() { let key_package = samples::key_package(); let identifier = key_package.identifier(); - let signing_share = key_package.secret_share(); - let verifying_share = key_package.public(); - let verifying_key = key_package.group_public(); + let signing_share = key_package.signing_share(); + let verifying_share = key_package.verifying_share(); + let verifying_key = key_package.verifying_key(); let min_signers = key_package.min_signers(); let new_key_package = KeyPackage::new( @@ -89,10 +89,10 @@ fn check_key_package_recreation() { fn check_public_key_package_recreation() { let public_key_package = samples::public_key_package(); - let signer_pubkeys = public_key_package.signer_pubkeys(); - let verifying_key = public_key_package.group_public(); + let verifying_shares = public_key_package.verifying_shares(); + let verifying_key = public_key_package.verifying_key(); - let new_public_key_package = PublicKeyPackage::new(signer_pubkeys.clone(), *verifying_key); + let new_public_key_package = PublicKeyPackage::new(verifying_shares.clone(), *verifying_key); assert!(public_key_package == new_public_key_package); } @@ -115,7 +115,7 @@ fn check_round1_package_recreation() { fn check_round2_package_recreation() { let round2_package = samples::round2_package(); - let signing_share = round2_package.secret_share(); + let signing_share = round2_package.signing_share(); let new_round2_package = round2::Package::new(*signing_share); diff --git a/frost-secp256k1/tests/serde_tests.rs b/frost-secp256k1/tests/serde_tests.rs index 0b8ba92..533b7f5 100644 --- a/frost-secp256k1/tests/serde_tests.rs +++ b/frost-secp256k1/tests/serde_tests.rs @@ -212,7 +212,7 @@ fn check_secret_share_serialization() { let json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", + "signing_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", "commitment": [ "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" ], @@ -227,7 +227,7 @@ fn check_secret_share_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", + "signing_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", "commitment": [ "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" ], @@ -259,7 +259,7 @@ fn check_secret_share_serialization() { // Extra field let invalid_json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", + "signing_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", "commitment": [ "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" ], @@ -281,9 +281,9 @@ fn check_key_package_serialization() { let json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "secret_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", - "public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "group_public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "signing_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", + "verifying_share": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_key": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "min_signers": 2, "ciphersuite": "FROST(secp256k1, SHA-256)" }"#; @@ -296,9 +296,9 @@ fn check_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ "identifier": "0000000000000000000000000000000000000000000000000000000000000000", - "secret_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", - "public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "group_public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "signing_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", + "verifying_share": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_key": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "ciphersuite": "FROST(secp256k1, SHA-256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -307,8 +307,8 @@ fn check_key_package_serialization() { let invalid_json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", "foo": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", - "public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "group_public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_share": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_key": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "ciphersuite": "FROST(secp256k1, SHA-256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -316,8 +316,8 @@ fn check_key_package_serialization() { // Missing field let invalid_json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "group_public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_share": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_key": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "ciphersuite": "FROST(secp256k1, SHA-256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); @@ -325,9 +325,9 @@ fn check_key_package_serialization() { // Extra field let invalid_json = r#"{ "identifier": "000000000000000000000000000000000000000000000000000000000000002a", - "secret_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", - "public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "group_public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "signing_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", + "verifying_share": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_key": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "extra_field": 1, "ciphersuite": "FROST(secp256k1, SHA-256)" }"#; @@ -345,10 +345,10 @@ fn check_public_key_package_serialization() { assert!(public_key_package == decoded_public_key_package); let json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "000000000000000000000000000000000000000000000000000000000000002a": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" }, - "group_public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_key": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "ciphersuite": "FROST(secp256k1, SHA-256)" }"#; let decoded_public_key_package: PublicKeyPackage = serde_json::from_str(json).unwrap(); @@ -359,17 +359,17 @@ fn check_public_key_package_serialization() { // Invalid identifier let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "0000000000000000000000000000000000000000000000000000000000000000": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" }, - "group_public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_key": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "ciphersuite": "FROST(secp256k1, SHA-256)" }"#; assert!(serde_json::from_str::(invalid_json).is_err()); // Invalid field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "000000000000000000000000000000000000000000000000000000000000002a": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" }, "foo": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", @@ -379,7 +379,7 @@ fn check_public_key_package_serialization() { // Missing field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "000000000000000000000000000000000000000000000000000000000000002a": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" }, "ciphersuite": "FROST(secp256k1, SHA-256)" @@ -388,10 +388,10 @@ fn check_public_key_package_serialization() { // Extra field let invalid_json = r#"{ - "signer_pubkeys": { + "verifying_shares": { "000000000000000000000000000000000000000000000000000000000000002a": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" }, - "group_public": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "verifying_key": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", "extra": 1, "ciphersuite": "FROST(secp256k1, SHA-256)" }"#; @@ -463,7 +463,7 @@ fn check_round2_package_serialization() { assert!(round2_package == decoded_round2_package); let json = r#"{ - "secret_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", + "signing_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", "ciphersuite": "FROST(secp256k1, SHA-256)" }"#; let decoded_round2_package: round2::Package = serde_json::from_str(json).unwrap(); @@ -487,7 +487,7 @@ fn check_round2_package_serialization() { // Extra field let invalid_json = r#"{ - "secret_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", + "signing_share": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81", "extra": 1, "ciphersuite": "FROST(secp256k1, SHA-256)" }"#;