27 line
591 B
C
27 line
591 B
C
|
#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
|