@@ -340,9 +340,10 @@ impl<H: Digest<OutputSize = U32> + Clone, NG: AddTag + NonceGen> Frost<H, NG> {
340340 scalar_poly : ScalarPoly ,
341341 ) -> ( Vec < Scalar < Secret , Zero > > , Signature ) {
342342 let key_pair = self . schnorr . new_keypair ( scalar_poly. 0 [ 0 ] . clone ( ) ) ;
343- let pop = self
344- . schnorr
345- . sign ( & key_pair, Message :: < Public > :: plain ( "frost-pop" , b"" ) ) ;
343+ let pop = self . schnorr . sign (
344+ & key_pair,
345+ Message :: < Public > :: plain ( "frost-pop" , & KeyGen . keygen_id . to_bytes ( ) ) ,
346+ ) ;
346347
347348 let shares = ( 1 ..=KeyGen . point_polys . len ( ) )
348349 . map ( |i| scalar_poly. eval ( i as u32 ) )
@@ -358,12 +359,12 @@ impl<H: Digest<OutputSize = U32> + Clone, NG: AddTag> Frost<H, NG> {
358359 /// ## Return value
359360 ///
360361 /// Returns `bool` true if the proof of possession matches this point poly,
361- fn verify_pop ( & self , point_poly : & PointPoly , pop : Signature ) -> bool {
362+ fn verify_pop ( & self , KeyGen : & KeyGen , point_poly : & PointPoly , pop : Signature ) -> bool {
362363 let ( even_poly_point, _) = point_poly. 0 [ 0 ] . into_point_with_even_y ( ) ;
363364
364365 self . schnorr . verify (
365366 & even_poly_point,
366- Message :: < Public > :: plain ( "frost-pop" , b"" ) ,
367+ Message :: < Public > :: plain ( "frost-pop" , & KeyGen . keygen_id . to_bytes ( ) ) ,
367368 & pop,
368369 )
369370 }
@@ -460,7 +461,7 @@ impl<H: Digest<OutputSize = U32> + Clone, NG: AddTag> Frost<H, NG> {
460461 . zip ( proofs_of_possession)
461462 . enumerate ( )
462463 {
463- if !self . verify_pop ( poly, pop) {
464+ if !self . verify_pop ( & KeyGen , poly, pop) {
464465 return Err ( FinishKeyGenError :: InvalidProofOfPossession ( i) ) ;
465466 }
466467 }
0 commit comments