@@ -340,9 +340,10 @@ impl<H: Digest<OutputSize = U32> + Clone, NG: AddTag + NonceGen> Frost<H, NG> {
340
340
scalar_poly : ScalarPoly ,
341
341
) -> ( Vec < Scalar < Secret , Zero > > , Signature ) {
342
342
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
+ ) ;
346
347
347
348
let shares = ( 1 ..=KeyGen . point_polys . len ( ) )
348
349
. map ( |i| scalar_poly. eval ( i as u32 ) )
@@ -358,12 +359,12 @@ impl<H: Digest<OutputSize = U32> + Clone, NG: AddTag> Frost<H, NG> {
358
359
/// ## Return value
359
360
///
360
361
/// 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 {
362
363
let ( even_poly_point, _) = point_poly. 0 [ 0 ] . into_point_with_even_y ( ) ;
363
364
364
365
self . schnorr . verify (
365
366
& even_poly_point,
366
- Message :: < Public > :: plain ( "frost-pop" , b"" ) ,
367
+ Message :: < Public > :: plain ( "frost-pop" , & KeyGen . keygen_id . to_bytes ( ) ) ,
367
368
& pop,
368
369
)
369
370
}
@@ -460,7 +461,7 @@ impl<H: Digest<OutputSize = U32> + Clone, NG: AddTag> Frost<H, NG> {
460
461
. zip ( proofs_of_possession)
461
462
. enumerate ( )
462
463
{
463
- if !self . verify_pop ( poly, pop) {
464
+ if !self . verify_pop ( & KeyGen , poly, pop) {
464
465
return Err ( FinishKeyGenError :: InvalidProofOfPossession ( i) ) ;
465
466
}
466
467
}
0 commit comments