ec_curves.h
Go to the documentation of this file.
1 /**
2  * @file ec_curves.h
3  * @brief Elliptic curves
4  *
5  * @section License
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  *
9  * Copyright (C) 2010-2025 Oryx Embedded SARL. All rights reserved.
10  *
11  * This file is part of CycloneCRYPTO Open.
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software Foundation,
25  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26  *
27  * @author Oryx Embedded SARL (www.oryx-embedded.com)
28  * @version 2.5.0
29  **/
30 
31 #ifndef _EC_CURVES_H
32 #define _EC_CURVES_H
33 
34 //Dependencies
35 #include "core/crypto.h"
36 #include "ecc/ec.h"
37 
38 //Elliptic curves
39 #define SECP112R1_CURVE (&secp112r1Curve)
40 #define SECP112R2_CURVE (&secp112r2Curve)
41 #define SECP128R1_CURVE (&secp128r1Curve)
42 #define SECP128R2_CURVE (&secp128r2Curve)
43 #define SECP160K1_CURVE (&secp160k1Curve)
44 #define SECP160R1_CURVE (&secp160r1Curve)
45 #define SECP160R2_CURVE (&secp160r2Curve)
46 #define SECP192K1_CURVE (&secp192k1Curve)
47 #define SECP192R1_CURVE (&secp192r1Curve)
48 #define SECP224K1_CURVE (&secp224k1Curve)
49 #define SECP224R1_CURVE (&secp224r1Curve)
50 #define SECP256K1_CURVE (&secp256k1Curve)
51 #define SECP256R1_CURVE (&secp256r1Curve)
52 #define SECP384R1_CURVE (&secp384r1Curve)
53 #define SECP521R1_CURVE (&secp521r1Curve)
54 #define BRAINPOOLP160R1_CURVE (&brainpoolP160r1Curve)
55 #define BRAINPOOLP160T1_CURVE (&brainpoolP160t1Curve)
56 #define BRAINPOOLP192R1_CURVE (&brainpoolP192r1Curve)
57 #define BRAINPOOLP192T1_CURVE (&brainpoolP192t1Curve)
58 #define BRAINPOOLP224R1_CURVE (&brainpoolP224r1Curve)
59 #define BRAINPOOLP224T1_CURVE (&brainpoolP224t1Curve)
60 #define BRAINPOOLP256R1_CURVE (&brainpoolP256r1Curve)
61 #define BRAINPOOLP256T1_CURVE (&brainpoolP256t1Curve)
62 #define BRAINPOOLP320R1_CURVE (&brainpoolP320r1Curve)
63 #define BRAINPOOLP320T1_CURVE (&brainpoolP320t1Curve)
64 #define BRAINPOOLP384R1_CURVE (&brainpoolP384r1Curve)
65 #define BRAINPOOLP384T1_CURVE (&brainpoolP384t1Curve)
66 #define BRAINPOOLP512R1_CURVE (&brainpoolP512r1Curve)
67 #define BRAINPOOLP512T1_CURVE (&brainpoolP512t1Curve)
68 #define FRP256V1_CURVE (&frp256v1Curve)
69 #define SM2_CURVE (&sm2Curve)
70 #define X25519_CURVE (&x25519Curve)
71 #define X448_CURVE (&x448Curve)
72 #define ED25519_CURVE (&ed25519Curve)
73 #define ED448_CURVE (&ed448Curve)
74 
75 //C++ guard
76 #ifdef __cplusplus
77 extern "C" {
78 #endif
79 
80 //Constants
81 extern const uint8_t SECP112R1_OID[5];
82 extern const uint8_t SECP112R2_OID[5];
83 extern const uint8_t SECP128R1_OID[5];
84 extern const uint8_t SECP128R2_OID[5];
85 extern const uint8_t SECP160K1_OID[5];
86 extern const uint8_t SECP160R1_OID[5];
87 extern const uint8_t SECP160R2_OID[5];
88 extern const uint8_t SECP192K1_OID[5];
89 extern const uint8_t SECP192R1_OID[8];
90 extern const uint8_t SECP224K1_OID[5];
91 extern const uint8_t SECP224R1_OID[5];
92 extern const uint8_t SECP256K1_OID[5];
93 extern const uint8_t SECP256R1_OID[8];
94 extern const uint8_t SECP384R1_OID[5];
95 extern const uint8_t SECP521R1_OID[5];
96 extern const uint8_t BRAINPOOLP160R1_OID[9];
97 extern const uint8_t BRAINPOOLP160T1_OID[9];
98 extern const uint8_t BRAINPOOLP192R1_OID[9];
99 extern const uint8_t BRAINPOOLP192T1_OID[9];
100 extern const uint8_t BRAINPOOLP224R1_OID[9];
101 extern const uint8_t BRAINPOOLP224T1_OID[9];
102 extern const uint8_t BRAINPOOLP256R1_OID[9];
103 extern const uint8_t BRAINPOOLP256T1_OID[9];
104 extern const uint8_t BRAINPOOLP320R1_OID[9];
105 extern const uint8_t BRAINPOOLP320T1_OID[9];
106 extern const uint8_t BRAINPOOLP384R1_OID[9];
107 extern const uint8_t BRAINPOOLP384T1_OID[9];
108 extern const uint8_t BRAINPOOLP512R1_OID[9];
109 extern const uint8_t BRAINPOOLP512T1_OID[9];
110 extern const uint8_t FRP256V1_OID[10];
111 extern const uint8_t SM2_OID[8];
112 extern const uint8_t X25519_OID[3];
113 extern const uint8_t X448_OID[3];
114 extern const uint8_t ED25519_OID[3];
115 extern const uint8_t ED448_OID[3];
116 
117 extern const EcCurve secp112r1Curve;
118 extern const EcCurve secp112r1Curve;
119 extern const EcCurve secp112r2Curve;
120 extern const EcCurve secp128r1Curve;
121 extern const EcCurve secp128r2Curve;
122 extern const EcCurve secp160k1Curve;
123 extern const EcCurve secp160r1Curve;
124 extern const EcCurve secp160r2Curve;
125 extern const EcCurve secp192k1Curve;
126 extern const EcCurve secp192r1Curve;
127 extern const EcCurve secp224k1Curve;
128 extern const EcCurve secp224r1Curve;
129 extern const EcCurve secp256k1Curve;
130 extern const EcCurve secp256r1Curve;
131 extern const EcCurve secp384r1Curve;
132 extern const EcCurve secp521r1Curve;
133 extern const EcCurve brainpoolP160r1Curve;
134 extern const EcCurve brainpoolP160t1Curve;
135 extern const EcCurve brainpoolP192r1Curve;
136 extern const EcCurve brainpoolP192t1Curve;
137 extern const EcCurve brainpoolP224r1Curve;
138 extern const EcCurve brainpoolP224t1Curve;
139 extern const EcCurve brainpoolP256r1Curve;
140 extern const EcCurve brainpoolP256t1Curve;
141 extern const EcCurve brainpoolP320r1Curve;
142 extern const EcCurve brainpoolP320t1Curve;
143 extern const EcCurve brainpoolP384r1Curve;
144 extern const EcCurve brainpoolP384t1Curve;
145 extern const EcCurve brainpoolP512r1Curve;
146 extern const EcCurve brainpoolP512t1Curve;
147 extern const EcCurve frp256v1Curve;
148 extern const EcCurve sm2Curve;
149 extern const EcCurve x25519Curve;
150 extern const EcCurve x448Curve;
151 extern const EcCurve ed25519Curve;
152 extern const EcCurve ed448Curve;
153 
154 //Fast modular reduction
155 void secp112r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
156 void secp112r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
157 
158 void secp112r2FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
159 void secp112r2ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
160 
161 void secp128r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
162 void secp128r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
163 void secp128r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
164 
165 void secp128r2FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
166 void secp128r2FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
167 void secp128r2ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
168 
169 void secp160k1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
170 void secp160k1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
171 void secp160k1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
172 
173 void secp160r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
174 void secp160r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
175 void secp160r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
176 
177 void secp160r2FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
178 void secp160r2FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
179 void secp160r2ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
180 
181 void secp192k1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
182 void secp192k1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
183 void secp192k1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
184 
185 void secp192r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
186 void secp192r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
187 void secp192r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
188 
189 void secp224k1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
190 void secp224k1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
191 void secp224k1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
192 
193 void secp224r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
194 void secp224r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
195 void secp224r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
196 
197 void secp256k1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
198 void secp256k1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
199 void secp256k1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
200 
201 void secp256r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
202 void secp256r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
203 void secp256r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
204 void secp256r1ScalarInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
205 
206 void secp384r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
207 void secp384r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
208 void secp384r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
209 void secp384r1ScalarInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
210 
211 void secp521r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
212 void secp521r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
213 void secp521r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
214 void secp521r1ScalarInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
215 
216 void brainpoolP160r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
217 void brainpoolP160r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
218 
219 void brainpoolP160t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
220 void brainpoolP160t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
221 
222 void brainpoolP192r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
223 void brainpoolP192r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
224 
225 void brainpoolP192t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
226 void brainpoolP192t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
227 
228 void brainpoolP224r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
229 void brainpoolP224r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
230 
231 void brainpoolP224t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
232 void brainpoolP224t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
233 
234 void brainpoolP256r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
235 void brainpoolP256r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
236 
237 void brainpoolP256t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
238 void brainpoolP256t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
239 
240 void brainpoolP320r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
241 void brainpoolP320r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
242 
243 void brainpoolP320t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
244 void brainpoolP320t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
245 
246 void brainpoolP384r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
247 void brainpoolP384r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
248 
249 void brainpoolP384t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
250 void brainpoolP384t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
251 
252 void brainpoolP512r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
253 void brainpoolP512r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
254 
255 void brainpoolP512t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
256 void brainpoolP512t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
257 
258 void frp256v1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
259 void frp256v1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
260 
261 void sm2FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
262 void sm2FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a);
263 void sm2ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a);
264 
265 const EcCurve *ecGetCurve(const uint8_t *oid, size_t length);
266 
267 //C++ guard
268 #ifdef __cplusplus
269 }
270 #endif
271 
272 #endif
void secp128r2FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp128r2 curve)
Definition: ec_curves.c:2381
void brainpoolP192t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP192t1 curve)
Definition: ec_curves.c:4934
const EcCurve sm2Curve
SM2 elliptic curve.
Definition: ec_curves.c:1794
void frp256v1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (FRP256v1 curve)
Definition: ec_curves.c:5638
void secp128r2FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp128r2 curve)
Definition: ec_curves.c:2445
const uint8_t BRAINPOOLP224R1_OID[9]
Definition: ec_curves.c:84
void secp128r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp128r1 curve)
Definition: ec_curves.c:2348
void secp160r2FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp160r2 curve)
Definition: ec_curves.c:2931
const EcCurve brainpoolP384r1Curve
brainpoolP384r1 elliptic curve
Definition: ec_curves.c:1491
void secp112r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp112r1 curve)
Definition: ec_curves.c:2071
void brainpoolP160r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP160r1 curve)
Definition: ec_curves.c:4742
void secp112r2ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp112r2 curve)
Definition: ec_curves.c:2192
void brainpoolP320r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP320r1 curve)
Definition: ec_curves.c:5254
uint8_t a
Definition: ndp.h:411
void secp192k1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp192k1 curve)
Definition: ec_curves.c:3036
void secp160r2FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp160r2 curve)
Definition: ec_curves.c:2864
const uint8_t SM2_OID[8]
Definition: ec_curves.c:106
const EcCurve brainpoolP256r1Curve
brainpoolP256r1 elliptic curve
Definition: ec_curves.c:1259
void secp160r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp160r1 curve)
Definition: ec_curves.c:2821
void secp256k1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp256k1 curve)
Definition: ec_curves.c:3849
void secp224k1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp224k1 curve)
Definition: ec_curves.c:3521
const EcCurve secp128r1Curve
secp128r1 elliptic curve
Definition: ec_curves.c:229
void secp384r1ScalarInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular inversion (secp384r1 curve)
Definition: ec_curves.c:4401
void secp192r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp192r1 curve)
Definition: ec_curves.c:3286
const EcCurve secp160r1Curve
secp160r1 elliptic curve
Definition: ec_curves.c:388
void brainpoolP256r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP256r1 curve)
Definition: ec_curves.c:5157
const uint8_t BRAINPOOLP256R1_OID[9]
Definition: ec_curves.c:88
void brainpoolP192r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP192r1 curve)
Definition: ec_curves.c:4870
const EcCurve * ecGetCurve(const uint8_t *oid, size_t length)
Get the elliptic curve that matches the specified OID.
Definition: ec_curves.c:5888
const EcCurve secp256r1Curve
secp256r1 elliptic curve
Definition: ec_curves.c:760
const EcCurve x25519Curve
Curve25519 elliptic curve.
Definition: ec_curves.c:1848
const EcCurve brainpoolP224t1Curve
brainpoolP224t1 elliptic curve
Definition: ec_curves.c:1206
void sm2ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (SM2 curve)
Definition: ec_curves.c:5855
const EcCurve brainpoolP256t1Curve
brainpoolP256t1 elliptic curve
Definition: ec_curves.c:1314
const uint8_t X448_OID[3]
Definition: ec_curves.c:110
void brainpoolP320r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP320r1 curve)
Definition: ec_curves.c:5285
void secp256k1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp256k1 curve)
Definition: ec_curves.c:3901
const uint8_t BRAINPOOLP320R1_OID[9]
Definition: ec_curves.c:92
const EcCurve brainpoolP512t1Curve
brainpoolP512t1 elliptic curve
Definition: ec_curves.c:1676
void secp160r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp160r1 curve)
Definition: ec_curves.c:2775
void brainpoolP256r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP256r1 curve)
Definition: ec_curves.c:5126
const uint8_t SECP160R2_OID[5]
Definition: ec_curves.c:58
uint8_t oid[]
Definition: lldp_tlv.h:300
void brainpoolP160t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP160t1 curve)
Definition: ec_curves.c:4806
uint8_t r
Definition: ndp.h:346
void secp160k1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp160k1 curve)
Definition: ec_curves.c:2666
void secp112r2FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp112r2 curve)
Definition: ec_curves.c:2148
const uint8_t SECP128R1_OID[5]
Definition: ec_curves.c:50
const uint8_t BRAINPOOLP512T1_OID[9]
Definition: ec_curves.c:102
const EcCurve secp224r1Curve
secp224r1 elliptic curve
Definition: ec_curves.c:653
void brainpoolP384r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP384r1 curve)
Definition: ec_curves.c:5413
const uint8_t BRAINPOOLP224T1_OID[9]
Definition: ec_curves.c:86
const uint8_t SECP192R1_OID[8]
Definition: ec_curves.c:62
const uint8_t SECP384R1_OID[5]
Definition: ec_curves.c:72
void secp160k1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp160k1 curve)
Definition: ec_curves.c:2604
void brainpoolP512r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP512r1 curve)
Definition: ec_curves.c:5541
void brainpoolP256t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP256t1 curve)
Definition: ec_curves.c:5221
void secp160r2ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp160r2 curve)
Definition: ec_curves.c:2993
void secp224r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp224r1 curve)
Definition: ec_curves.c:3656
void brainpoolP384t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP384t1 curve)
Definition: ec_curves.c:5477
const uint8_t BRAINPOOLP320T1_OID[9]
Definition: ec_curves.c:94
const uint8_t BRAINPOOLP192T1_OID[9]
Definition: ec_curves.c:82
void secp256r1ScalarInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular inversion (secp256r1 curve)
Definition: ec_curves.c:4114
const EcCurve secp112r2Curve
secp112r2 elliptic curve
Definition: ec_curves.c:176
void brainpoolP256t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP256t1 curve)
Definition: ec_curves.c:5190
void secp521r1ScalarInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular inversion (secp521r1 curve)
Definition: ec_curves.c:4680
void brainpoolP384t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP384t1 curve)
Definition: ec_curves.c:5446
const uint8_t SECP256R1_OID[8]
Definition: ec_curves.c:70
void brainpoolP224r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP224r1 curve)
Definition: ec_curves.c:5029
const uint8_t SECP160K1_OID[5]
Definition: ec_curves.c:54
void brainpoolP512t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP512t1 curve)
Definition: ec_curves.c:5574
const EcCurve brainpoolP224r1Curve
brainpoolP224r1 elliptic curve
Definition: ec_curves.c:1153
void secp224r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp224r1 curve)
Definition: ec_curves.c:3713
void secp521r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp521r1 curve)
Definition: ec_curves.c:4596
const EcCurve brainpoolP320r1Curve
brainpoolP320r1 elliptic curve
Definition: ec_curves.c:1369
void secp256r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp256r1 curve)
Definition: ec_curves.c:4036
void secp128r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp128r1 curve)
Definition: ec_curves.c:2299
const uint8_t SECP160R1_OID[5]
Definition: ec_curves.c:56
void brainpoolP512r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP512r1 curve)
Definition: ec_curves.c:5510
General definitions for cryptographic algorithms.
const uint8_t SECP224K1_OID[5]
Definition: ec_curves.c:64
const uint8_t ED448_OID[3]
Definition: ec_curves.c:114
const EcCurve ed448Curve
Ed448 elliptic curve.
Definition: ec_curves.c:2010
const EcCurve secp224k1Curve
secp224k1 elliptic curve
Definition: ec_curves.c:600
void brainpoolP224t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP224t1 curve)
Definition: ec_curves.c:5093
void secp256k1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp256k1 curve)
Definition: ec_curves.c:3746
const uint8_t SECP521R1_OID[5]
Definition: ec_curves.c:74
uint8_t length
Definition: tcp.h:375
const uint8_t SECP112R2_OID[5]
Definition: ec_curves.c:48
const uint8_t SECP256K1_OID[5]
Definition: ec_curves.c:68
const EcCurve x448Curve
Curve448 elliptic curve.
Definition: ec_curves.c:1901
const EcCurve ed25519Curve
Ed25519 elliptic curve.
Definition: ec_curves.c:1957
void secp192r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp192r1 curve)
Definition: ec_curves.c:3210
void secp224k1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp224k1 curve)
Definition: ec_curves.c:3370
void secp521r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp521r1 curve)
Definition: ec_curves.c:4639
void secp192k1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp192k1 curve)
Definition: ec_curves.c:3119
void secp128r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp128r1 curve)
Definition: ec_curves.c:2235
const uint8_t ED25519_OID[3]
Definition: ec_curves.c:112
const EcCurve secp128r2Curve
secp128r2 elliptic curve
Definition: ec_curves.c:282
void brainpoolP224t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP224t1 curve)
Definition: ec_curves.c:5062
void brainpoolP224r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP224r1 curve)
Definition: ec_curves.c:4998
const uint8_t BRAINPOOLP384T1_OID[9]
Definition: ec_curves.c:98
void secp384r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp384r1 curve)
Definition: ec_curves.c:4172
void brainpoolP192r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP192r1 curve)
Definition: ec_curves.c:4901
const EcCurve secp521r1Curve
secp521r1 elliptic curve
Definition: ec_curves.c:874
const EcCurve secp192r1Curve
secp192r1 elliptic curve
Definition: ec_curves.c:547
const uint8_t FRP256V1_OID[10]
Definition: ec_curves.c:104
void brainpoolP320t1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP320t1 curve)
Definition: ec_curves.c:5318
void secp160r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp160r1 curve)
Definition: ec_curves.c:2709
const EcCurve brainpoolP512r1Curve
brainpoolP512r1 elliptic curve
Definition: ec_curves.c:1613
const uint8_t X25519_OID[3]
Definition: ec_curves.c:108
const EcCurve secp112r1Curve
secp112r1 elliptic curve
Definition: ec_curves.h:118
void secp256r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp256r1 curve)
Definition: ec_curves.c:3934
const EcCurve brainpoolP192r1Curve
brainpoolP192r1 elliptic curve
Definition: ec_curves.c:1047
void frp256v1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (FRP256v1 curve)
Definition: ec_curves.c:5669
const EcCurve secp192k1Curve
secp192k1 elliptic curve
Definition: ec_curves.c:494
void brainpoolP192t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP192t1 curve)
Definition: ec_curves.c:4965
const EcCurve brainpoolP160r1Curve
brainpoolP160r1 elliptic curve
Definition: ec_curves.c:941
void secp256r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp256r1 curve)
Definition: ec_curves.c:4083
void secp160k1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp160k1 curve)
Definition: ec_curves.c:2537
void secp224r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp224r1 curve)
Definition: ec_curves.c:3564
const uint8_t BRAINPOOLP384R1_OID[9]
Definition: ec_curves.c:96
const uint8_t BRAINPOOLP256T1_OID[9]
Definition: ec_curves.c:90
const EcCurve secp384r1Curve
secp384r1 elliptic curve
Definition: ec_curves.c:814
void secp521r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (secp521r1 curve)
Definition: ec_curves.c:4457
const EcCurve brainpoolP320t1Curve
brainpoolP320t1 elliptic curve
Definition: ec_curves.c:1430
const EcCurve brainpoolP160t1Curve
brainpoolP160t1 elliptic curve
Definition: ec_curves.c:994
const EcCurve brainpoolP384t1Curve
brainpoolP384t1 elliptic curve
Definition: ec_curves.c:1552
const EcCurve frp256v1Curve
FRP256v1 elliptic curve.
Definition: ec_curves.c:1739
void secp384r1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp384r1 curve)
Definition: ec_curves.c:4314
const uint8_t SECP128R2_OID[5]
Definition: ec_curves.c:52
void brainpoolP160r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP160r1 curve)
Definition: ec_curves.c:4773
void brainpoolP160t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP160t1 curve)
Definition: ec_curves.c:4837
void brainpoolP320t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP320t1 curve)
Definition: ec_curves.c:5349
const uint8_t SECP192K1_OID[5]
Definition: ec_curves.c:60
const uint8_t BRAINPOOLP160R1_OID[9]
Definition: ec_curves.c:76
void secp192r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp192r1 curve)
Definition: ec_curves.c:3337
void sm2FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (SM2 curve)
Definition: ec_curves.c:5702
const EcCurve secp160r2Curve
secp160r2 elliptic curve
Definition: ec_curves.c:441
void sm2FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (SM2 curve)
Definition: ec_curves.c:5800
void secp128r2ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp128r2 curve)
Definition: ec_curves.c:2494
#define EcCurve
Definition: ec.h:346
void brainpoolP512t1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (brainpoolP512t1 curve)
Definition: ec_curves.c:5605
const EcCurve brainpoolP192t1Curve
brainpoolP192t1 elliptic curve
Definition: ec_curves.c:1100
void secp224k1FieldInv(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular inversion (secp224k1 curve)
Definition: ec_curves.c:3463
const uint8_t SECP112R1_OID[5]
Definition: ec_curves.c:46
ECC (Elliptic Curve Cryptography)
const uint8_t BRAINPOOLP512R1_OID[9]
Definition: ec_curves.c:100
const uint8_t BRAINPOOLP192R1_OID[9]
Definition: ec_curves.c:80
void secp192k1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp192k1 curve)
Definition: ec_curves.c:3177
const uint8_t SECP224R1_OID[5]
Definition: ec_curves.c:66
void secp384r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp384r1 curve)
Definition: ec_curves.c:4370
void secp112r1ScalarMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Scalar modular reduction (secp112r1 curve)
Definition: ec_curves.c:2115
const EcCurve secp256k1Curve
secp256k1 elliptic curve
Definition: ec_curves.c:706
void brainpoolP384r1FieldMod(const EcCurve *curve, uint32_t *r, const uint32_t *a)
Field modular reduction (brainpoolP384r1 curve)
Definition: ec_curves.c:5382
const EcCurve secp160k1Curve
secp160k1 elliptic curve
Definition: ec_curves.c:335
const uint8_t BRAINPOOLP160T1_OID[9]
Definition: ec_curves.c:78