MOTION  0.01
Framework for mixed-protocol multi-party computation
mycurve25519.h
Go to the documentation of this file.
1 // This file was taken from the BoringSSL project (commit
2 // 982279b366eccd9e4146036c7fcda7f72d2cbdff) -- they used Fiat-Crypto to
3 // generate it -- and adapted for use in this project.
4 //
5 // The MIT License (MIT)
6 //
7 // Copyright (c) 2018 Lennart Braun
8 // Copyright (c) 2015-2016 the fiat-crypto authors (see the AUTHORS file).
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining a copy
11 // of this software and associated documentation files (the "Software"), to deal
12 // in the Software without restriction, including without limitation the rights
13 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 // copies of the Software, and to permit persons to whom the Software is
15 // furnished to do so, subject to the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be included in all
18 // copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 // SOFTWARE.
27 
28 #pragma once
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 #include <cstdint>
35 
36 #ifdef __cplusplus
38 #endif
39 
40 #if defined(BORINGSSL_HAS_UINT128)
41 typedef __uint128_t uint128_t;
42 #define BORINGSSL_CURVE25519_64BIT
43 #endif
44 
45 #if defined(BORINGSSL_CURVE25519_64BIT)
46 // fe means field element. Here the field is \Z/(2^255-19). An element t,
47 // entries t[0]...t[4], represents the integer t[0]+2^51 t[1]+2^102 t[2]+2^153
48 // t[3]+2^204 t[4].
49 // fe limbs are bounded by 1.125*2^51.
50 // Multiplication and carrying produce fe from fe_loose.
51 typedef struct fe {
52  uint64_t v[5];
53 } fe;
54 
55 // fe_loose limbs are bounded by 3.375*2^51.
56 // Addition and subtraction produce fe_loose from (fe, fe).
57 typedef struct fe_loose {
58  uint64_t v[5];
59 } fe_loose;
60 #else
61 // fe means field element. Here the field is \Z/(2^255-19). An element t,
62 // entries t[0]...t[9], represents the integer t[0]+2^26 t[1]+2^51 t[2]+2^77
63 // t[3]+2^102 t[4]+...+2^230 t[9].
64 // fe limbs are bounded by 1.125*2^26,1.125*2^25,1.125*2^26,1.125*2^25,etc.
65 // Multiplication and carrying produce fe from fe_loose.
66 typedef struct fe {
67  uint32_t v[10];
68 } fe;
69 
70 // fe_loose limbs are bounded by 3.375*2^26,3.375*2^25,3.375*2^26,3.375*2^25,etc.
71 // Addition and subtraction produce fe_loose from (fe, fe).
72 typedef struct fe_loose {
73  uint32_t v[10];
74 } fe_loose;
75 #endif
76 
77 // ge means group element.
78 //
79 // Here the group is the set of pairs (x,y) of field elements (see fe.h)
80 // satisfying -x^2 + y^2 = 1 + d x^2y^2
81 // where d = -121665/121666.
82 //
83 // Representations:
84 // ge_p2 (projective): (X:Y:Z) satisfying x=X/Z, y=Y/Z
85 // ge_p3 (extended): (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT
86 // ge_p1p1 (completed): ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T
87 // ge_precomp (Duif): (y+x,y-x,2dxy)
88 
89 typedef struct {
90  fe X;
91  fe Y;
92  fe Z;
93 } ge_p2;
94 
95 typedef struct {
96  fe X;
97  fe Y;
98  fe Z;
99  fe T;
100 } ge_p3;
101 
102 typedef struct {
107 } ge_p1p1;
108 
109 typedef struct {
113 } ge_precomp;
114 
115 typedef struct {
120 } ge_cached;
121 
122 void x25519_ge_tobytes(uint8_t s[32], const ge_p2* h);
123 int x25519_ge_frombytes_vartime(ge_p3* h, const uint8_t* s);
124 void x25519_ge_p3_to_cached(ge_cached* r, const ge_p3* p);
125 void x25519_ge_p1p1_to_p2(ge_p2* r, const ge_p1p1* p);
126 void x25519_ge_p1p1_to_p3(ge_p3* r, const ge_p1p1* p);
127 void x25519_ge_add(ge_p1p1* r, const ge_p3* p, const ge_cached* q);
128 void x25519_ge_sub(ge_p1p1* r, const ge_p3* p, const ge_cached* q);
129 void x25519_ge_scalarmult_small_precomp(ge_p3* h, const uint8_t a[32],
130  const uint8_t precomp_table[15 * 2 * 32]);
131 void x25519_ge_scalarmult_base(ge_p3* h, const uint8_t a[32]);
132 void x25519_ge_scalarmult(ge_p2* r, const uint8_t* scalar, const ge_p3* A);
133 void x25519_sc_reduce(uint8_t s[64]);
134 
135 typedef struct {
136  uint8_t s[32];
137 } sc;
138 void sc_random(uint8_t s[32]);
139 void x25519_ge_p2_to_p3(ge_p3* r, const ge_p2* p);
140 void ge_p3_tobytes(uint8_t s[32], const ge_p3* h);
141 void ge_double_scalarmult_vartime(ge_p2* r, const uint8_t* a, const ge_p3* A, const uint8_t* b);
142 
143 void ge_p2_0(ge_p2* h);
144 void ge_p3_0(ge_p3* h);
145 void ge_cached_0(ge_cached* h);
146 void ge_precomp_0(ge_precomp* h);
147 
148 #ifdef __cplusplus
149 
150 } // namespace encrypto::motion::curve25519
151 } // extern "C"
152 
153 #endif
encrypto::motion::curve25519::x25519_ge_p3_to_cached
void x25519_ge_p3_to_cached(ge_cached *r, const ge_p3 *p)
Definition: mycurve25519.cpp:3846
encrypto::motion::curve25519::fe_sq_tt
static void fe_sq_tt(fe *h, const fe *f)
Definition: mycurve25519.cpp:2840
encrypto::motion::curve25519::addcarryx_u26
static uint8_t addcarryx_u26(uint8_t c, uint32_t a, uint32_t b, uint32_t *low)
Definition: mycurve25519.cpp:108
encrypto::motion::AccumulatedCommunicationStatistics::Add
void Add(const communication::TransportStatistics &statistics)
Definition: analysis.cpp:125
analysis.h
encrypto::motion::curve25519::x25519_ge_p1p1_to_p3
void x25519_ge_p1p1_to_p3(ge_p3 *r, const ge_p1p1 *p)
Definition: mycurve25519.cpp:3861
encrypto::motion::curve25519::subborrow_u26
static uint8_t subborrow_u26(uint8_t c, uint32_t a, uint32_t b, uint32_t *low)
Definition: mycurve25519.cpp:124
party.h
assert_fe_loose
#define assert_fe_loose(f)
Definition: mycurve25519.cpp:1101
fe::v
uint32_t v[10]
Definition: mycurve25519.h:67
encrypto::motion::curve25519::fe_tobytes
static void fe_tobytes(uint8_t s[32], const fe *f)
Definition: mycurve25519.cpp:1323
encrypto::motion::AccumulatedRunTimeStatistics
Definition: analysis.h:43
encrypto::motion::curve25519::fe_add
static void fe_add(fe_loose *h, const fe *f, const fe *g)
Definition: mycurve25519.cpp:1462
encrypto::motion::curve25519::fe_copy_ll
static void fe_copy_ll(fe_loose *h, const fe_loose *f)
Definition: mycurve25519.cpp:3582
encrypto::motion::curve25519::slide
static void slide(signed char *r, const uint8_t *a)
Definition: mycurve25519.cpp:4195
encrypto::motion::curve25519::x25519_ge_scalarmult
void x25519_ge_scalarmult(ge_p2 *r, const uint8_t *scalar, const ge_p3 *A)
Definition: mycurve25519.cpp:4143
encrypto::motion::curve25519::fe_add_impl
static void fe_add_impl(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10])
Definition: mycurve25519.cpp:1387
encrypto::motion::curve25519::fe_sub
static void fe_sub(fe_loose *h, const fe *f, const fe *g)
Definition: mycurve25519.cpp:1544
encrypto::motion::curve25519::fe_sq2_tt
static void fe_sq2_tt(fe *h, const fe *f)
Definition: mycurve25519.cpp:3673
ge_precomp::yminusx
fe_loose yminusx
Definition: mycurve25519.h:111
encrypto::motion::curve25519::ge_madd
static void ge_madd(ge_p1p1 *r, const ge_p3 *p, const ge_precomp *q)
Definition: mycurve25519.cpp:3902
ge_p3::X
fe X
Definition: mycurve25519.h:96
encrypto::motion::curve25519::table_select
static void table_select(ge_precomp *t, int pos, signed char b)
Definition: mycurve25519.cpp:4053
encrypto::motion::curve25519::fe_mul_ltt
static void fe_mul_ltt(fe_loose *h, const fe *f, const fe *g)
Definition: mycurve25519.cpp:2346
encrypto::motion::curve25519::fe_mul_tll
static void fe_mul_tll(fe *h, const fe_loose *f, const fe_loose *g)
Definition: mycurve25519.cpp:2358
ge_p2::X
fe X
Definition: mycurve25519.h:90
fe
struct fe fe
main
int main(int ac, char *av[])
Definition: mult3_main.cpp:49
encrypto::motion::curve25519::fe_mul121666
static void fe_mul121666(fe *h, const fe_loose *f)
Definition: mycurve25519.cpp:3466
fe_loose
struct fe_loose fe_loose
kPartyArgumentRegex
const std::regex kPartyArgumentRegex("([012]),([^,]+),(\\d{1,5})")
ge_precomp::xy2d
fe_loose xy2d
Definition: mycurve25519.h:112
fe_loose::v
uint32_t v[10]
Definition: mycurve25519.h:73
encrypto::motion::MpcProtocol::kBmr
@ kBmr
encrypto::motion::PartyPointer
std::unique_ptr< Party > PartyPointer
Definition: party.h:387
encrypto::motion::curve25519::ge_cached_0
void ge_cached_0(ge_cached *h)
Definition: mycurve25519.cpp:3825
sc
Definition: mycurve25519.h:135
ge_cached::T2d
fe_loose T2d
Definition: mycurve25519.h:119
encrypto::motion::curve25519::fe_loose_invert
static void fe_loose_invert(fe *out, const fe_loose *z)
Definition: mycurve25519.cpp:3588
ge_p1p1
Definition: mycurve25519.h:102
ge_p3::T
fe T
Definition: mycurve25519.h:99
d2
static const fe d2
Definition: mycurve25519_tables.h:46
encrypto::motion::curve25519::fe_invert
static void fe_invert(fe *out, const fe *z)
Definition: mycurve25519.cpp:3646
sqrtm1
static const fe sqrtm1
Definition: mycurve25519_tables.h:38
encrypto::motion::curve25519::x25519_ge_frombytes_vartime
int x25519_ge_frombytes_vartime(ge_p3 *h, const uint8_t *s)
Definition: mycurve25519.cpp:3766
encrypto::motion::curve25519::x25519_ge_scalarmult_base
void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t *a)
Definition: mycurve25519.cpp:4084
encrypto::motion::curve25519::fe_mul_ttl
static void fe_mul_ttl(fe *h, const fe *f, const fe_loose *g)
Definition: mycurve25519.cpp:2356
encrypto::motion::curve25519::fe_loose_1
static void fe_loose_1(fe_loose *h)
Definition: mycurve25519.cpp:1381
ge_p2
Definition: mycurve25519.h:89
ParseProgramOptions
std::pair< program_options::variables_map, std::vector< bool > > ParseProgramOptions(int ac, char *av[])
Definition: mult3_main.cpp:120
encrypto::motion::curve25519::fe_copy_lt
static void fe_copy_lt(fe_loose *h, const fe *f)
Definition: mycurve25519.cpp:3575
encrypto::motion::curve25519::fe_neg_impl
static void fe_neg_impl(uint32_t out[10], const uint32_t in2[10])
Definition: mycurve25519.cpp:3473
ge_p1p1::Y
fe_loose Y
Definition: mycurve25519.h:104
encrypto::motion::curve25519::fe_mul_impl
static void fe_mul_impl(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10])
Definition: mycurve25519.cpp:1735
encrypto::motion::curve25519::x25519_sc_reduce
void x25519_sc_reduce(uint8_t s[64])
Definition: mycurve25519.cpp:4312
ge_p1p1::X
fe_loose X
Definition: mycurve25519.h:103
encrypto::motion::curve25519::fe_sqr_impl
static void fe_sqr_impl(uint32_t out[10], const uint32_t in1[10])
Definition: mycurve25519.cpp:2362
encrypto::motion::curve25519::fe_mul_tlt
static void fe_mul_tlt(fe *h, const fe_loose *f, const fe *g)
Definition: mycurve25519.cpp:2354
encrypto::motion::MpcProtocol::kBooleanGmw
@ kBooleanGmw
encrypto::motion::curve25519::cmov_cached
static void cmov_cached(ge_cached *t, ge_cached *u, uint8_t b)
Definition: mycurve25519.cpp:4134
encrypto::motion::communication::TcpSetupHelper
Definition: tcp_transport.h:69
encrypto::motion::curve25519::fe_frombytes
static void fe_frombytes(fe *h, const uint8_t *s)
Definition: mycurve25519.cpp:1138
encrypto::motion::curve25519::fe_cmov
static void fe_cmov(fe_loose *f, const fe_loose *g, unsigned b)
Definition: mycurve25519.cpp:3557
ge_precomp::yplusx
fe_loose yplusx
Definition: mycurve25519.h:110
communication_layer.h
encrypto::motion::curve25519::fe_isnegative
static int fe_isnegative(const fe *f)
Definition: mycurve25519.cpp:3667
ge_p2::Z
fe Z
Definition: mycurve25519.h:92
ge_p3::Z
fe Z
Definition: mycurve25519.h:98
encrypto::motion::curve25519::sc_muladd
static void sc_muladd(uint8_t *s, const uint8_t *a, const uint8_t *b, const uint8_t *c)
Definition: mycurve25519.cpp:4654
Bi
static const ge_precomp Bi[8]
Definition: mycurve25519_tables.h:7453
encrypto::motion::curve25519::ge_msub
static void ge_msub(ge_p1p1 *r, const ge_p3 *p, const ge_precomp *q)
Definition: mycurve25519.cpp:3919
ge_cached::YminusX
fe_loose YminusX
Definition: mycurve25519.h:117
uint128_t
__uint128_t uint128_t
Definition: pseudo_random_generator.h:37
encrypto::motion::curve25519::x25519_ge_tobytes
void x25519_ge_tobytes(uint8_t s[32], const ge_p2 *h)
Definition: mycurve25519.cpp:3742
encrypto::motion::communication::TcpPartiesConfiguration
std::vector< TcpConnectionConfiguration > TcpPartiesConfiguration
Definition: tcp_transport.h:62
encrypto::motion::curve25519::fe_sub_impl
static void fe_sub_impl(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10])
Definition: mycurve25519.cpp:1469
encrypto::motion::curve25519::subborrow_u25
static uint8_t subborrow_u25(uint8_t c, uint32_t a, uint32_t b, uint32_t *low)
Definition: mycurve25519.cpp:116
ge_cached
Definition: mycurve25519.h:115
encrypto::motion::curve25519::fe_freeze
static void fe_freeze(uint32_t out[10], const uint32_t in1[10])
Definition: mycurve25519.cpp:1140
encrypto::motion::curve25519::fe_carry
static void fe_carry(fe *h, const fe_loose *f)
Definition: mycurve25519.cpp:1729
encrypto::motion::curve25519::fe_mul_llt
static void fe_mul_llt(fe_loose *h, const fe_loose *f, const fe *g)
Definition: mycurve25519.cpp:2348
encrypto::motion::curve25519::ge_p3_0
void ge_p3_0(ge_p3 *h)
Definition: mycurve25519.cpp:3818
encrypto::motion::curve25519::fe_mul_ttt
static void fe_mul_ttt(fe *h, const fe *f, const fe *g)
Definition: mycurve25519.cpp:2352
encrypto::motion::curve25519::ge_p2_dbl
static void ge_p2_dbl(ge_p1p1 *r, const ge_p2 *p)
Definition: mycurve25519.cpp:3876
encrypto::motion::curve25519::cmov
static void cmov(ge_precomp *t, const ge_precomp *u, uint8_t b)
Definition: mycurve25519.cpp:3981
encrypto::motion::curve25519::ge_p1p1_to_cached
static void ge_p1p1_to_cached(ge_cached *r, const ge_p1p1 *p)
Definition: mycurve25519.cpp:3869
encrypto::motion::curve25519::load_3
static uint64_t load_3(const uint8_t *in)
Definition: mycurve25519.cpp:46
encrypto::motion::curve25519::ge_p2_0
void ge_p2_0(ge_p2 *h)
Definition: mycurve25519.cpp:3812
encrypto::motion::curve25519::ge_p3_to_p2
static void ge_p3_to_p2(ge_p2 *r, const ge_p3 *p)
Definition: mycurve25519.cpp:3839
geninput.help
help
Definition: geninput.py:150
encrypto::motion::curve25519::fe_frombytes_impl
static void fe_frombytes_impl(uint32_t h[10], const uint8_t *s)
Definition: mycurve25519.cpp:1115
encrypto::motion::curve25519::addcarryx_u25
static uint8_t addcarryx_u25(uint8_t c, uint32_t a, uint32_t b, uint32_t *low)
Definition: mycurve25519.cpp:100
encrypto::motion::curve25519::x25519_scalar_mult_generic
static void x25519_scalar_mult_generic(uint8_t out[32], const uint8_t scalar[32], const uint8_t point[32])
Definition: mycurve25519.cpp:5130
encrypto::motion::curve25519::fe_sq_tl
static void fe_sq_tl(fe *h, const fe_loose *f)
Definition: mycurve25519.cpp:2838
encrypto::motion::curve25519::ge_precomp_0
void ge_precomp_0(ge_precomp *h)
Definition: mycurve25519.cpp:3832
fe_loose
Definition: mycurve25519.h:72
mycurve25519_tables.h
ParsePartyArgument
std::tuple< std::size_t, std::string, std::uint16_t > ParsePartyArgument(const std::string &party_argument)
Definition: mult3_main.cpp:109
encrypto::motion::curve25519::x25519_ge_scalarmult_small_precomp
void x25519_ge_scalarmult_small_precomp(ge_p3 *h, const uint8_t a[32], const uint8_t precomp_table[15 *2 *32])
Definition: mycurve25519.cpp:3987
encrypto::motion::curve25519::fe_carry_impl
static void fe_carry_impl(uint32_t out[10], const uint32_t in1[10])
Definition: mycurve25519.cpp:1551
ge_precomp
Definition: mycurve25519.h:109
encrypto::motion::PrintStatistics
std::string PrintStatistics(const std::string &experiment_name, const AccumulatedRunTimeStatistics &execution_statistics, const AccumulatedCommunicationStatistics &communication_statistics)
Definition: analysis.cpp:176
CheckPartyArgumentSyntax
bool CheckPartyArgumentSyntax(const std::string &party_argument)
Definition: mult3_main.cpp:104
EvaluateProtocol
encrypto::motion::RunTimeStatistics EvaluateProtocol(encrypto::motion::PartyPointer &party, std::size_t number_of_simd, encrypto::motion::MpcProtocol protocol, bool check)
Definition: aes128.cpp:56
encrypto::motion::curve25519::negative
static uint8_t negative(signed char b)
Definition: mycurve25519.cpp:4047
typedefs.h
encrypto::motion::curve25519
Definition: mycurve25519.cpp:41
encrypto::motion::MpcProtocol
MpcProtocol
Definition: typedefs.h:140
mult3.h
encrypto::motion::curve25519::equal
static uint8_t equal(signed char b, signed char c)
Definition: mycurve25519.cpp:3971
encrypto::motion::curve25519::sc_random
void sc_random(uint8_t s[32])
Definition: mycurve25519.cpp:5238
ge_p3
Definition: mycurve25519.h:95
encrypto::motion::curve25519::x25519_ge_sub
void x25519_ge_sub(ge_p1p1 *r, const ge_p3 *p, const ge_cached *q)
Definition: mycurve25519.cpp:3954
encrypto::motion::curve25519::x25519_ge_add
void x25519_ge_add(ge_p1p1 *r, const ge_p3 *p, const ge_cached *q)
Definition: mycurve25519.cpp:3936
fe
Definition: mycurve25519.h:66
encrypto::motion::curve25519::cmovznz32
static uint32_t cmovznz32(uint32_t t, uint32_t z, uint32_t nz)
Definition: mycurve25519.cpp:132
ge_p1p1::T
fe_loose T
Definition: mycurve25519.h:106
ge_p1p1::Z
fe_loose Z
Definition: mycurve25519.h:105
ge_p2::Y
fe Y
Definition: mycurve25519.h:91
encrypto::motion::curve25519::fe_cswap
static void fe_cswap(fe *f, fe *g, unsigned int b)
Definition: mycurve25519.cpp:2846
d
static const fe d
Definition: mycurve25519_tables.h:30
encrypto::motion::MpcProtocol::kArithmeticGmw
@ kArithmeticGmw
ge_p3::Y
fe Y
Definition: mycurve25519.h:97
encrypto::motion::swap
void swap(ReusablePromise< R, MutexType, ConditionVariableType > &lhs, ReusablePromise< R, MutexType, ConditionVariableType > &rhs) noexcept
Definition: reusable_future.h:270
encrypto::motion::curve25519::fe_neg
static void fe_neg(fe_loose *h, const fe *f)
Definition: mycurve25519.cpp:3547
assert_fe_frozen
#define assert_fe_frozen(f)
Definition: mycurve25519.cpp:1108
encrypto::motion::curve25519::fe_mul_121666_impl
static void fe_mul_121666_impl(uint32_t out[10], const uint32_t in1[10])
Definition: mycurve25519.cpp:2858
encrypto::motion::curve25519::RandomBytes
void RandomBytes(void *buf, size_t nbytes)
Definition: mycurve25519.cpp:5229
encrypto::motion::curve25519::fe_1
static void fe_1(fe *h)
Definition: mycurve25519.cpp:1375
encrypto::motion::curve25519::fe_loose_0
static void fe_loose_0(fe_loose *h)
Definition: mycurve25519.cpp:1369
tcp_transport.h
encrypto::motion::curve25519::fe_isnonzero
static int fe_isnonzero(const fe_loose *f)
Definition: mycurve25519.cpp:3654
k25519Precomp
static const ge_precomp k25519Precomp[32][8]
Definition: mycurve25519_tables.h:130
encrypto::motion::curve25519::x25519_scalar_mult
static void x25519_scalar_mult(uint8_t out[32], const uint8_t scalar[32], const uint8_t point[32])
Definition: mycurve25519.cpp:5215
ge_cached::Z
fe_loose Z
Definition: mycurve25519.h:118
encrypto::motion::curve25519::fe_copy
static void fe_copy(fe *h, const fe *f)
Definition: mycurve25519.cpp:3570
CreateParty
encrypto::motion::PartyPointer CreateParty(const program_options::variables_map &user_options)
Definition: mult3_main.cpp:208
encrypto::motion::curve25519::ge_double_scalarmult_vartime
void ge_double_scalarmult_vartime(ge_p2 *r, const uint8_t *a, const ge_p3 *A, const uint8_t *b)
Definition: mycurve25519.cpp:4233
encrypto::motion::curve25519::x25519_ge_p2_to_p3
void x25519_ge_p2_to_p3(ge_p3 *r, const ge_p2 *p)
Definition: mycurve25519.cpp:5246
assert_fe
#define assert_fe(f)
Definition: mycurve25519.cpp:1094
encrypto::motion::AccumulatedCommunicationStatistics
Definition: analysis.h:65
encrypto::motion::curve25519::ge_p3_dbl
static void ge_p3_dbl(ge_p1p1 *r, const ge_p3 *p)
Definition: mycurve25519.cpp:3895
encrypto::motion::curve25519::fe_0
static void fe_0(fe *h)
Definition: mycurve25519.cpp:1364
encrypto::motion::curve25519::load_4
static uint64_t load_4(const uint8_t *in)
Definition: mycurve25519.cpp:54
mycurve25519.h
encrypto::motion::communication::TcpSetupHelper::SetupConnections
std::vector< std::unique_ptr< Transport > > SetupConnections()
Definition: tcp_transport.cpp:203
encrypto::motion::curve25519::fe_pow22523
static void fe_pow22523(fe *out, const fe *z)
Definition: mycurve25519.cpp:3683
ge_cached::YplusX
fe_loose YplusX
Definition: mycurve25519.h:116
encrypto::motion::curve25519::ge_p3_tobytes
void ge_p3_tobytes(uint8_t s[32], const ge_p3 *h)
Definition: mycurve25519.cpp:3754
encrypto::motion::curve25519::x25519_ge_p1p1_to_p2
void x25519_ge_p1p1_to_p2(ge_p2 *r, const ge_p1p1 *p)
Definition: mycurve25519.cpp:3854