Monero
Loading...
Searching...
No Matches
ge25519.h
Go to the documentation of this file.
1#ifndef GE25519_H
2#define GE25519_H
3
4#include "fe25519.h"
5#include "sc25519.h"
6
7#define ge25519 crypto_sign_ed25519_amd64_64_ge25519
8#define ge25519_base crypto_sign_ed25519_amd64_64_ge25519_base
9#define ge25519_unpackneg_vartime crypto_sign_ed25519_amd64_64_unpackneg_vartime
10#define ge25519_pack crypto_sign_ed25519_amd64_64_pack
11#define ge25519_isneutral_vartime crypto_sign_ed25519_amd64_64_isneutral_vartime
12#define ge25519_add crypto_sign_ed25519_amd64_64_ge25519_add
13#define ge25519_double crypto_sign_ed25519_amd64_64_ge25519_double
14#define ge25519_double_scalarmult_vartime crypto_sign_ed25519_amd64_64_double_scalarmult_vartime
15#define ge25519_multi_scalarmult_vartime crypto_sign_ed25519_amd64_64_ge25519_multi_scalarmult_vartime
16#define ge25519_scalarmult_base crypto_sign_ed25519_amd64_64_scalarmult_base
17#define ge25519_p1p1_to_p2 crypto_sign_ed25519_amd64_64_ge25519_p1p1_to_p2
18#define ge25519_p1p1_to_p3 crypto_sign_ed25519_amd64_64_ge25519_p1p1_to_p3
19#define ge25519_add_p1p1 crypto_sign_ed25519_amd64_64_ge25519_add_p1p1
20#define ge25519_dbl_p1p1 crypto_sign_ed25519_amd64_64_ge25519_dbl_p1p1
21#define choose_t crypto_sign_ed25519_amd64_64_choose_t
22#define ge25519_nielsadd2 crypto_sign_ed25519_amd64_64_ge25519_nielsadd2
23#define ge25519_nielsadd_p1p1 crypto_sign_ed25519_amd64_64_ge25519_nielsadd_p1p1
24#define ge25519_pnielsadd_p1p1 crypto_sign_ed25519_amd64_64_ge25519_pnielsadd_p1p1
25
26
27#define ge25519_p3 ge25519
28
29typedef struct
30{
31 fe25519 x;
32 fe25519 y;
33 fe25519 z;
34 fe25519 t;
35} ge25519;
36
37typedef struct
38{
39 fe25519 x;
40 fe25519 z;
41 fe25519 y;
42 fe25519 t;
44
45typedef struct
46{
47 fe25519 x;
48 fe25519 y;
49 fe25519 z;
51
52typedef struct
53{
54 fe25519 ysubx;
55 fe25519 xaddy;
56 fe25519 t2d;
58
59typedef struct
60{
61 fe25519 ysubx;
62 fe25519 xaddy;
63 fe25519 z;
64 fe25519 t2d;
66
67extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p);
68extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p);
69extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q);
70extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p);
71extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples);
72extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q);
73extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q);
75
76extern const ge25519 ge25519_base;
77
78extern int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]);
79
80extern void ge25519_pack(unsigned char r[32], const ge25519 *p);
81
83
84extern void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q);
85
86extern void ge25519_double(ge25519 *r, const ge25519 *p);
87
88/* computes [s1]p1 + [s2]ge25519_base */
89extern void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const sc25519 *s1, const sc25519 *s2);
90
91extern void ge25519_multi_scalarmult_vartime(ge25519 *r, ge25519 *p, sc25519 *s, const unsigned long long npoints);
92
93extern void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s);
94
95#endif
#define s(x, c)
Definition aesb.c:47
#define fe25519
Definition fe25519.h:4
#define ge25519_dbl_p1p1
Definition ge25519.h:29
#define ge25519_add_p1p1
Definition ge25519.h:28
#define ge25519_nielsadd_p1p1
Definition ge25519.h:33
#define ge25519_multi_scalarmult_vartime
Definition ge25519.h:23
#define ge25519_pnielsadd_p1p1
Definition ge25519.h:34
#define choose_t
Definition ge25519.h:30
#define ge25519_double
Definition ge25519.h:21
#define ge25519_pack
Definition ge25519.h:18
#define ge25519_isneutral_vartime
Definition ge25519.h:19
#define ge25519_base
Definition ge25519.h:16
#define ge25519_add
Definition ge25519.h:20
#define ge25519_double_scalarmult_vartime
Definition ge25519.h:22
#define ge25519_p3
Definition ge25519.h:36
#define ge25519
Definition ge25519.h:15
#define ge25519_scalarmult_base
Definition ge25519.h:24
#define ge25519_p1p1_to_p2
Definition ge25519.h:25
#define ge25519_nielsadd2
Definition ge25519.h:32
#define ge25519_unpackneg_vartime
Definition ge25519.h:17
#define ge25519_p1p1_to_p3
Definition ge25519.h:26
#define sc25519
Definition sc25519.h:4
cryptonote::block b
Definition block.cpp:40
t
Definition console.py:33
Definition ge25519.h:62
Definition ge25519.h:47
Definition ge25519.h:55
Definition ge25519.h:69