8#define HASH_BYTES NUMBER_OF_WORDS*8
9#define HASH(data,len,out) shake256(out, HASH_BYTES, data, len);
12 #include "../common/fp/avx2/fp-avx2.h"
15#elif defined KARATSUBA
18 #include "../common/fp/mulx/fp.h"
29#define secsidh_keygen NSAPI(keygen)
30#define secsidh_derive NSAPI(derive)
32#define cprintf(...) printf(__VA_ARGS__)
38#ifdef ENABLE_CT_TESTING
39#include <valgrind/memcheck.h>
57 printf(
"seed: %ld\n", pk->
seed);
66#ifdef ENABLE_CT_TESTING
67 VALGRIND_MAKE_MEM_DEFINED(pk,
sizeof(
public_key));
92#define SECSIDH_SUCCESS 0
93#define SECSIDH_FAILURE -1
98void secsidh_clear(
void *b,
size_t s)
117void secsidh_sk2oct(uint8_t *buf,
const private_key *sk)
129void secsidh_pk2oct(uint8_t *buf,
const public_key *pk)
136 memcpy(&buf[
sizeof(
fp)], &pk->
seed,
sizeof(uint64_t));
137 fp_2oct(buf, &pk->
A);
152void secsidh_ss2oct(uint8_t *buf,
const fp ss[1])
164void secsidh_oct2pk(
public_key *pk,
const uint8_t *buf)
166 memcpy(&pk->
seed, &buf[
sizeof(
fp)],
sizeof(uint64_t));
167 oct2_fp(&pk->
A, buf);
180void secsidh_oct2sk(
private_key *sk,
const uint8_t *buf)
196 secsidh_sk2oct(sk, &isk);
197 secsidh_clear(&isk,
sizeof(isk));
209 secsidh_oct2pk(&ipeer_pk, peer_pk);
210 memset(&iss, 0,
sizeof(
fp));
212 secsidh_oct2sk(&isk, sk);
217 secsidh_clear(&isk,
sizeof(isk));
218 secsidh_ss2oct(ss, (
const fp*)iss);
219 secsidh_clear(iss,
sizeof(iss));
#define fulltorsion_points
uint64_t fp[NUMBER_OF_WORDS]