diff --git a/book/src/dev/developer-guide.md b/book/src/dev/developer-guide.md index 37814aa..a1384c6 100644 --- a/book/src/dev/developer-guide.md +++ b/book/src/dev/developer-guide.md @@ -11,4 +11,4 @@ Test coverage checks are performed in the pipeline. This is cofigured here: `.github/workflows/coverage.yaml` To run these locally: 1. Install coverage tool by running `cargo install cargo-llvm-cov` -2. Run `cargo llvm-cov --ignore-filename-regex '.*(tests).*|benches.rs|gencode|helpers.rs` (you may be asked if you want to install `llvm-tools-preview`, if so type `Y`) +2. Run `cargo llvm-cov --ignore-filename-regex '.*(tests).*|benches.rs|gencode|helpers.rs'` (you may be asked if you want to install `llvm-tools-preview`, if so type `Y`) diff --git a/frost-core/src/keys.rs b/frost-core/src/keys.rs index 8542e7a..ffcbc11 100644 --- a/frost-core/src/keys.rs +++ b/frost-core/src/keys.rs @@ -894,12 +894,12 @@ pub(crate) fn generate_secret_shares( } for id in identifiers { - let value = evaluate_polynomial(*id, &coefficients); + let signing_share = SigningShare::from_coefficients(&coefficients, *id); secret_shares.push(SecretShare { header: Header::default(), identifier: *id, - signing_share: SigningShare(value), + signing_share, commitment: commitment.clone(), }); } diff --git a/frost-core/src/keys/dkg.rs b/frost-core/src/keys/dkg.rs index 09aca6c..fda6014 100644 --- a/frost-core/src/keys/dkg.rs +++ b/frost-core/src/keys/dkg.rs @@ -421,13 +421,13 @@ pub fn part2( // > Each P_i securely sends to each other participant P_ℓ a secret share (ℓ, f_i(ℓ)), // > deleting f_i and each share afterward except for (i, f_i(i)), // > which they keep for themselves. - let value = evaluate_polynomial(ell, &secret_package.coefficients); + let signing_share = SigningShare::from_coefficients(&secret_package.coefficients, ell); round2_packages.insert( ell, round2::Package { header: Header::default(), - signing_share: SigningShare(value), + signing_share, }, ); } diff --git a/frost-core/src/lib.rs b/frost-core/src/lib.rs index 2e4e81c..ba0ed59 100644 --- a/frost-core/src/lib.rs +++ b/frost-core/src/lib.rs @@ -185,15 +185,6 @@ impl BindingFactor where C: Ciphersuite, { - /// Deserializes [`BindingFactor`] from bytes. - pub fn deserialize( - bytes: <::Field as Field>::Serialization, - ) -> Result> { - <::Field>::deserialize(&bytes) - .map(|scalar| Self(scalar)) - .map_err(|e| e.into()) - } - /// Serializes [`BindingFactor`] to bytes. pub fn serialize(&self) -> <::Field as Field>::Serialization { <::Field>::serialize(&self.0) @@ -227,11 +218,6 @@ where Self(binding_factors) } - /// Return iterator through all factors. - pub fn iter(&self) -> impl Iterator, &BindingFactor)> { - self.0.iter() - } - /// Get the [`BindingFactor`] for the given identifier, or None if not found. pub fn get(&self, key: &Identifier) -> Option<&BindingFactor> { self.0.get(key) @@ -273,8 +259,11 @@ where fn from_hex>(hex: T) -> Result { let v: Vec = FromHex::from_hex(hex).map_err(|_| "invalid hex")?; + match v.try_into() { - Ok(bytes) => Self::deserialize(bytes).map_err(|_| "malformed scalar encoding"), + Ok(bytes) => <::Field>::deserialize(&bytes) + .map(|scalar| Self(scalar)) + .map_err(|_| "malformed scalar encoding"), Err(_) => Err("malformed scalar encoding"), } } diff --git a/frost-core/src/tests/vectors.rs b/frost-core/src/tests/vectors.rs index 699e04b..d38f7af 100644 --- a/frost-core/src/tests/vectors.rs +++ b/frost-core/src/tests/vectors.rs @@ -271,7 +271,7 @@ pub fn check_sign_with_test_vectors(json_vectors: &Value) { let binding_factor_list: frost::BindingFactorList = compute_binding_factor_list(&signing_package, &verifying_key, &[]); - for (identifier, binding_factor) in binding_factor_list.iter() { + for (identifier, binding_factor) in binding_factor_list.0.iter() { assert_eq!(*binding_factor, binding_factors[identifier]); }