libsignal-protocol-c
master
ge.h
1
#ifndef GE_H
2
#define GE_H
3
4
/*
5
ge means group element.
6
7
Here the group is the set of pairs (x,y) of field elements (see fe.h)
8
satisfying -x^2 + y^2 = 1 + d x^2y^2
9
where d = -121665/121666.
10
11
Representations:
12
ge_p2 (projective): (X:Y:Z) satisfying x=X/Z, y=Y/Z
13
ge_p3 (extended): (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT
14
ge_p1p1 (completed): ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T
15
ge_precomp (Duif): (y+x,y-x,2dxy)
16
*/
17
18
#include "fe.h"
19
20
typedef
struct
{
21
fe X;
22
fe Y;
23
fe Z;
24
}
ge_p2
;
25
26
typedef
struct
{
27
fe X;
28
fe Y;
29
fe Z;
30
fe T;
31
}
ge_p3
;
32
33
typedef
struct
{
34
fe X;
35
fe Y;
36
fe Z;
37
fe T;
38
}
ge_p1p1
;
39
40
typedef
struct
{
41
fe yplusx;
42
fe yminusx;
43
fe xy2d;
44
}
ge_precomp
;
45
46
typedef
struct
{
47
fe YplusX;
48
fe YminusX;
49
fe Z;
50
fe T2d;
51
}
ge_cached
;
52
53
#define ge_frombytes_negate_vartime crypto_sign_ed25519_ref10_ge_frombytes_negate_vartime
54
#define ge_tobytes crypto_sign_ed25519_ref10_ge_tobytes
55
#define ge_p3_tobytes crypto_sign_ed25519_ref10_ge_p3_tobytes
56
57
#define ge_p2_0 crypto_sign_ed25519_ref10_ge_p2_0
58
#define ge_p3_0 crypto_sign_ed25519_ref10_ge_p3_0
59
#define ge_precomp_0 crypto_sign_ed25519_ref10_ge_precomp_0
60
#define ge_p3_to_p2 crypto_sign_ed25519_ref10_ge_p3_to_p2
61
#define ge_p3_to_cached crypto_sign_ed25519_ref10_ge_p3_to_cached
62
#define ge_p1p1_to_p2 crypto_sign_ed25519_ref10_ge_p1p1_to_p2
63
#define ge_p1p1_to_p3 crypto_sign_ed25519_ref10_ge_p1p1_to_p3
64
#define ge_p2_dbl crypto_sign_ed25519_ref10_ge_p2_dbl
65
#define ge_p3_dbl crypto_sign_ed25519_ref10_ge_p3_dbl
66
67
#define ge_madd crypto_sign_ed25519_ref10_ge_madd
68
#define ge_msub crypto_sign_ed25519_ref10_ge_msub
69
#define ge_add crypto_sign_ed25519_ref10_ge_add
70
#define ge_sub crypto_sign_ed25519_ref10_ge_sub
71
#define ge_scalarmult_base crypto_sign_ed25519_ref10_ge_scalarmult_base
72
#define ge_double_scalarmult_vartime crypto_sign_ed25519_ref10_ge_double_scalarmult_vartime
73
74
extern
void
ge_tobytes(
unsigned
char
*,
const
ge_p2
*);
75
extern
void
ge_p3_tobytes(
unsigned
char
*,
const
ge_p3
*);
76
extern
int
ge_frombytes_negate_vartime(
ge_p3
*,
const
unsigned
char
*);
77
78
extern
void
ge_p2_0(
ge_p2
*);
79
extern
void
ge_p3_0(
ge_p3
*);
80
extern
void
ge_precomp_0(
ge_precomp
*);
81
extern
void
ge_p3_to_p2(
ge_p2
*,
const
ge_p3
*);
82
extern
void
ge_p3_to_cached(
ge_cached
*,
const
ge_p3
*);
83
extern
void
ge_p1p1_to_p2(
ge_p2
*,
const
ge_p1p1
*);
84
extern
void
ge_p1p1_to_p3(
ge_p3
*,
const
ge_p1p1
*);
85
extern
void
ge_p2_dbl(
ge_p1p1
*,
const
ge_p2
*);
86
extern
void
ge_p3_dbl(
ge_p1p1
*,
const
ge_p3
*);
87
88
extern
void
ge_madd(
ge_p1p1
*,
const
ge_p3
*,
const
ge_precomp
*);
89
extern
void
ge_msub(
ge_p1p1
*,
const
ge_p3
*,
const
ge_precomp
*);
90
extern
void
ge_add(
ge_p1p1
*,
const
ge_p3
*,
const
ge_cached
*);
91
extern
void
ge_sub(
ge_p1p1
*,
const
ge_p3
*,
const
ge_cached
*);
92
extern
void
ge_scalarmult_base(
ge_p3
*,
const
unsigned
char
*);
93
extern
void
ge_double_scalarmult_vartime(
ge_p2
*,
const
unsigned
char
*,
const
ge_p3
*,
const
unsigned
char
*);
94
95
#endif
ge_p1p1
Definition:
ge.h:33
ge_p2
Definition:
ge.h:20
ge_p3
Definition:
ge.h:26
ge_precomp
Definition:
ge.h:40
ge_cached
Definition:
ge.h:46
src
curve25519
ed25519
ge.h
Generated by
1.8.13