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.