xref: /freebsd/crypto/libecc/include/libecc/curves/known/ec_params_brainpoolp384t1.h (revision f0865ec9906d5a18fa2a3b61381f22ce16e606ad)
1 #include <libecc/lib_ecc_config.h>
2 #ifdef WITH_CURVE_BRAINPOOLP384T1
3 
4 #ifndef __EC_PARAMS_BRAINPOOLP384T1_H__
5 #define __EC_PARAMS_BRAINPOOLP384T1_H__
6 #include <libecc/curves/known/ec_params_external.h>
7 static const u8 brainpoolp384t1_p[] = {
8 	0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28,
9 	0x0f, 0x5d, 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf,
10 	0x15, 0x2f, 0x71, 0x09, 0xed, 0x54, 0x56, 0xb4,
11 	0x12, 0xb1, 0xda, 0x19, 0x7f, 0xb7, 0x11, 0x23,
12 	0xac, 0xd3, 0xa7, 0x29, 0x90, 0x1d, 0x1a, 0x71,
13 	0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xec, 0x53,
14 };
15 
16 TO_EC_STR_PARAM(brainpoolp384t1_p);
17 
18 #define CURVE_BRAINPOOLP384T1_P_BITLEN 384
19 static const u8 brainpoolp384t1_p_bitlen[] = {
20 	0x01, 0x80,
21 };
22 
23 TO_EC_STR_PARAM(brainpoolp384t1_p_bitlen);
24 
25 #if (WORD_BYTES == 8)     /* 64-bit words */
26 static const u8 brainpoolp384t1_r[] = {
27 	0x73, 0x46, 0xe1, 0x7d, 0x5c, 0xc7, 0x92, 0xd7,
28 	0xf0, 0xa2, 0x90, 0x81, 0xaf, 0x19, 0xbe, 0x20,
29 	0xea, 0xd0, 0x8e, 0xf6, 0x12, 0xab, 0xa9, 0x4b,
30 	0xed, 0x4e, 0x25, 0xe6, 0x80, 0x48, 0xee, 0xdc,
31 	0x53, 0x2c, 0x58, 0xd6, 0x6f, 0xe2, 0xe5, 0x8e,
32 	0x78, 0xb8, 0xff, 0xec, 0xce, 0xf8, 0x13, 0xad,
33 };
34 
35 TO_EC_STR_PARAM(brainpoolp384t1_r);
36 
37 static const u8 brainpoolp384t1_r_square[] = {
38 	0x36, 0xbf, 0x68, 0x83, 0x17, 0x8d, 0xf8, 0x42,
39 	0xd5, 0xc6, 0xef, 0x3b, 0xa5, 0x7e, 0x05, 0x2c,
40 	0x62, 0x14, 0x01, 0x91, 0x99, 0x18, 0xd5, 0xaf,
41 	0x8e, 0x28, 0xf9, 0x9c, 0xc9, 0x94, 0x08, 0x99,
42 	0x53, 0x52, 0x83, 0x34, 0x3d, 0x7f, 0xd9, 0x65,
43 	0x08, 0x7c, 0xef, 0xff, 0x40, 0xb6, 0x4b, 0xde,
44 };
45 
46 TO_EC_STR_PARAM(brainpoolp384t1_r_square);
47 
48 static const u8 brainpoolp384t1_mpinv[] = {
49 	0x9a, 0x6e, 0xa9, 0x6c, 0xea, 0x9e, 0xc8, 0x25,
50 };
51 
52 TO_EC_STR_PARAM(brainpoolp384t1_mpinv);
53 
54 static const u8 brainpoolp384t1_p_shift[] = {
55 	0x00,
56 };
57 
58 TO_EC_STR_PARAM(brainpoolp384t1_p_shift);
59 
60 static const u8 brainpoolp384t1_p_normalized[] = {
61 	0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28,
62 	0x0f, 0x5d, 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf,
63 	0x15, 0x2f, 0x71, 0x09, 0xed, 0x54, 0x56, 0xb4,
64 	0x12, 0xb1, 0xda, 0x19, 0x7f, 0xb7, 0x11, 0x23,
65 	0xac, 0xd3, 0xa7, 0x29, 0x90, 0x1d, 0x1a, 0x71,
66 	0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xec, 0x53,
67 };
68 
69 TO_EC_STR_PARAM(brainpoolp384t1_p_normalized);
70 
71 static const u8 brainpoolp384t1_p_reciprocal[] = {
72 	0xd1, 0xb5, 0x75, 0xb1, 0x6d, 0x8e, 0xc6, 0xb8,
73 };
74 
75 TO_EC_STR_PARAM(brainpoolp384t1_p_reciprocal);
76 
77 #elif (WORD_BYTES == 4)   /* 32-bit words */
78 static const u8 brainpoolp384t1_r[] = {
79 	0x73, 0x46, 0xe1, 0x7d, 0x5c, 0xc7, 0x92, 0xd7,
80 	0xf0, 0xa2, 0x90, 0x81, 0xaf, 0x19, 0xbe, 0x20,
81 	0xea, 0xd0, 0x8e, 0xf6, 0x12, 0xab, 0xa9, 0x4b,
82 	0xed, 0x4e, 0x25, 0xe6, 0x80, 0x48, 0xee, 0xdc,
83 	0x53, 0x2c, 0x58, 0xd6, 0x6f, 0xe2, 0xe5, 0x8e,
84 	0x78, 0xb8, 0xff, 0xec, 0xce, 0xf8, 0x13, 0xad,
85 };
86 
87 TO_EC_STR_PARAM(brainpoolp384t1_r);
88 
89 static const u8 brainpoolp384t1_r_square[] = {
90 	0x36, 0xbf, 0x68, 0x83, 0x17, 0x8d, 0xf8, 0x42,
91 	0xd5, 0xc6, 0xef, 0x3b, 0xa5, 0x7e, 0x05, 0x2c,
92 	0x62, 0x14, 0x01, 0x91, 0x99, 0x18, 0xd5, 0xaf,
93 	0x8e, 0x28, 0xf9, 0x9c, 0xc9, 0x94, 0x08, 0x99,
94 	0x53, 0x52, 0x83, 0x34, 0x3d, 0x7f, 0xd9, 0x65,
95 	0x08, 0x7c, 0xef, 0xff, 0x40, 0xb6, 0x4b, 0xde,
96 };
97 
98 TO_EC_STR_PARAM(brainpoolp384t1_r_square);
99 
100 static const u8 brainpoolp384t1_mpinv[] = {
101 	0xea, 0x9e, 0xc8, 0x25,
102 };
103 
104 TO_EC_STR_PARAM(brainpoolp384t1_mpinv);
105 
106 static const u8 brainpoolp384t1_p_shift[] = {
107 	0x00,
108 };
109 
110 TO_EC_STR_PARAM(brainpoolp384t1_p_shift);
111 
112 static const u8 brainpoolp384t1_p_normalized[] = {
113 	0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28,
114 	0x0f, 0x5d, 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf,
115 	0x15, 0x2f, 0x71, 0x09, 0xed, 0x54, 0x56, 0xb4,
116 	0x12, 0xb1, 0xda, 0x19, 0x7f, 0xb7, 0x11, 0x23,
117 	0xac, 0xd3, 0xa7, 0x29, 0x90, 0x1d, 0x1a, 0x71,
118 	0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xec, 0x53,
119 };
120 
121 TO_EC_STR_PARAM(brainpoolp384t1_p_normalized);
122 
123 static const u8 brainpoolp384t1_p_reciprocal[] = {
124 	0xd1, 0xb5, 0x75, 0xb1,
125 };
126 
127 TO_EC_STR_PARAM(brainpoolp384t1_p_reciprocal);
128 
129 #elif (WORD_BYTES == 2)   /* 16-bit words */
130 static const u8 brainpoolp384t1_r[] = {
131 	0x73, 0x46, 0xe1, 0x7d, 0x5c, 0xc7, 0x92, 0xd7,
132 	0xf0, 0xa2, 0x90, 0x81, 0xaf, 0x19, 0xbe, 0x20,
133 	0xea, 0xd0, 0x8e, 0xf6, 0x12, 0xab, 0xa9, 0x4b,
134 	0xed, 0x4e, 0x25, 0xe6, 0x80, 0x48, 0xee, 0xdc,
135 	0x53, 0x2c, 0x58, 0xd6, 0x6f, 0xe2, 0xe5, 0x8e,
136 	0x78, 0xb8, 0xff, 0xec, 0xce, 0xf8, 0x13, 0xad,
137 };
138 
139 TO_EC_STR_PARAM(brainpoolp384t1_r);
140 
141 static const u8 brainpoolp384t1_r_square[] = {
142 	0x36, 0xbf, 0x68, 0x83, 0x17, 0x8d, 0xf8, 0x42,
143 	0xd5, 0xc6, 0xef, 0x3b, 0xa5, 0x7e, 0x05, 0x2c,
144 	0x62, 0x14, 0x01, 0x91, 0x99, 0x18, 0xd5, 0xaf,
145 	0x8e, 0x28, 0xf9, 0x9c, 0xc9, 0x94, 0x08, 0x99,
146 	0x53, 0x52, 0x83, 0x34, 0x3d, 0x7f, 0xd9, 0x65,
147 	0x08, 0x7c, 0xef, 0xff, 0x40, 0xb6, 0x4b, 0xde,
148 };
149 
150 TO_EC_STR_PARAM(brainpoolp384t1_r_square);
151 
152 static const u8 brainpoolp384t1_mpinv[] = {
153 	0xc8, 0x25,
154 };
155 
156 TO_EC_STR_PARAM(brainpoolp384t1_mpinv);
157 
158 static const u8 brainpoolp384t1_p_shift[] = {
159 	0x00,
160 };
161 
162 TO_EC_STR_PARAM(brainpoolp384t1_p_shift);
163 
164 static const u8 brainpoolp384t1_p_normalized[] = {
165 	0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28,
166 	0x0f, 0x5d, 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf,
167 	0x15, 0x2f, 0x71, 0x09, 0xed, 0x54, 0x56, 0xb4,
168 	0x12, 0xb1, 0xda, 0x19, 0x7f, 0xb7, 0x11, 0x23,
169 	0xac, 0xd3, 0xa7, 0x29, 0x90, 0x1d, 0x1a, 0x71,
170 	0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xec, 0x53,
171 };
172 
173 TO_EC_STR_PARAM(brainpoolp384t1_p_normalized);
174 
175 static const u8 brainpoolp384t1_p_reciprocal[] = {
176 	0xd1, 0xb5,
177 };
178 
179 TO_EC_STR_PARAM(brainpoolp384t1_p_reciprocal);
180 
181 #else                     /* unknown word size */
182 #error "Unsupported word size"
183 #endif
184 
185 static const u8 brainpoolp384t1_a[] = {
186 	0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28,
187 	0x0f, 0x5d, 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf,
188 	0x15, 0x2f, 0x71, 0x09, 0xed, 0x54, 0x56, 0xb4,
189 	0x12, 0xb1, 0xda, 0x19, 0x7f, 0xb7, 0x11, 0x23,
190 	0xac, 0xd3, 0xa7, 0x29, 0x90, 0x1d, 0x1a, 0x71,
191 	0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xec, 0x50,
192 };
193 
194 TO_EC_STR_PARAM(brainpoolp384t1_a);
195 
196 static const u8 brainpoolp384t1_b[] = {
197 	0x7f, 0x51, 0x9e, 0xad, 0xa7, 0xbd, 0xa8, 0x1b,
198 	0xd8, 0x26, 0xdb, 0xa6, 0x47, 0x91, 0x0f, 0x8c,
199 	0x4b, 0x93, 0x46, 0xed, 0x8c, 0xcd, 0xc6, 0x4e,
200 	0x4b, 0x1a, 0xbd, 0x11, 0x75, 0x6d, 0xce, 0x1d,
201 	0x20, 0x74, 0xaa, 0x26, 0x3b, 0x88, 0x80, 0x5c,
202 	0xed, 0x70, 0x35, 0x5a, 0x33, 0xb4, 0x71, 0xee,
203 };
204 
205 TO_EC_STR_PARAM(brainpoolp384t1_b);
206 
207 #define CURVE_BRAINPOOLP384T1_CURVE_ORDER_BITLEN 384
208 static const u8 brainpoolp384t1_curve_order[] = {
209 	0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28,
210 	0x0f, 0x5d, 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf,
211 	0x15, 0x2f, 0x71, 0x09, 0xed, 0x54, 0x56, 0xb3,
212 	0x1f, 0x16, 0x6e, 0x6c, 0xac, 0x04, 0x25, 0xa7,
213 	0xcf, 0x3a, 0xb6, 0xaf, 0x6b, 0x7f, 0xc3, 0x10,
214 	0x3b, 0x88, 0x32, 0x02, 0xe9, 0x04, 0x65, 0x65,
215 };
216 
217 TO_EC_STR_PARAM(brainpoolp384t1_curve_order);
218 
219 static const u8 brainpoolp384t1_gx[] = {
220 	0x18, 0xde, 0x98, 0xb0, 0x2d, 0xb9, 0xa3, 0x06,
221 	0xf2, 0xaf, 0xcd, 0x72, 0x35, 0xf7, 0x2a, 0x81,
222 	0x9b, 0x80, 0xab, 0x12, 0xeb, 0xd6, 0x53, 0x17,
223 	0x24, 0x76, 0xfe, 0xcd, 0x46, 0x2a, 0xab, 0xff,
224 	0xc4, 0xff, 0x19, 0x1b, 0x94, 0x6a, 0x5f, 0x54,
225 	0xd8, 0xd0, 0xaa, 0x2f, 0x41, 0x88, 0x08, 0xcc,
226 };
227 
228 TO_EC_STR_PARAM(brainpoolp384t1_gx);
229 
230 static const u8 brainpoolp384t1_gy[] = {
231 	0x25, 0xab, 0x05, 0x69, 0x62, 0xd3, 0x06, 0x51,
232 	0xa1, 0x14, 0xaf, 0xd2, 0x75, 0x5a, 0xd3, 0x36,
233 	0x74, 0x7f, 0x93, 0x47, 0x5b, 0x7a, 0x1f, 0xca,
234 	0x3b, 0x88, 0xf2, 0xb6, 0xa2, 0x08, 0xcc, 0xfe,
235 	0x46, 0x94, 0x08, 0x58, 0x4d, 0xc2, 0xb2, 0x91,
236 	0x26, 0x75, 0xbf, 0x5b, 0x9e, 0x58, 0x29, 0x28,
237 };
238 
239 TO_EC_STR_PARAM(brainpoolp384t1_gy);
240 
241 static const u8 brainpoolp384t1_gz[] = {
242 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
243 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
244 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
245 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
247 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
248 };
249 
250 TO_EC_STR_PARAM(brainpoolp384t1_gz);
251 
252 static const u8 brainpoolp384t1_gen_order[] = {
253 	0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28,
254 	0x0f, 0x5d, 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf,
255 	0x15, 0x2f, 0x71, 0x09, 0xed, 0x54, 0x56, 0xb3,
256 	0x1f, 0x16, 0x6e, 0x6c, 0xac, 0x04, 0x25, 0xa7,
257 	0xcf, 0x3a, 0xb6, 0xaf, 0x6b, 0x7f, 0xc3, 0x10,
258 	0x3b, 0x88, 0x32, 0x02, 0xe9, 0x04, 0x65, 0x65,
259 };
260 
261 TO_EC_STR_PARAM(brainpoolp384t1_gen_order);
262 
263 #define CURVE_BRAINPOOLP384T1_Q_BITLEN 384
264 static const u8 brainpoolp384t1_gen_order_bitlen[] = {
265 	0x01, 0x80,
266 };
267 
268 TO_EC_STR_PARAM(brainpoolp384t1_gen_order_bitlen);
269 
270 static const u8 brainpoolp384t1_cofactor[] = {
271 	0x01,
272 };
273 
274 TO_EC_STR_PARAM(brainpoolp384t1_cofactor);
275 
276 static const u8 brainpoolp384t1_alpha_montgomery[] = {
277 	0x00,
278 };
279 TO_EC_STR_PARAM_FIXED_SIZE(brainpoolp384t1_alpha_montgomery, 0);
280 
281 static const u8 brainpoolp384t1_gamma_montgomery[] = {
282 	0x00,
283 };
284 TO_EC_STR_PARAM_FIXED_SIZE(brainpoolp384t1_gamma_montgomery, 0);
285 
286 static const u8 brainpoolp384t1_alpha_edwards[] = {
287 	0x00,
288 };
289 TO_EC_STR_PARAM_FIXED_SIZE(brainpoolp384t1_alpha_edwards, 0);
290 
291 static const u8 brainpoolp384t1_name[] = "BRAINPOOLP384T1";
292 TO_EC_STR_PARAM(brainpoolp384t1_name);
293 
294 static const u8 brainpoolp384t1_oid[] = "1.3.36.3.3.2.8.1.1.12";
295 TO_EC_STR_PARAM(brainpoolp384t1_oid);
296 
297 static const ec_str_params brainpoolp384t1_str_params = {
298 	.p = &brainpoolp384t1_p_str_param,
299 	.p_bitlen = &brainpoolp384t1_p_bitlen_str_param,
300 	.r = &brainpoolp384t1_r_str_param,
301 	.r_square = &brainpoolp384t1_r_square_str_param,
302 	.mpinv = &brainpoolp384t1_mpinv_str_param,
303 	.p_shift = &brainpoolp384t1_p_shift_str_param,
304 	.p_normalized = &brainpoolp384t1_p_normalized_str_param,
305 	.p_reciprocal = &brainpoolp384t1_p_reciprocal_str_param,
306 	.a = &brainpoolp384t1_a_str_param,
307 	.b = &brainpoolp384t1_b_str_param,
308 	.curve_order = &brainpoolp384t1_curve_order_str_param,
309 	.gx = &brainpoolp384t1_gx_str_param,
310 	.gy = &brainpoolp384t1_gy_str_param,
311 	.gz = &brainpoolp384t1_gz_str_param,
312 	.gen_order = &brainpoolp384t1_gen_order_str_param,
313 	.gen_order_bitlen = &brainpoolp384t1_gen_order_bitlen_str_param,
314 	.cofactor = &brainpoolp384t1_cofactor_str_param,
315 	.alpha_montgomery = &brainpoolp384t1_alpha_montgomery_str_param,
316 	.gamma_montgomery = &brainpoolp384t1_gamma_montgomery_str_param,
317 	.alpha_edwards = &brainpoolp384t1_alpha_edwards_str_param,
318 	.oid = &brainpoolp384t1_oid_str_param,
319 	.name = &brainpoolp384t1_name_str_param,
320 };
321 
322 /*
323  * Compute max bit length of all curves for p and q
324  */
325 #ifndef CURVES_MAX_P_BIT_LEN
326 #define CURVES_MAX_P_BIT_LEN    0
327 #endif
328 #if (CURVES_MAX_P_BIT_LEN < CURVE_BRAINPOOLP384T1_P_BITLEN)
329 #undef CURVES_MAX_P_BIT_LEN
330 #define CURVES_MAX_P_BIT_LEN CURVE_BRAINPOOLP384T1_P_BITLEN
331 #endif
332 #ifndef CURVES_MAX_Q_BIT_LEN
333 #define CURVES_MAX_Q_BIT_LEN    0
334 #endif
335 #if (CURVES_MAX_Q_BIT_LEN < CURVE_BRAINPOOLP384T1_Q_BITLEN)
336 #undef CURVES_MAX_Q_BIT_LEN
337 #define CURVES_MAX_Q_BIT_LEN CURVE_BRAINPOOLP384T1_Q_BITLEN
338 #endif
339 #ifndef CURVES_MAX_CURVE_ORDER_BIT_LEN
340 #define CURVES_MAX_CURVE_ORDER_BIT_LEN    0
341 #endif
342 #if (CURVES_MAX_CURVE_ORDER_BIT_LEN < CURVE_BRAINPOOLP384T1_CURVE_ORDER_BITLEN)
343 #undef CURVES_MAX_CURVE_ORDER_BIT_LEN
344 #define CURVES_MAX_CURVE_ORDER_BIT_LEN CURVE_BRAINPOOLP384T1_CURVE_ORDER_BITLEN
345 #endif
346 
347 /*
348  * Compute and adapt max name and oid length
349  */
350 #ifndef MAX_CURVE_OID_LEN
351 #define MAX_CURVE_OID_LEN 0
352 #endif
353 #ifndef MAX_CURVE_NAME_LEN
354 #define MAX_CURVE_NAME_LEN 0
355 #endif
356 #if (MAX_CURVE_OID_LEN < 1)
357 #undef MAX_CURVE_OID_LEN
358 #define MAX_CURVE_OID_LEN 1
359 #endif
360 #if (MAX_CURVE_NAME_LEN < 29)
361 #undef MAX_CURVE_NAME_LEN
362 #define MAX_CURVE_NAME_LEN 29
363 #endif
364 
365 #endif /* __EC_PARAMS_BRAINPOOLP384T1_H__ */
366 
367 #endif /* WITH_CURVE_BRAINPOOLP384T1 */
368