7#ifndef SECP256K1_MODULE_EXTRAKEYS_TESTS_H
8#define SECP256K1_MODULE_EXTRAKEYS_TESTS_H
26 unsigned char xy_sk[32];
27 unsigned char buf32[32];
28 unsigned char ones32[32];
29 unsigned char zeros64[64] = { 0 };
39 memset(ones32, 0xFF, 32);
54 memset(&pk, 0,
sizeof(pk));
59 memset(sk, 0,
sizeof(sk));
64 CHECK(pk_parity == 0);
72 CHECK(pk_parity == 1);
90 memset(&pk_tmp, 0,
sizeof(pk_tmp));
110 memset(&xonly_pk, 1,
sizeof(xonly_pk));
114 memset(&xonly_pk, 1,
sizeof(xonly_pk));
121 for (i = 0; i <
count; i++) {
122 unsigned char rand33[33];
126 memset(&xonly_pk, 1,
sizeof(xonly_pk));
141 unsigned char pk1_ser[32] = {
142 0x58, 0x84, 0xb3, 0xa2, 0x4b, 0x97, 0x37, 0x88, 0x92, 0x38, 0xa6, 0x26, 0x62, 0x52, 0x35, 0x11,
143 0xd0, 0x9a, 0xa1, 0x1b, 0x80, 0x0b, 0x5e, 0x93, 0x80, 0x26, 0x11, 0xef, 0x67, 0x4b, 0xd9, 0x23
145 const unsigned char pk2_ser[32] = {
146 0xde, 0x36, 0x0e, 0x87, 0x59, 0x8f, 0x3c, 0x01, 0x36, 0x2a, 0x2a, 0xb8, 0xc6, 0xf4, 0x5e, 0x4d,
147 0xb2, 0xc2, 0xd5, 0x03, 0xa7, 0xf9, 0xf1, 0x4f, 0xa8, 0xfa, 0x95, 0xa8, 0xe9, 0x69, 0x76, 0x1c
166 memset(&pk1, 0,
sizeof(pk1));
178 unsigned char zeros64[64] = { 0 };
179 unsigned char overflows[32];
180 unsigned char sk[32];
185 unsigned char tweak[32];
193 memset(overflows, 0xff,
sizeof(overflows));
224 for (i = 0; i <
count; i++) {
237 memset(&internal_xonly_pk, 0,
sizeof(internal_xonly_pk));
250 unsigned char zeros64[64] = { 0 };
251 unsigned char overflows[32];
252 unsigned char sk[32];
257 unsigned char output_pk32[32];
258 unsigned char buf32[32];
260 unsigned char tweak[32];
267 memset(overflows, 0xff,
sizeof(overflows));
292 memset(tweak, 1,
sizeof(tweak));
321 unsigned char sk[32];
323 unsigned char pk_serialized[32];
332 memset(tweak[i], i + 1,
sizeof(tweak[i]));
350 unsigned char sk[32];
351 unsigned char sk_tmp[32];
352 unsigned char zeros96[96] = { 0 };
353 unsigned char overflows[32];
357 int pk_parity, pk_parity_tmp;
363 CHECK(
sizeof(zeros96) ==
sizeof(keypair));
364 memset(overflows, 0xFF,
sizeof(overflows));
400 memset(&keypair, 0,
sizeof(keypair));
424 memset(&keypair, 0,
sizeof(keypair));
435 CHECK(pk_parity == pk_parity_tmp);
455 memset(&keypair, 0,
sizeof(keypair));
465 unsigned char sk[32];
467 unsigned char overflows[32];
468 unsigned char zeros96[96] = { 0 };
469 unsigned char tweak[32];
476 CHECK(
sizeof(zeros96) ==
sizeof(keypair));
479 memset(overflows, 0xFF, 32);
504 for (i = 0; i <
count; i++) {
509 memcpy(&keypair_tmp, &keypair,
sizeof(keypair));
522 memset(&keypair, 0,
sizeof(keypair));
530 memset(&keypair, 0, 32);
535 memset(&keypair.
data[32], 0, 64);
541 for (i = 0; i <
count; i++) {
546 unsigned char pk32[32];
547 unsigned char sk32[32];
static void secp256k1_fe_negate(secp256k1_fe *r, const secp256k1_fe *a, int m)
Set a field element equal to the additive inverse of another.
static int secp256k1_fe_equal(const secp256k1_fe *a, const secp256k1_fe *b)
Compare two field elements.
static void secp256k1_scalar_set_b32(secp256k1_scalar *r, const unsigned char *bin, int *overflow)
Set a scalar from a big endian byte array.
static void secp256k1_scalar_get_b32(unsigned char *bin, const secp256k1_scalar *a)
Convert a scalar to a byte array.
static void secp256k1_scalar_negate(secp256k1_scalar *r, const secp256k1_scalar *a)
Compute the complement of a scalar (modulo the group order).
static SECP256K1_INLINE int secp256k1_memcmp_var(const void *s1, const void *s2, size_t n)
Semantics like memcmp.
static int secp256k1_pubkey_load(const secp256k1_context *ctx, secp256k1_ge *ge, const secp256k1_pubkey *pubkey)
#define SECP256K1_CONTEXT_SIGN
#define SECP256K1_TAG_PUBKEY_EVEN
Prefix byte used to tag various encoded curvepoints for specific purposes.
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.
SECP256K1_API secp256k1_context * secp256k1_context_create(unsigned int flags) SECP256K1_WARN_UNUSED_RESULT
Create a secp256k1 context object (in dynamically allocated memory).
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.
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_parse(const secp256k1_context *ctx, secp256k1_pubkey *pubkey, const unsigned char *input, size_t inputlen) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3)
Parse a variable-length public key into the pubkey object.
#define SECP256K1_CONTEXT_NONE
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_CONTEXT_VERIFY
Flags to pass to secp256k1_context_create, secp256k1_context_preallocated_size, and secp256k1_context...
SECP256K1_API void secp256k1_context_destroy(secp256k1_context *ctx)
Destroy a secp256k1 context object (created in dynamically allocated memory).
A group element of the secp256k1 curve, in affine coordinates.
Opaque data structure that holds a keypair consisting of a secret and a public key.
Opaque data structure that holds a parsed and valid public key.
A scalar modulo the group order of the secp256k1 curve.
Opaque data structure that holds a parsed and valid "x-only" public key.
static void secp256k1_testrand256(unsigned char *b32)
Generate a pseudorandom 32-byte array.
static void counting_illegal_callback_fn(const char *str, void *data)