@@ -58,6 +58,7 @@ void frost_simple_test(void) {
58
58
int i , j ;
59
59
unsigned char id [5 ][33 ];
60
60
const unsigned char * id_ptr [5 ];
61
+ const unsigned char * pok_ptr [5 ];
61
62
62
63
for (i = 0 ; i < 5 ; i ++ ) {
63
64
secp256k1_testrand256 (buf [i ]);
@@ -66,6 +67,7 @@ void frost_simple_test(void) {
66
67
pubnonce_ptr [i ] = & pubnonce [i ];
67
68
partial_sig_ptr [i ] = & partial_sig [i ];
68
69
id_ptr [i ] = id [i ];
70
+ pok_ptr [i ] = pok [i ];
69
71
70
72
CHECK (frost_create_pk (id [i ], sk [i ]));
71
73
}
@@ -78,7 +80,7 @@ void frost_simple_test(void) {
78
80
CHECK (secp256k1_frost_share_verify (CTX , 3 , id_ptr [i ], share_ptr [j ], & vss_ptr [j ]) == 1 );
79
81
CHECK (secp256k1_frost_compute_pubshare (CTX , & pubshare [j ], 3 , id_ptr [j ], vss_ptr , 5 ) == 1 );
80
82
}
81
- CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , 5 , 3 , id_ptr [i ]) == 1 );
83
+ CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , pok_ptr , 5 , 3 , id_ptr [i ]) == 1 );
82
84
}
83
85
84
86
secp256k1_testrand256 (msg );
@@ -177,6 +179,8 @@ void frost_api_tests(void) {
177
179
int i , j ;
178
180
unsigned char id [5 ][33 ];
179
181
const unsigned char * id_ptr [5 ];
182
+ const unsigned char * pok_ptr [5 ];
183
+ const unsigned char * invalid_pok_ptr [5 ];
180
184
181
185
/** setup **/
182
186
memset (max64 , 0xff , sizeof (max64 ));
@@ -205,13 +209,16 @@ void frost_api_tests(void) {
205
209
partial_sig_ptr [i ] = & partial_sig [i ];
206
210
invalid_partial_sig_ptr [i ] = & partial_sig [i ];
207
211
id_ptr [i ] = id [i ];
212
+ pok_ptr [i ] = pok [i ];
213
+ invalid_pok_ptr [i ] = pok [i ];
208
214
secp256k1_testrand256 (session_id [i ]);
209
215
secp256k1_testrand256 (seed [i ]);
210
216
secp256k1_testrand256 (sk [i ]);
211
217
CHECK (frost_create_pk (id [i ], sk [i ]));
212
218
}
213
219
invalid_pubnonce_ptr [0 ] = & invalid_pubnonce ;
214
220
invalid_partial_sig_ptr [0 ] = & invalid_partial_sig ;
221
+ invalid_pok_ptr [0 ] = max64 ;
215
222
for (i = 0 ; i < 5 ; i ++ ) {
216
223
for (j = 0 ; j < 3 ; j ++ ) {
217
224
invalid_vss_commitment [i ][j ] = invalid_vss_pk ;
@@ -257,41 +264,48 @@ void frost_api_tests(void) {
257
264
invalid_share_ptr [j ] = & shares [j ][i ];
258
265
}
259
266
invalid_share_ptr [0 ] = & invalid_share ;
260
-
261
- CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , 5 , 3 , id_ptr [i ]) == 1 );
262
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , NULL , & agg_pk , share_ptr , vss_ptr , 5 , 3 , id_ptr [i ]));
263
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], NULL , share_ptr , vss_ptr , 5 , 3 , id_ptr [i ]));
267
+ CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , pok_ptr , 5 , 3 , id_ptr [i ]) == 1 );
268
+ CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , invalid_pok_ptr , 5 , 3 , id_ptr [i ]) == 0 );
269
+ CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
270
+ CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
271
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , NULL , & agg_pk , share_ptr , vss_ptr , pok_ptr , 5 , 3 , id_ptr [i ]));
272
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], NULL , share_ptr , vss_ptr , pok_ptr , 5 , 3 , id_ptr [i ]));
264
273
CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
265
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , NULL , vss_ptr , 5 , 3 , id_ptr [i ]));
274
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , NULL , vss_ptr , pok_ptr , 5 , 3 , id_ptr [i ]));
275
+ CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
276
+ CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
277
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , NULL , pok_ptr , 5 , 3 , id_ptr [i ]));
278
+ CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
279
+ CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
280
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , invalid_vss_ptr , pok_ptr , 5 , 3 , id_ptr [i ]));
281
+ CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
282
+ CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
283
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , NULL , 5 , 3 , id_ptr [i ]));
266
284
CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
267
285
CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
268
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , NULL , 5 , 3 , id_ptr [ i ] ));
286
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , pok_ptr , 5 , 3 , NULL ));
269
287
CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
270
288
CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
271
- /* TODO: fix test */
272
- /* CHECK_ILLEGAL(CTX, secp256k1_frost_share_agg(CTX, &agg_share[i], &agg_pk, share_ptr, invalid_vss_ptr, 5, 3, id_ptr[i])); */
273
- /* CHECK(frost_memcmp_and_randomize(agg_share[i].data, zeros68, sizeof(agg_share[i].data)) == 0); */
274
- /* CHECK(frost_memcmp_and_randomize(agg_pk.data, zeros68, sizeof(agg_pk.data)) == 0); */
275
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , 5 , 3 , NULL ));
289
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , invalid_share_ptr , vss_ptr , pok_ptr , 5 , 3 , id_ptr [i ]));
276
290
CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
277
291
CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
278
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , invalid_share_ptr , vss_ptr , 5 , 3 , id_ptr [i ]));
292
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , pok_ptr , 0 , 3 , id_ptr [i ]));
279
293
CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
280
294
CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
281
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , 0 , 3 , id_ptr [i ]));
295
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , NULL , vss_ptr , pok_ptr , 0 , 3 , id_ptr [i ]));
282
296
CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
283
297
CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
284
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , NULL , vss_ptr , 0 , 3 , id_ptr [i ]));
298
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , pok_ptr , 5 , 0 , id_ptr [i ]));
285
299
CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
286
300
CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
287
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , 5 , 0 , id_ptr [i ]));
301
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , NULL , pok_ptr , 5 , 0 , id_ptr [i ]));
288
302
CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
289
303
CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
290
- CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , NULL , 5 , 0 , id_ptr [i ]));
304
+ CHECK_ILLEGAL (CTX , secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , NULL , 5 , 0 , id_ptr [i ]));
291
305
CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
292
306
CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
293
307
294
- CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , 5 , 3 , id_ptr [i ]) == 1 );
308
+ CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], & agg_pk , share_ptr , vss_ptr , pok_ptr , 5 , 3 , id_ptr [i ]) == 1 );
295
309
}
296
310
297
311
/* Share verification */
@@ -701,13 +715,15 @@ void frost_tweak_test(void) {
701
715
int i , j ;
702
716
unsigned char id [5 ][33 ];
703
717
const unsigned char * id_ptr [5 ];
718
+ const unsigned char * pok_ptr [5 ];
704
719
705
720
/* Key Setup */
706
721
for (i = 0 ; i < 5 ; i ++ ) {
707
722
secp256k1_testrand256 (seed [i ]);
708
723
secp256k1_testrand256 (sk [i ]);
709
724
vss_ptr [i ] = vss_commitment [i ];
710
725
id_ptr [i ] = id [i ];
726
+ pok_ptr [i ] = pok [i ];
711
727
712
728
CHECK (frost_create_pk (id [i ], sk [i ]));
713
729
}
@@ -720,7 +736,7 @@ void frost_tweak_test(void) {
720
736
CHECK (secp256k1_frost_share_verify (CTX , 3 , id_ptr [i ], share_ptr [j ], & vss_ptr [j ]) == 1 );
721
737
CHECK (secp256k1_frost_compute_pubshare (CTX , & pubshare [j ], 3 , id_ptr [j ], vss_ptr , 5 ) == 1 );
722
738
}
723
- CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], & P_xonly [0 ], share_ptr , vss_ptr , 5 , 3 , id_ptr [i ]) == 1 );
739
+ CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], & P_xonly [0 ], share_ptr , vss_ptr , pok_ptr , 5 , 3 , id_ptr [i ]) == 1 );
724
740
}
725
741
726
742
frost_tweak_test_helper (& P_xonly [0 ], & agg_share [0 ], & agg_share [1 ], & agg_share [2 ], NULL , id_ptr , & pubshare [0 ], & pubshare [1 ], & pubshare [2 ]);
@@ -768,10 +784,12 @@ void frost_dkg_test_helper(secp256k1_frost_share *agg_share, secp256k1_xonly_pub
768
784
secp256k1_frost_share shares [5 ][5 ];
769
785
const secp256k1_frost_share * share_ptr [5 ];
770
786
int i , j ;
787
+ const unsigned char * pok_ptr [5 ];
771
788
772
789
for (i = 0 ; i < 5 ; i ++ ) {
773
790
secp256k1_testrand256 (seed [i ]);
774
791
vss_ptr [i ] = vss_commitment [i ];
792
+ pok_ptr [i ] = pok [i ];
775
793
}
776
794
for (i = 0 ; i < 5 ; i ++ ) {
777
795
CHECK (secp256k1_frost_shares_gen (CTX , shares [i ], vss_commitment [i ], pok [i ], seed [i ], 3 , 5 , ids33 ) == 1 );
@@ -780,7 +798,7 @@ void frost_dkg_test_helper(secp256k1_frost_share *agg_share, secp256k1_xonly_pub
780
798
for (j = 0 ; j < 5 ; j ++ ) {
781
799
share_ptr [j ] = & shares [j ][i ];
782
800
}
783
- CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], agg_pk , share_ptr , vss_ptr , 5 , 3 , ids33 [i ]) == 1 );
801
+ CHECK (secp256k1_frost_share_agg (CTX , & agg_share [i ], agg_pk , share_ptr , vss_ptr , pok_ptr , 5 , 3 , ids33 [i ]) == 1 );
784
802
}
785
803
}
786
804
0 commit comments