11use std:: { collections:: HashMap , fmt:: Display , hash:: Hash , str:: FromStr } ;
22
33use anyhow:: anyhow;
4- use blake2:: digest:: { Digest , FixedOutput } ;
54use serde:: { Deserialize , Serialize } ;
65
76use crate :: {
8- Parameters , StmError , StmResult , membership_commitment:: MerkleBatchPath ,
7+ MembershipDigest , Parameters , StmError , StmResult , membership_commitment:: MerkleBatchPath ,
98 proof_system:: ConcatenationProof ,
109} ;
1110
@@ -47,9 +46,7 @@ impl AggregateSignatureType {
4746 }
4847}
4948
50- impl < D : Clone + Digest + FixedOutput + Send + Sync > From < & AggregateSignature < D > >
51- for AggregateSignatureType
52- {
49+ impl < D : MembershipDigest > From < & AggregateSignature < D > > for AggregateSignatureType {
5350 fn from ( aggr_sig : & AggregateSignature < D > ) -> Self {
5451 match aggr_sig {
5552 AggregateSignature :: Concatenation ( _) => AggregateSignatureType :: Concatenation ,
@@ -85,10 +82,10 @@ impl Display for AggregateSignatureType {
8582/// An STM aggregate signature.
8683#[ derive( Debug , Clone , Serialize , Deserialize ) ]
8784#[ serde( bound(
88- serialize = "MerkleBatchPath<D>: Serialize" ,
89- deserialize = "MerkleBatchPath<D>: Deserialize<'de>"
85+ serialize = "MerkleBatchPath<D::ConcatenationHash >: Serialize" ,
86+ deserialize = "MerkleBatchPath<D::ConcatenationHash >: Deserialize<'de>"
9087) ) ]
91- pub enum AggregateSignature < D : Clone + Digest + FixedOutput + Send + Sync > {
88+ pub enum AggregateSignature < D : MembershipDigest > {
9289 /// A future proof system.
9390 #[ cfg( feature = "future_snark" ) ]
9491 Future ,
@@ -101,7 +98,7 @@ pub enum AggregateSignature<D: Clone + Digest + FixedOutput + Send + Sync> {
10198 Concatenation ( ConcatenationProof < D > ) ,
10299}
103100
104- impl < D : Clone + Digest + FixedOutput + Send + Sync > AggregateSignature < D > {
101+ impl < D : MembershipDigest + Clone > AggregateSignature < D > {
105102 /// Verify an aggregate signature
106103 pub fn verify (
107104 & self ,
@@ -219,17 +216,17 @@ mod tests {
219216 }
220217
221218 mod aggregate_signature_golden_concatenation {
222- use blake2:: { Blake2b , digest:: consts:: U32 } ;
223219 use rand_chacha:: ChaCha20Rng ;
224220 use rand_core:: SeedableRng ;
225221
226222 use super :: { AggregateSignature , AggregateSignatureType } ;
227223 use crate :: {
228224 Clerk , ClosedKeyRegistration , KeyRegistration , Parameters , Signer ,
225+ membership_commitment:: CustomMembershipDigest ,
229226 signature_scheme:: { BlsSigningKey , BlsVerificationKeyProofOfPossession } ,
230227 } ;
231228
232- type D = Blake2b < U32 > ;
229+ type D = CustomMembershipDigest ;
233230
234231 const GOLDEN_JSON : & str = r#"
235232 {
0 commit comments