@@ -58,6 +58,7 @@ void frost_simple_test(void) {
5858 int i , j ;
5959 unsigned char id [5 ][33 ];
6060 const unsigned char * id_ptr [5 ];
61+ const unsigned char * pok_ptr [5 ];
6162
6263 for (i = 0 ; i < 5 ; i ++ ) {
6364 secp256k1_testrand256 (buf [i ]);
@@ -66,6 +67,7 @@ void frost_simple_test(void) {
6667 pubnonce_ptr [i ] = & pubnonce [i ];
6768 partial_sig_ptr [i ] = & partial_sig [i ];
6869 id_ptr [i ] = id [i ];
70+ pok_ptr [i ] = pok [i ];
6971
7072 CHECK (frost_create_pk (id [i ], sk [i ]));
7173 }
@@ -78,7 +80,7 @@ void frost_simple_test(void) {
7880 CHECK (secp256k1_frost_share_verify (CTX , 3 , id_ptr [i ], share_ptr [j ], & vss_ptr [j ]) == 1 );
7981 CHECK (secp256k1_frost_compute_pubshare (CTX , & pubshare [j ], 3 , id_ptr [j ], vss_ptr , 5 ) == 1 );
8082 }
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 );
8284 }
8385
8486 secp256k1_testrand256 (msg );
@@ -177,6 +179,8 @@ void frost_api_tests(void) {
177179 int i , j ;
178180 unsigned char id [5 ][33 ];
179181 const unsigned char * id_ptr [5 ];
182+ const unsigned char * pok_ptr [5 ];
183+ const unsigned char * invalid_pok_ptr [5 ];
180184
181185 /** setup **/
182186 memset (max64 , 0xff , sizeof (max64 ));
@@ -205,13 +209,16 @@ void frost_api_tests(void) {
205209 partial_sig_ptr [i ] = & partial_sig [i ];
206210 invalid_partial_sig_ptr [i ] = & partial_sig [i ];
207211 id_ptr [i ] = id [i ];
212+ pok_ptr [i ] = pok [i ];
213+ invalid_pok_ptr [i ] = pok [i ];
208214 secp256k1_testrand256 (session_id [i ]);
209215 secp256k1_testrand256 (seed [i ]);
210216 secp256k1_testrand256 (sk [i ]);
211217 CHECK (frost_create_pk (id [i ], sk [i ]));
212218 }
213219 invalid_pubnonce_ptr [0 ] = & invalid_pubnonce ;
214220 invalid_partial_sig_ptr [0 ] = & invalid_partial_sig ;
221+ invalid_pok_ptr [0 ] = max64 ;
215222 for (i = 0 ; i < 5 ; i ++ ) {
216223 for (j = 0 ; j < 3 ; j ++ ) {
217224 invalid_vss_commitment [i ][j ] = invalid_vss_pk ;
@@ -257,41 +264,48 @@ void frost_api_tests(void) {
257264 invalid_share_ptr [j ] = & shares [j ][i ];
258265 }
259266 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 ]));
264273 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 ]));
266284 CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
267285 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 ));
269287 CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
270288 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 ]));
276290 CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
277291 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 ]));
279293 CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
280294 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 ]));
282296 CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
283297 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 ]));
285299 CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
286300 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 ]));
288302 CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
289303 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 ]));
291305 CHECK (frost_memcmp_and_randomize (agg_share [i ].data , zeros68 , sizeof (agg_share [i ].data )) == 0 );
292306 CHECK (frost_memcmp_and_randomize (agg_pk .data , zeros68 , sizeof (agg_pk .data )) == 0 );
293307
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 );
295309 }
296310
297311 /* Share verification */
@@ -701,13 +715,15 @@ void frost_tweak_test(void) {
701715 int i , j ;
702716 unsigned char id [5 ][33 ];
703717 const unsigned char * id_ptr [5 ];
718+ const unsigned char * pok_ptr [5 ];
704719
705720 /* Key Setup */
706721 for (i = 0 ; i < 5 ; i ++ ) {
707722 secp256k1_testrand256 (seed [i ]);
708723 secp256k1_testrand256 (sk [i ]);
709724 vss_ptr [i ] = vss_commitment [i ];
710725 id_ptr [i ] = id [i ];
726+ pok_ptr [i ] = pok [i ];
711727
712728 CHECK (frost_create_pk (id [i ], sk [i ]));
713729 }
@@ -720,7 +736,7 @@ void frost_tweak_test(void) {
720736 CHECK (secp256k1_frost_share_verify (CTX , 3 , id_ptr [i ], share_ptr [j ], & vss_ptr [j ]) == 1 );
721737 CHECK (secp256k1_frost_compute_pubshare (CTX , & pubshare [j ], 3 , id_ptr [j ], vss_ptr , 5 ) == 1 );
722738 }
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 );
724740 }
725741
726742 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
768784 secp256k1_frost_share shares [5 ][5 ];
769785 const secp256k1_frost_share * share_ptr [5 ];
770786 int i , j ;
787+ const unsigned char * pok_ptr [5 ];
771788
772789 for (i = 0 ; i < 5 ; i ++ ) {
773790 secp256k1_testrand256 (seed [i ]);
774791 vss_ptr [i ] = vss_commitment [i ];
792+ pok_ptr [i ] = pok [i ];
775793 }
776794 for (i = 0 ; i < 5 ; i ++ ) {
777795 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
780798 for (j = 0 ; j < 5 ; j ++ ) {
781799 share_ptr [j ] = & shares [j ][i ];
782800 }
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 );
784802 }
785803}
786804
0 commit comments