forked from mimoex/CSIDH-GMP
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmcl.h
51 lines (43 loc) · 1.22 KB
/
mcl.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
// pStr [in] hex string such as 0x94...
int mcl_init(const char *pStr);
typedef void (*void3u)(uint64_t *z, const uint64_t *x, const uint64_t *y);
// n = 9 or 11
// z[n*2] = x[n] * y[n]
extern void3u mcl_mulPre;
// z[n] = Montgomery-mul(x[n], y[n]);
extern void3u mcl_mont;
// z[n] = (x[n] + y[n]) mod p[n]
extern void3u mcl_add;
// z[n] = (x[n] - y[n]) mod p[n]
extern void3u mcl_sub;
typedef void (*void2u)(uint64_t *y, const uint64_t *x);
// y[n] = Montgomery-mod(x[n * 2]);
extern void2u mcl_mod;
// y[n] = (-x[n]) mod p[n]
extern void2u mcl_neg;
// y[n] = (x[n] * 2) mod p[n]
extern void2u mcl_mul2;
// z[2n] = (x[2n] + y[2n]) mod (p << n)
extern void3u mcl_addDbl;
// z[2n] = (x[2n] - y[2n]) mod (p << n)
extern void3u mcl_subDbl;
// y[2n] = (-x[2n]) mod (p << n)
extern void2u mcl_negDbl;
// y[2n] = (x[2n]*2) mod (p << n)
extern void2u mcl_mul2Dbl;
// z[n] = x[n] + y[n] ; assume x + y < p
extern void3u mcl_addPre;
// z[n] = x[n] - y[n] ; assume x >= y
extern void3u mcl_subPre;
// z[2n] = x[2n] + y[2n] ; assume x + y < (p << n)
extern void3u mcl_addDblPre;
// z[2n] = x[2n] - y[2n] ; assume x >= y
extern void3u mcl_subDblPre;
#ifdef __cplusplus
}
#endif