Monero
Toggle main menu visibility
Loading...
Searching...
No Matches
external
supercop
crypto_sign
ed25519
amd64-64-24k
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
29
typedef
struct
30
{
31
fe25519
x;
32
fe25519
y;
33
fe25519
z;
34
fe25519
t;
35
}
ge25519
;
36
37
typedef
struct
38
{
39
fe25519
x;
40
fe25519
z;
41
fe25519
y;
42
fe25519
t
;
43
}
ge25519_p1p1
;
44
45
typedef
struct
46
{
47
fe25519
x;
48
fe25519
y;
49
fe25519
z;
50
}
ge25519_p2
;
51
52
typedef
struct
53
{
54
fe25519
ysubx;
55
fe25519
xaddy;
56
fe25519
t2d;
57
}
ge25519_niels
;
58
59
typedef
struct
60
{
61
fe25519
ysubx;
62
fe25519
xaddy;
63
fe25519
z;
64
fe25519
t2d;
65
}
ge25519_pniels
;
66
67
extern
void
ge25519_p1p1_to_p2
(
ge25519_p2
*r,
const
ge25519_p1p1
*p);
68
extern
void
ge25519_p1p1_to_p3
(
ge25519_p3
*r,
const
ge25519_p1p1
*p);
69
extern
void
ge25519_add_p1p1
(
ge25519_p1p1
*r,
const
ge25519_p3
*p,
const
ge25519_p3
*q);
70
extern
void
ge25519_dbl_p1p1
(
ge25519_p1p1
*r,
const
ge25519_p2
*p);
71
extern
void
choose_t
(
ge25519_niels
*t,
unsigned
long
long
pos,
signed
long
long
b
,
const
ge25519_niels
*base_multiples);
72
extern
void
ge25519_nielsadd2
(
ge25519_p3
*r,
const
ge25519_niels
*q);
73
extern
void
ge25519_nielsadd_p1p1
(
ge25519_p1p1
*r,
const
ge25519_p3
*p,
const
ge25519_niels
*q);
74
extern
void
ge25519_pnielsadd_p1p1
(
ge25519_p1p1
*r,
const
ge25519_p3
*p,
const
ge25519_pniels
*q);
75
76
extern
const
ge25519
ge25519_base
;
77
78
extern
int
ge25519_unpackneg_vartime
(
ge25519
*r,
const
unsigned
char
p[32]);
79
80
extern
void
ge25519_pack
(
unsigned
char
r[32],
const
ge25519
*p);
81
82
extern
int
ge25519_isneutral_vartime
(
const
ge25519
*p);
83
84
extern
void
ge25519_add
(
ge25519
*r,
const
ge25519
*p,
const
ge25519
*q);
85
86
extern
void
ge25519_double
(
ge25519
*r,
const
ge25519
*p);
87
88
/* computes [s1]p1 + [s2]ge25519_base */
89
extern
void
ge25519_double_scalarmult_vartime
(
ge25519
*r,
const
ge25519
*p1,
const
sc25519
*s1,
const
sc25519
*s2);
90
91
extern
void
ge25519_multi_scalarmult_vartime
(
ge25519
*r,
ge25519
*p,
sc25519
*
s
,
const
unsigned
long
long
npoints);
92
93
extern
void
ge25519_scalarmult_base
(
ge25519
*r,
const
sc25519
*
s
);
94
95
#endif
s
#define s(x, c)
Definition
aesb.c:47
fe25519
#define fe25519
Definition
fe25519.h:4
ge25519_dbl_p1p1
#define ge25519_dbl_p1p1
Definition
ge25519.h:29
ge25519_add_p1p1
#define ge25519_add_p1p1
Definition
ge25519.h:28
ge25519_nielsadd_p1p1
#define ge25519_nielsadd_p1p1
Definition
ge25519.h:33
ge25519_multi_scalarmult_vartime
#define ge25519_multi_scalarmult_vartime
Definition
ge25519.h:23
ge25519_pnielsadd_p1p1
#define ge25519_pnielsadd_p1p1
Definition
ge25519.h:34
choose_t
#define choose_t
Definition
ge25519.h:30
ge25519_double
#define ge25519_double
Definition
ge25519.h:21
ge25519_pack
#define ge25519_pack
Definition
ge25519.h:18
ge25519_isneutral_vartime
#define ge25519_isneutral_vartime
Definition
ge25519.h:19
ge25519_base
#define ge25519_base
Definition
ge25519.h:16
ge25519_add
#define ge25519_add
Definition
ge25519.h:20
ge25519_double_scalarmult_vartime
#define ge25519_double_scalarmult_vartime
Definition
ge25519.h:22
ge25519_p3
#define ge25519_p3
Definition
ge25519.h:36
ge25519
#define ge25519
Definition
ge25519.h:15
ge25519_scalarmult_base
#define ge25519_scalarmult_base
Definition
ge25519.h:24
ge25519_p1p1_to_p2
#define ge25519_p1p1_to_p2
Definition
ge25519.h:25
ge25519_nielsadd2
#define ge25519_nielsadd2
Definition
ge25519.h:32
ge25519_unpackneg_vartime
#define ge25519_unpackneg_vartime
Definition
ge25519.h:17
ge25519_p1p1_to_p3
#define ge25519_p1p1_to_p3
Definition
ge25519.h:26
sc25519
#define sc25519
Definition
sc25519.h:4
fe25519.h
sc25519.h
b
cryptonote::block b
Definition
block.cpp:40
console.t
t
Definition
console.py:33
ge25519_niels
Definition
ge25519.h:62
ge25519_p1p1
Definition
ge25519.h:47
ge25519_p2
Definition
ge25519.h:55
ge25519_pniels
Definition
ge25519.h:69
Generated on
for Monero by
1.17.0