Add `SignatureResponse` type (#107)

* add a new `FrostSignature` type

* change name to SignatureResponse
This commit is contained in:
Alfredo Garcia 2021-05-26 14:49:03 -03:00 committed by GitHub
parent c2c581b397
commit 0c7a10522d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 4 deletions

View File

@ -391,6 +391,10 @@ pub struct SigningPackage {
pub message: &'static [u8],
}
/// A representation of a single signature used in FROST structures and messages.
#[derive(Clone, Copy, Default)]
pub struct SignatureResponse(Scalar);
/// A participant's signature share, which the coordinator will use to aggregate
/// with all other signer's shares into the joint signature.
#[derive(Clone, Copy, Default)]
@ -398,7 +402,7 @@ pub struct SignatureShare {
/// Represents the participant index.
pub(crate) index: u8,
/// This participant's signature over the message.
pub(crate) signature: Scalar,
pub(crate) signature: SignatureResponse,
}
// Zeroizes `SignatureShare` to be the `Default` value on drop (when it goes out
@ -417,7 +421,7 @@ impl SignatureShare {
commitment: jubjub::ExtendedPoint,
challenge: Scalar,
) -> Result<(), &'static str> {
if (SpendAuth::basepoint() * self.signature)
if (SpendAuth::basepoint() * self.signature.0)
!= (commitment + pubkey.0 * challenge * lambda_i)
{
return Err("Invalid signature share");
@ -588,7 +592,7 @@ pub fn sign(
Ok(SignatureShare {
index: share_package.index,
signature,
signature: SignatureResponse(signature),
})
}
@ -643,7 +647,7 @@ pub fn aggregate(
// a plain Schnorr signature.
let mut z = Scalar::zero();
for signature_share in signing_shares {
z += signature_share.signature;
z += signature_share.signature.0;
}
Ok(Signature {