|
7 | 7 | extern "C" { |
8 | 8 | #endif |
9 | 9 |
|
10 | | -/** A pointer to a function that applies hash function to a point |
| 10 | +/** A pointer to a function that hashes an EC point to obtain an ECDH secret |
11 | 11 | * |
12 | | - * Returns: 1 if a point was successfully hashed. 0 will cause ecdh to fail |
13 | | - * Out: output: pointer to an array to be filled by the function |
14 | | - * In: x: pointer to a 32-byte x coordinate |
15 | | - * y: pointer to a 32-byte y coordinate |
16 | | - * data: Arbitrary data pointer that is passed through |
| 12 | + * Returns: 1 if the point was successfully hashed. |
| 13 | + * 0 will cause secp256k1_ecdh to fail and return 0. |
| 14 | + * Other return values are not allowed, and the behaviour of |
| 15 | + * secp256k1_ecdh is undefined for other return values. |
| 16 | + * Out: output: pointer to an array to be filled by the function |
| 17 | + * In: x32: pointer to a 32-byte x coordinate |
| 18 | + * y32: pointer to a 32-byte y coordinate |
| 19 | + * data: arbitrary data pointer that is passed through |
17 | 20 | */ |
18 | 21 | typedef int (*secp256k1_ecdh_hash_function)( |
19 | 22 | unsigned char *output, |
20 | | - const unsigned char *x, |
21 | | - const unsigned char *y, |
| 23 | + const unsigned char *x32, |
| 24 | + const unsigned char *y32, |
22 | 25 | void *data |
23 | 26 | ); |
24 | 27 |
|
25 | 28 | /** An implementation of SHA256 hash function that applies to compressed public key. |
26 | 29 | * Populates the output parameter with 32 bytes. */ |
27 | 30 | SECP256K1_API extern const secp256k1_ecdh_hash_function secp256k1_ecdh_hash_function_sha256; |
28 | 31 |
|
29 | | -/** A default ecdh hash function (currently equal to secp256k1_ecdh_hash_function_sha256). |
| 32 | +/** A default ECDH hash function (currently equal to secp256k1_ecdh_hash_function_sha256). |
30 | 33 | * Populates the output parameter with 32 bytes. */ |
31 | 34 | SECP256K1_API extern const secp256k1_ecdh_hash_function secp256k1_ecdh_hash_function_default; |
32 | 35 |
|
33 | 36 | /** Compute an EC Diffie-Hellman secret in constant time |
| 37 | + * |
34 | 38 | * Returns: 1: exponentiation was successful |
35 | | - * 0: scalar was invalid (zero or overflow) |
| 39 | + * 0: scalar was invalid (zero or overflow) or hashfp returned 0 |
36 | 40 | * Args: ctx: pointer to a context object (cannot be NULL) |
37 | 41 | * Out: output: pointer to an array to be filled by hashfp |
38 | 42 | * In: pubkey: a pointer to a secp256k1_pubkey containing an |
39 | 43 | * initialized public key |
40 | 44 | * privkey: a 32-byte scalar with which to multiply the point |
41 | 45 | * hashfp: pointer to a hash function. If NULL, secp256k1_ecdh_hash_function_sha256 is used |
42 | 46 | * (in which case, 32 bytes will be written to output) |
43 | | - * data: Arbitrary data pointer that is passed through to hashfp |
| 47 | + * data: arbitrary data pointer that is passed through to hashfp |
44 | 48 | */ |
45 | 49 | SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdh( |
46 | 50 | const secp256k1_context* ctx, |
|
0 commit comments