7#ifndef SECP256K1_MODULE_ECDH_TESTS_H
8#define SECP256K1_MODULE_ECDH_TESTS_H
23 memcpy(output + 33, y, 32);
31 unsigned char res[32];
32 unsigned char s_one[32] = { 0 };
57 unsigned char s_one[32] = { 0 };
63 for (i = 0; i < 2 *
count; ++i) {
65 unsigned char s_b32[32];
66 unsigned char output_ecdh[65];
67 unsigned char output_ser[32];
68 unsigned char point_ser[65];
69 size_t point_ser_len =
sizeof(point_ser);
73 secp256k1_scalar_get_b32(s_b32, &
s);
83 CHECK(secp256k1_memcmp_var(output_ecdh, point_ser, 65) == 0);
89 secp256k1_sha256_initialize(&sha);
90 secp256k1_sha256_write(&sha, point_ser, point_ser_len);
91 secp256k1_sha256_finalize(&sha, output_ser);
93 CHECK(secp256k1_memcmp_var(output_ecdh, output_ser, 32) == 0);
98 unsigned char s_zero[32] = { 0 };
99 unsigned char s_overflow[32] = {
100 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
101 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
102 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b,
103 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41
105 unsigned char s_rand[32] = { 0 };
106 unsigned char output[32];
112 secp256k1_scalar_get_b32(s_rand, &rand);
131 unsigned char s_inv[32];
132 unsigned char out[32];
133 unsigned char out_inv[32];
134 unsigned char out_base[32];
137 unsigned char s_one[32] = { 0 };
142 for (i = 0; i < 2 *
count; i++) {
144 secp256k1_scalar_get_b32(
s, &rand);
145 secp256k1_scalar_inverse(&rand, &rand);
146 secp256k1_scalar_get_b32(s_inv, &rand);
150 CHECK(secp256k1_memcmp_var(out, out_base, 32) == 0);
154 CHECK(secp256k1_memcmp_var(out_inv, out_base, 32) == 0);
int ecdh_hash_function_custom(unsigned char *output, const unsigned char *x, const unsigned char *y, void *data)
void test_bad_scalar(void)
int ecdh_hash_function_test_fail(unsigned char *output, const unsigned char *x, const unsigned char *y, void *data)
void test_result_basepoint(void)
void run_ecdh_tests(void)
void test_ecdh_generator_basepoint(void)
SECP256K1_API void secp256k1_context_destroy(secp256k1_context *ctx) SECP256K1_ARG_NONNULL(1)
#define SECP256K1_CONTEXT_SIGN
SECP256K1_API int secp256k1_ec_pubkey_serialize(const secp256k1_context *ctx, unsigned char *output, size_t *outputlen, const secp256k1_pubkey *pubkey, unsigned int flags) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4)
SECP256K1_API void secp256k1_context_set_error_callback(secp256k1_context *ctx, void(*fun)(const char *message, void *data), const void *data) SECP256K1_ARG_NONNULL(1)
SECP256K1_API secp256k1_context * secp256k1_context_create(unsigned int flags) SECP256K1_WARN_UNUSED_RESULT
SECP256K1_API void secp256k1_context_set_illegal_callback(secp256k1_context *ctx, void(*fun)(const char *message, void *data), const void *data) SECP256K1_ARG_NONNULL(1)
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_create(const secp256k1_context *ctx, secp256k1_pubkey *pubkey, const unsigned char *seckey) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3)
#define SECP256K1_EC_COMPRESSED
#define SECP256K1_EC_UNCOMPRESSED
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdh(const secp256k1_context *ctx, unsigned char *output, const secp256k1_pubkey *pubkey, const unsigned char *seckey, secp256k1_ecdh_hash_function hashfp, void *data) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4)
void random_scalar_order(secp256k1_scalar *num)
memcpy((char *) pInfo->slotDescription, s, l)