#ifndef CSIDH_H #define CSIDH_H #include "u512.h" #include "fp.h" #include "mont.h" /* specific to p, should perhaps be somewhere else */ #define num_primes 74 #define max_exponent 5 /* (2*5+1)^74 is roughly 2^256 */ typedef struct private_key { int8_t e[(num_primes + 1) / 2]; /* packed int4_t */ } private_key; typedef struct public_key { fp A; /* Montgomery coefficient: represents y^2 = x^3 + Ax^2 + x */ } public_key; extern const public_key base; void csidh_private(private_key *priv); bool csidh(public_key *out, public_key const *in, private_key const *priv); #endif