7 #ifndef SECP256K1_MODULE_ECDH_TESTS_H 8 #define SECP256K1_MODULE_ECDH_TESTS_H 14 unsigned char res[32];
15 unsigned char s_one[32] = { 0 };
40 unsigned char s_one[32] = { 0 };
46 for (i = 0; i < 100; ++i) {
48 unsigned char s_b32[32];
49 unsigned char output_ecdh[32];
50 unsigned char output_ser[32];
51 unsigned char point_ser[33];
52 size_t point_ser_len =
sizeof(point_ser);
56 secp256k1_scalar_get_b32(s_b32, &s);
64 CHECK(point_ser_len ==
sizeof(point_ser));
65 secp256k1_sha256_initialize(&sha);
66 secp256k1_sha256_write(&sha, point_ser, point_ser_len);
67 secp256k1_sha256_finalize(&sha, output_ser);
69 CHECK(memcmp(output_ecdh, output_ser,
sizeof(output_ser)) == 0);
74 unsigned char s_zero[32] = { 0 };
75 unsigned char s_overflow[32] = {
76 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
77 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
78 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b,
79 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41
81 unsigned char s_rand[32] = { 0 };
82 unsigned char output[32];
88 secp256k1_scalar_get_b32(s_rand, &rand);
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)
Set a callback function to be called when an illegal argument is passed to an API call...
void random_scalar_order(secp256k1_scalar *num)
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)
Serialize a pubkey object into a serialized byte sequence.
#define SECP256K1_CONTEXT_SIGN
SECP256K1_API void secp256k1_context_destroy(secp256k1_context *ctx)
Destroy a secp256k1 context object.
void run_ecdh_tests(void)
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)
Compute the public key for a secret key.
#define SECP256K1_EC_COMPRESSED
Flag to pass to secp256k1_ec_pubkey_serialize and secp256k1_ec_privkey_export.
void test_ecdh_generator_basepoint(void)
A scalar modulo the group order of the secp256k1 curve.
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)
Set a callback function to be called when an internal consistency check fails.
void test_bad_scalar(void)
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdh(const secp256k1_context *ctx, unsigned char *result, const secp256k1_pubkey *pubkey, const unsigned char *privkey) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4)
Compute an EC Diffie-Hellman secret in constant time Returns: 1: exponentiation was successful 0: sca...
SECP256K1_API secp256k1_context * secp256k1_context_create(unsigned int flags) SECP256K1_WARN_UNUSED_RESULT
Create a secp256k1 context object.
Opaque data structure that holds a parsed and valid public key.