@@ -87,7 +87,7 @@ pub struct UserSecretKey {
8787pub const SIG_BYTES : usize = 96 ;
8888
8989/// Signature.
90- #[ derive( Debug , Clone ) ]
90+ #[ derive( Debug , Clone , PartialEq , Eq ) ]
9191#[ cfg_attr( feature = "serde" , derive( Serialize , Deserialize ) ) ]
9292pub struct Signature {
9393 ga : RistrettoPoint ,
@@ -228,7 +228,7 @@ fn h_helper(gr: &RistrettoPoint, id: &Identity) -> Scalar {
228228 let mut h = Sha3_512 :: new ( ) ;
229229
230230 Digest :: update ( & mut h, gr. compress ( ) . as_bytes ( ) ) ;
231- Digest :: update ( & mut h, & id. 0 ) ;
231+ Digest :: update ( & mut h, id. 0 ) ;
232232
233233 Scalar :: from_hash ( h)
234234}
@@ -447,6 +447,19 @@ mod tests {
447447 . verify( & pk_recovered, & sig_recovered, & id) ) ;
448448 }
449449
450+ #[ test]
451+ fn test_signature_eq ( ) {
452+ let ( _, usk, _) = default_setup ( ) ;
453+ let message = b"message under test" ;
454+
455+ let sig = Signer :: new ( ) . chain ( message) . sign ( & usk, & mut OsRng ) ;
456+ let sig_clone = sig. clone ( ) ;
457+ assert_eq ! ( sig, sig_clone) ;
458+
459+ let sig_other = Signer :: new ( ) . chain ( message) . sign ( & usk, & mut OsRng ) ;
460+ assert_ne ! ( sig, sig_other) ;
461+ }
462+
450463 #[ test]
451464 fn test_byte_roundtrip_public_key ( ) {
452465 let ( pk, _) = setup ( & mut OsRng ) ;
0 commit comments