77#ifndef SECP256K1_MODULE_ECDH_TESTS_H
88#define SECP256K1_MODULE_ECDH_TESTS_H
99
10- int ecdh_hash_function_test_fail (unsigned char * output , const unsigned char * x , const unsigned char * y ) {
10+ int ecdh_hash_function_test_fail (unsigned char * output , const unsigned char * x , const unsigned char * y , void * data ) {
1111 (void )output ;
1212 (void )x ;
1313 (void )y ;
14+ (void )data ;
1415 return 0 ;
1516}
1617
17- int ecdh_hash_function_custom (unsigned char * output , const unsigned char * x , const unsigned char * y ) {
18+ int ecdh_hash_function_custom (unsigned char * output , const unsigned char * x , const unsigned char * y , void * data ) {
19+ (void )data ;
1820 /* Save x and y as uncompressed public key */
1921 output [0 ] = 0x04 ;
2022 memcpy (output + 1 , x , 32 );
@@ -36,15 +38,15 @@ void test_ecdh_api(void) {
3638 CHECK (secp256k1_ec_pubkey_create (tctx , & point , s_one ) == 1 );
3739
3840 /* Check all NULLs are detected */
39- CHECK (secp256k1_ecdh (tctx , res , & point , s_one , NULL ) == 1 );
41+ CHECK (secp256k1_ecdh (tctx , res , & point , s_one , NULL , NULL ) == 1 );
4042 CHECK (ecount == 0 );
41- CHECK (secp256k1_ecdh (tctx , NULL , & point , s_one , NULL ) == 0 );
43+ CHECK (secp256k1_ecdh (tctx , NULL , & point , s_one , NULL , NULL ) == 0 );
4244 CHECK (ecount == 1 );
43- CHECK (secp256k1_ecdh (tctx , res , NULL , s_one , NULL ) == 0 );
45+ CHECK (secp256k1_ecdh (tctx , res , NULL , s_one , NULL , NULL ) == 0 );
4446 CHECK (ecount == 2 );
45- CHECK (secp256k1_ecdh (tctx , res , & point , NULL , NULL ) == 0 );
47+ CHECK (secp256k1_ecdh (tctx , res , & point , NULL , NULL , NULL ) == 0 );
4648 CHECK (ecount == 3 );
47- CHECK (secp256k1_ecdh (tctx , res , & point , s_one , NULL ) == 1 );
49+ CHECK (secp256k1_ecdh (tctx , res , & point , s_one , NULL , NULL ) == 1 );
4850 CHECK (ecount == 3 );
4951
5052 /* Cleanup */
@@ -74,14 +76,14 @@ void test_ecdh_generator_basepoint(void) {
7476 CHECK (secp256k1_ec_pubkey_create (ctx , & point [1 ], s_b32 ) == 1 );
7577
7678 /* compute using ECDH function with custom hash function */
77- CHECK (secp256k1_ecdh (ctx , output_ecdh , & point [0 ], s_b32 , ecdh_hash_function_custom ) == 1 );
79+ CHECK (secp256k1_ecdh (ctx , output_ecdh , & point [0 ], s_b32 , ecdh_hash_function_custom , NULL ) == 1 );
7880 /* compute "explicitly" */
7981 CHECK (secp256k1_ec_pubkey_serialize (ctx , point_ser , & point_ser_len , & point [1 ], SECP256K1_EC_UNCOMPRESSED ) == 1 );
8082 /* compare */
8183 CHECK (memcmp (output_ecdh , point_ser , 65 ) == 0 );
8284
8385 /* compute using ECDH function with default hash function */
84- CHECK (secp256k1_ecdh (ctx , output_ecdh , & point [0 ], s_b32 , NULL ) == 1 );
86+ CHECK (secp256k1_ecdh (ctx , output_ecdh , & point [0 ], s_b32 , NULL , NULL ) == 1 );
8587 /* compute "explicitly" */
8688 CHECK (secp256k1_ec_pubkey_serialize (ctx , point_ser , & point_ser_len , & point [1 ], SECP256K1_EC_COMPRESSED ) == 1 );
8789 secp256k1_sha256_initialize (& sha );
@@ -111,14 +113,14 @@ void test_bad_scalar(void) {
111113 CHECK (secp256k1_ec_pubkey_create (ctx , & point , s_rand ) == 1 );
112114
113115 /* Try to multiply it by bad values */
114- CHECK (secp256k1_ecdh (ctx , output , & point , s_zero , NULL ) == 0 );
115- CHECK (secp256k1_ecdh (ctx , output , & point , s_overflow , NULL ) == 0 );
116+ CHECK (secp256k1_ecdh (ctx , output , & point , s_zero , NULL , NULL ) == 0 );
117+ CHECK (secp256k1_ecdh (ctx , output , & point , s_overflow , NULL , NULL ) == 0 );
116118 /* ...and a good one */
117119 s_overflow [31 ] -= 1 ;
118- CHECK (secp256k1_ecdh (ctx , output , & point , s_overflow , NULL ) == 1 );
120+ CHECK (secp256k1_ecdh (ctx , output , & point , s_overflow , NULL , NULL ) == 1 );
119121
120122 /* Hash function failure results in ecdh failure */
121- CHECK (secp256k1_ecdh (ctx , output , & point , s_overflow , ecdh_hash_function_test_fail ) == 0 );
123+ CHECK (secp256k1_ecdh (ctx , output , & point , s_overflow , ecdh_hash_function_test_fail , NULL ) == 0 );
122124}
123125
124126void run_ecdh_tests (void ) {
0 commit comments