7
7
#ifndef SECP256K1_MODULE_ECDH_TESTS_H
8
8
#define SECP256K1_MODULE_ECDH_TESTS_H
9
9
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 ) {
11
11
(void )output ;
12
12
(void )x ;
13
13
(void )y ;
14
+ (void )data ;
14
15
return 0 ;
15
16
}
16
17
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 ;
18
20
/* Save x and y as uncompressed public key */
19
21
output [0 ] = 0x04 ;
20
22
memcpy (output + 1 , x , 32 );
@@ -36,15 +38,15 @@ void test_ecdh_api(void) {
36
38
CHECK (secp256k1_ec_pubkey_create (tctx , & point , s_one ) == 1 );
37
39
38
40
/* 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 );
40
42
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 );
42
44
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 );
44
46
CHECK (ecount == 2 );
45
- CHECK (secp256k1_ecdh (tctx , res , & point , NULL , NULL ) == 0 );
47
+ CHECK (secp256k1_ecdh (tctx , res , & point , NULL , NULL , NULL ) == 0 );
46
48
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 );
48
50
CHECK (ecount == 3 );
49
51
50
52
/* Cleanup */
@@ -74,14 +76,14 @@ void test_ecdh_generator_basepoint(void) {
74
76
CHECK (secp256k1_ec_pubkey_create (ctx , & point [1 ], s_b32 ) == 1 );
75
77
76
78
/* 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 );
78
80
/* compute "explicitly" */
79
81
CHECK (secp256k1_ec_pubkey_serialize (ctx , point_ser , & point_ser_len , & point [1 ], SECP256K1_EC_UNCOMPRESSED ) == 1 );
80
82
/* compare */
81
83
CHECK (memcmp (output_ecdh , point_ser , 65 ) == 0 );
82
84
83
85
/* 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 );
85
87
/* compute "explicitly" */
86
88
CHECK (secp256k1_ec_pubkey_serialize (ctx , point_ser , & point_ser_len , & point [1 ], SECP256K1_EC_COMPRESSED ) == 1 );
87
89
secp256k1_sha256_initialize (& sha );
@@ -111,14 +113,14 @@ void test_bad_scalar(void) {
111
113
CHECK (secp256k1_ec_pubkey_create (ctx , & point , s_rand ) == 1 );
112
114
113
115
/* 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 );
116
118
/* ...and a good one */
117
119
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 );
119
121
120
122
/* 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 );
122
124
}
123
125
124
126
void run_ecdh_tests (void ) {
0 commit comments