1 /* crypto/ec/ec_curve.c */
3 * Written by Nils Larsch for the OpenSSL project.
5 /* ====================================================================
6 * Copyright (c) 1998-2010 The OpenSSL Project. All rights reserved.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
20 * 3. All advertising materials mentioning features or use of this
21 * software must display the following acknowledgment:
22 * "This product includes software developed by the OpenSSL Project
23 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26 * endorse or promote products derived from this software without
27 * prior written permission. For written permission, please contact
28 * openssl-core@openssl.org.
30 * 5. Products derived from this software may not be called "OpenSSL"
31 * nor may "OpenSSL" appear in their names without prior written
32 * permission of the OpenSSL Project.
34 * 6. Redistributions of any form whatsoever must retain the following
36 * "This product includes software developed by the OpenSSL Project
37 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50 * OF THE POSSIBILITY OF SUCH DAMAGE.
51 * ====================================================================
53 * This product includes cryptographic software written by Eric Young
54 * (eay@cryptsoft.com). This product includes software written by Tim
55 * Hudson (tjh@cryptsoft.com).
58 /* ====================================================================
59 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
61 * Portions of the attached software ("Contribution") are developed by
62 * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
64 * The Contribution is licensed pursuant to the OpenSSL open source
65 * license provided above.
67 * The elliptic curve binary polynomial software is originally written by
68 * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
73 #include <openssl/fips.h>
78 #include <openssl/err.h>
79 #include <openssl/obj_mac.h>
80 #include <openssl/opensslconf.h>
83 int field_type, /* either NID_X9_62_prime_field or
84 * NID_X9_62_characteristic_two_field */
87 unsigned int cofactor; /* promoted to BN_ULONG */
90 /* the nist prime curves */
91 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
92 _EC_NIST_PRIME_192 = {
93 { NID_X9_62_prime_field,20,24,1 },
96 0x30,0x45,0xAE,0x6F,0xC8,0x42,0x2F,0x64,0xED,0x57,
97 0x95,0x28,0xD3,0x81,0x20,0xEA,0xE1,0x21,0x96,0xD5,
100 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
101 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
105 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
106 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
110 0x64,0x21,0x05,0x19,0xE5,0x9C,0x80,0xE7,0x0F,0xA7,
111 0xE9,0xAB,0x72,0x24,0x30,0x49,0xFE,0xB8,0xDE,0xEC,
115 0x18,0x8D,0xA8,0x0E,0xB0,0x30,0x90,0xF6,0x7C,0xBF,
116 0x20,0xEB,0x43,0xA1,0x88,0x00,0xF4,0xFF,0x0A,0xFD,
120 0x07,0x19,0x2b,0x95,0xff,0xc8,0xda,0x78,0x63,0x10,
121 0x11,0xed,0x6b,0x24,0xcd,0xd5,0x73,0xf9,0x77,0xa1,
125 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
126 0xFF,0xFF,0x99,0xDE,0xF8,0x36,0x14,0x6B,0xC9,0xB1,
127 0xB4,0xD2,0x28,0x31 }
130 static const struct { EC_CURVE_DATA h; unsigned char data[20+28*6]; }
131 _EC_NIST_PRIME_224 = {
132 { NID_X9_62_prime_field,20,28,1 },
135 0xBD,0x71,0x34,0x47,0x99,0xD5,0xC7,0xFC,0xDC,0x45,
136 0xB5,0x9F,0xA3,0xB9,0xAB,0x8F,0x6A,0x94,0x8B,0xC5,
139 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
140 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
141 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
144 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
145 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
146 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
149 0xB4,0x05,0x0A,0x85,0x0C,0x04,0xB3,0xAB,0xF5,0x41,
150 0x32,0x56,0x50,0x44,0xB0,0xB7,0xD7,0xBF,0xD8,0xBA,
151 0x27,0x0B,0x39,0x43,0x23,0x55,0xFF,0xB4,
154 0xB7,0x0E,0x0C,0xBD,0x6B,0xB4,0xBF,0x7F,0x32,0x13,
155 0x90,0xB9,0x4A,0x03,0xC1,0xD3,0x56,0xC2,0x11,0x22,
156 0x34,0x32,0x80,0xD6,0x11,0x5C,0x1D,0x21,
159 0xbd,0x37,0x63,0x88,0xb5,0xf7,0x23,0xfb,0x4c,0x22,
160 0xdf,0xe6,0xcd,0x43,0x75,0xa0,0x5a,0x07,0x47,0x64,
161 0x44,0xd5,0x81,0x99,0x85,0x00,0x7e,0x34,
164 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
165 0xFF,0xFF,0xFF,0xFF,0x16,0xA2,0xE0,0xB8,0xF0,0x3E,
166 0x13,0xDD,0x29,0x45,0x5C,0x5C,0x2A,0x3D }
169 static const struct { EC_CURVE_DATA h; unsigned char data[20+48*6]; }
170 _EC_NIST_PRIME_384 = {
171 { NID_X9_62_prime_field,20,48,1 },
174 0xA3,0x35,0x92,0x6A,0xA3,0x19,0xA2,0x7A,0x1D,0x00,
175 0x89,0x6A,0x67,0x73,0xA4,0x82,0x7A,0xCD,0xAC,0x73,
178 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
179 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
180 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
181 0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
182 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
185 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
186 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
187 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
188 0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
189 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC,
191 0xB3,0x31,0x2F,0xA7,0xE2,0x3E,0xE7,0xE4,0x98,0x8E,
192 0x05,0x6B,0xE3,0xF8,0x2D,0x19,0x18,0x1D,0x9C,0x6E,
193 0xFE,0x81,0x41,0x12,0x03,0x14,0x08,0x8F,0x50,0x13,
194 0x87,0x5A,0xC6,0x56,0x39,0x8D,0x8A,0x2E,0xD1,0x9D,
195 0x2A,0x85,0xC8,0xED,0xD3,0xEC,0x2A,0xEF,
197 0xAA,0x87,0xCA,0x22,0xBE,0x8B,0x05,0x37,0x8E,0xB1,
198 0xC7,0x1E,0xF3,0x20,0xAD,0x74,0x6E,0x1D,0x3B,0x62,
199 0x8B,0xA7,0x9B,0x98,0x59,0xF7,0x41,0xE0,0x82,0x54,
200 0x2A,0x38,0x55,0x02,0xF2,0x5D,0xBF,0x55,0x29,0x6C,
201 0x3A,0x54,0x5E,0x38,0x72,0x76,0x0A,0xB7,
203 0x36,0x17,0xde,0x4a,0x96,0x26,0x2c,0x6f,0x5d,0x9e,
204 0x98,0xbf,0x92,0x92,0xdc,0x29,0xf8,0xf4,0x1d,0xbd,
205 0x28,0x9a,0x14,0x7c,0xe9,0xda,0x31,0x13,0xb5,0xf0,
206 0xb8,0xc0,0x0a,0x60,0xb1,0xce,0x1d,0x7e,0x81,0x9d,
207 0x7a,0x43,0x1d,0x7c,0x90,0xea,0x0e,0x5f,
209 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
210 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
211 0xFF,0xFF,0xFF,0xFF,0xC7,0x63,0x4D,0x81,0xF4,0x37,
212 0x2D,0xDF,0x58,0x1A,0x0D,0xB2,0x48,0xB0,0xA7,0x7A,
213 0xEC,0xEC,0x19,0x6A,0xCC,0xC5,0x29,0x73 }
216 static const struct { EC_CURVE_DATA h; unsigned char data[20+66*6]; }
217 _EC_NIST_PRIME_521 = {
218 { NID_X9_62_prime_field,20,66,1 },
221 0xD0,0x9E,0x88,0x00,0x29,0x1C,0xB8,0x53,0x96,0xCC,
222 0x67,0x17,0x39,0x32,0x84,0xAA,0xA0,0xDA,0x64,0xBA,
225 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
226 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
227 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
228 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
229 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
230 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
231 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
234 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
235 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
236 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
237 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
238 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
239 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
240 0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
243 0x00,0x51,0x95,0x3E,0xB9,0x61,0x8E,0x1C,0x9A,0x1F,
244 0x92,0x9A,0x21,0xA0,0xB6,0x85,0x40,0xEE,0xA2,0xDA,
245 0x72,0x5B,0x99,0xB3,0x15,0xF3,0xB8,0xB4,0x89,0x91,
246 0x8E,0xF1,0x09,0xE1,0x56,0x19,0x39,0x51,0xEC,0x7E,
247 0x93,0x7B,0x16,0x52,0xC0,0xBD,0x3B,0xB1,0xBF,0x07,
248 0x35,0x73,0xDF,0x88,0x3D,0x2C,0x34,0xF1,0xEF,0x45,
249 0x1F,0xD4,0x6B,0x50,0x3F,0x00,
252 0x00,0xC6,0x85,0x8E,0x06,0xB7,0x04,0x04,0xE9,0xCD,
253 0x9E,0x3E,0xCB,0x66,0x23,0x95,0xB4,0x42,0x9C,0x64,
254 0x81,0x39,0x05,0x3F,0xB5,0x21,0xF8,0x28,0xAF,0x60,
255 0x6B,0x4D,0x3D,0xBA,0xA1,0x4B,0x5E,0x77,0xEF,0xE7,
256 0x59,0x28,0xFE,0x1D,0xC1,0x27,0xA2,0xFF,0xA8,0xDE,
257 0x33,0x48,0xB3,0xC1,0x85,0x6A,0x42,0x9B,0xF9,0x7E,
258 0x7E,0x31,0xC2,0xE5,0xBD,0x66,
261 0x01,0x18,0x39,0x29,0x6a,0x78,0x9a,0x3b,0xc0,0x04,
262 0x5c,0x8a,0x5f,0xb4,0x2c,0x7d,0x1b,0xd9,0x98,0xf5,
263 0x44,0x49,0x57,0x9b,0x44,0x68,0x17,0xaf,0xbd,0x17,
264 0x27,0x3e,0x66,0x2c,0x97,0xee,0x72,0x99,0x5e,0xf4,
265 0x26,0x40,0xc5,0x50,0xb9,0x01,0x3f,0xad,0x07,0x61,
266 0x35,0x3c,0x70,0x86,0xa2,0x72,0xc2,0x40,0x88,0xbe,
267 0x94,0x76,0x9f,0xd1,0x66,0x50,
270 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
271 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
272 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
273 0xFF,0xFF,0xFF,0xFA,0x51,0x86,0x87,0x83,0xBF,0x2F,
274 0x96,0x6B,0x7F,0xCC,0x01,0x48,0xF7,0x09,0xA5,0xD0,
275 0x3B,0xB5,0xC9,0xB8,0x89,0x9C,0x47,0xAE,0xBB,0x6F,
276 0xB7,0x1E,0x91,0x38,0x64,0x09 }
279 /* the x9.62 prime curves (minus the nist prime curves) */
280 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
281 _EC_X9_62_PRIME_192V2 = {
282 { NID_X9_62_prime_field,20,24,1 },
285 0x31,0xA9,0x2E,0xE2,0x02,0x9F,0xD1,0x0D,0x90,0x1B,
286 0x11,0x3E,0x99,0x07,0x10,0xF0,0xD2,0x1A,0xC6,0xB6,
289 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
290 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
294 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
295 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
299 0xCC,0x22,0xD6,0xDF,0xB9,0x5C,0x6B,0x25,0xE4,0x9C,
300 0x0D,0x63,0x64,0xA4,0xE5,0x98,0x0C,0x39,0x3A,0xA2,
304 0xEE,0xA2,0xBA,0xE7,0xE1,0x49,0x78,0x42,0xF2,0xDE,
305 0x77,0x69,0xCF,0xE9,0xC9,0x89,0xC0,0x72,0xAD,0x69,
309 0x65,0x74,0xd1,0x1d,0x69,0xb6,0xec,0x7a,0x67,0x2b,
310 0xb8,0x2a,0x08,0x3d,0xf2,0xf2,0xb0,0x84,0x7d,0xe9,
314 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
315 0xFF,0xFE,0x5F,0xB1,0xA7,0x24,0xDC,0x80,0x41,0x86,
316 0x48,0xD8,0xDD,0x31 }
319 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
320 _EC_X9_62_PRIME_192V3 = {
321 { NID_X9_62_prime_field,20,24,1 },
324 0xC4,0x69,0x68,0x44,0x35,0xDE,0xB3,0x78,0xC4,0xB6,
325 0x5C,0xA9,0x59,0x1E,0x2A,0x57,0x63,0x05,0x9A,0x2E,
328 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
329 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
333 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
334 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
338 0x22,0x12,0x3D,0xC2,0x39,0x5A,0x05,0xCA,0xA7,0x42,
339 0x3D,0xAE,0xCC,0xC9,0x47,0x60,0xA7,0xD4,0x62,0x25,
343 0x7D,0x29,0x77,0x81,0x00,0xC6,0x5A,0x1D,0xA1,0x78,
344 0x37,0x16,0x58,0x8D,0xCE,0x2B,0x8B,0x4A,0xEE,0x8E,
348 0x38,0xa9,0x0f,0x22,0x63,0x73,0x37,0x33,0x4b,0x49,
349 0xdc,0xb6,0x6a,0x6d,0xc8,0xf9,0x97,0x8a,0xca,0x76,
353 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
354 0xFF,0xFF,0x7A,0x62,0xD0,0x31,0xC8,0x3F,0x42,0x94,
355 0xF6,0x40,0xEC,0x13 }
358 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
359 _EC_X9_62_PRIME_239V1 = {
360 { NID_X9_62_prime_field,20,30,1 },
363 0xE4,0x3B,0xB4,0x60,0xF0,0xB8,0x0C,0xC0,0xC0,0xB0,
364 0x75,0x79,0x8E,0x94,0x80,0x60,0xF8,0x32,0x1B,0x7D,
367 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
368 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
369 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
372 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
373 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
374 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFC,
377 0x6B,0x01,0x6C,0x3B,0xDC,0xF1,0x89,0x41,0xD0,0xD6,
378 0x54,0x92,0x14,0x75,0xCA,0x71,0xA9,0xDB,0x2F,0xB2,
379 0x7D,0x1D,0x37,0x79,0x61,0x85,0xC2,0x94,0x2C,0x0A,
382 0x0F,0xFA,0x96,0x3C,0xDC,0xA8,0x81,0x6C,0xCC,0x33,
383 0xB8,0x64,0x2B,0xED,0xF9,0x05,0xC3,0xD3,0x58,0x57,
384 0x3D,0x3F,0x27,0xFB,0xBD,0x3B,0x3C,0xB9,0xAA,0xAF,
387 0x7d,0xeb,0xe8,0xe4,0xe9,0x0a,0x5d,0xae,0x6e,0x40,
388 0x54,0xca,0x53,0x0b,0xa0,0x46,0x54,0xb3,0x68,0x18,
389 0xce,0x22,0x6b,0x39,0xfc,0xcb,0x7b,0x02,0xf1,0xae,
392 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
393 0xFF,0xFF,0x7F,0xFF,0xFF,0x9E,0x5E,0x9A,0x9F,0x5D,
394 0x90,0x71,0xFB,0xD1,0x52,0x26,0x88,0x90,0x9D,0x0B }
397 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
398 _EC_X9_62_PRIME_239V2 = {
399 { NID_X9_62_prime_field,20,30,1 },
402 0xE8,0xB4,0x01,0x16,0x04,0x09,0x53,0x03,0xCA,0x3B,
403 0x80,0x99,0x98,0x2B,0xE0,0x9F,0xCB,0x9A,0xE6,0x16,
406 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
407 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
408 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
411 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
412 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
413 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFC,
416 0x61,0x7F,0xAB,0x68,0x32,0x57,0x6C,0xBB,0xFE,0xD5,
417 0x0D,0x99,0xF0,0x24,0x9C,0x3F,0xEE,0x58,0xB9,0x4B,
418 0xA0,0x03,0x8C,0x7A,0xE8,0x4C,0x8C,0x83,0x2F,0x2C,
421 0x38,0xAF,0x09,0xD9,0x87,0x27,0x70,0x51,0x20,0xC9,
422 0x21,0xBB,0x5E,0x9E,0x26,0x29,0x6A,0x3C,0xDC,0xF2,
423 0xF3,0x57,0x57,0xA0,0xEA,0xFD,0x87,0xB8,0x30,0xE7,
426 0x5b,0x01,0x25,0xe4,0xdb,0xea,0x0e,0xc7,0x20,0x6d,
427 0xa0,0xfc,0x01,0xd9,0xb0,0x81,0x32,0x9f,0xb5,0x55,
428 0xde,0x6e,0xf4,0x60,0x23,0x7d,0xff,0x8b,0xe4,0xba,
431 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
432 0xFF,0xFF,0x80,0x00,0x00,0xCF,0xA7,0xE8,0x59,0x43,
433 0x77,0xD4,0x14,0xC0,0x38,0x21,0xBC,0x58,0x20,0x63 }
436 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
437 _EC_X9_62_PRIME_239V3 = {
438 { NID_X9_62_prime_field,20,30,1 },
442 0x7D,0x73,0x74,0x16,0x8F,0xFE,0x34,0x71,0xB6,0x0A,
443 0x85,0x76,0x86,0xA1,0x94,0x75,0xD3,0xBF,0xA2,0xFF,
446 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
447 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
448 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
451 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
452 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
453 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFC,
456 0x25,0x57,0x05,0xFA,0x2A,0x30,0x66,0x54,0xB1,0xF4,
457 0xCB,0x03,0xD6,0xA7,0x50,0xA3,0x0C,0x25,0x01,0x02,
458 0xD4,0x98,0x87,0x17,0xD9,0xBA,0x15,0xAB,0x6D,0x3E,
461 0x67,0x68,0xAE,0x8E,0x18,0xBB,0x92,0xCF,0xCF,0x00,
462 0x5C,0x94,0x9A,0xA2,0xC6,0xD9,0x48,0x53,0xD0,0xE6,
463 0x60,0xBB,0xF8,0x54,0xB1,0xC9,0x50,0x5F,0xE9,0x5A,
466 0x16,0x07,0xe6,0x89,0x8f,0x39,0x0c,0x06,0xbc,0x1d,
467 0x55,0x2b,0xad,0x22,0x6f,0x3b,0x6f,0xcf,0xe4,0x8b,
468 0x6e,0x81,0x84,0x99,0xaf,0x18,0xe3,0xed,0x6c,0xf3,
471 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
472 0xFF,0xFF,0x7F,0xFF,0xFF,0x97,0x5D,0xEB,0x41,0xB3,
473 0xA6,0x05,0x7C,0x3C,0x43,0x21,0x46,0x52,0x65,0x51 }
477 static const struct { EC_CURVE_DATA h; unsigned char data[20+32*6]; }
478 _EC_X9_62_PRIME_256V1 = {
479 { NID_X9_62_prime_field,20,32,1 },
482 0xC4,0x9D,0x36,0x08,0x86,0xE7,0x04,0x93,0x6A,0x66,
483 0x78,0xE1,0x13,0x9D,0x26,0xB7,0x81,0x9F,0x7E,0x90,
486 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01,0x00,0x00,
487 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
488 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
492 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01,0x00,0x00,
493 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
494 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
498 0x5A,0xC6,0x35,0xD8,0xAA,0x3A,0x93,0xE7,0xB3,0xEB,
499 0xBD,0x55,0x76,0x98,0x86,0xBC,0x65,0x1D,0x06,0xB0,
500 0xCC,0x53,0xB0,0xF6,0x3B,0xCE,0x3C,0x3E,0x27,0xD2,
504 0x6B,0x17,0xD1,0xF2,0xE1,0x2C,0x42,0x47,0xF8,0xBC,
505 0xE6,0xE5,0x63,0xA4,0x40,0xF2,0x77,0x03,0x7D,0x81,
506 0x2D,0xEB,0x33,0xA0,0xF4,0xA1,0x39,0x45,0xD8,0x98,
510 0x4f,0xe3,0x42,0xe2,0xfe,0x1a,0x7f,0x9b,0x8e,0xe7,
511 0xeb,0x4a,0x7c,0x0f,0x9e,0x16,0x2b,0xce,0x33,0x57,
512 0x6b,0x31,0x5e,0xce,0xcb,0xb6,0x40,0x68,0x37,0xbf,
516 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,
517 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBC,0xE6,0xFA,0xAD,
518 0xA7,0x17,0x9E,0x84,0xF3,0xB9,0xCA,0xC2,0xFC,0x63,
522 /* the secg prime curves (minus the nist and x9.62 prime curves) */
523 static const struct { EC_CURVE_DATA h; unsigned char data[20+14*6]; }
524 _EC_SECG_PRIME_112R1 = {
525 { NID_X9_62_prime_field,20,14,1 },
528 0x00,0xF5,0x0B,0x02,0x8E,0x4D,0x69,0x6E,0x67,0x68,
529 0x75,0x61,0x51,0x75,0x29,0x04,0x72,0x78,0x3F,0xB1,
532 0xDB,0x7C,0x2A,0xBF,0x62,0xE3,0x5E,0x66,0x80,0x76,
536 0xDB,0x7C,0x2A,0xBF,0x62,0xE3,0x5E,0x66,0x80,0x76,
540 0x65,0x9E,0xF8,0xBA,0x04,0x39,0x16,0xEE,0xDE,0x89,
544 0x09,0x48,0x72,0x39,0x99,0x5A,0x5E,0xE7,0x6B,0x55,
548 0xa8,0x9c,0xe5,0xaf,0x87,0x24,0xc0,0xa2,0x3e,0x0e,
552 0xDB,0x7C,0x2A,0xBF,0x62,0xE3,0x5E,0x76,0x28,0xDF,
553 0xAC,0x65,0x61,0xC5 }
556 static const struct { EC_CURVE_DATA h; unsigned char data[20+14*6]; }
557 _EC_SECG_PRIME_112R2 = {
558 { NID_X9_62_prime_field,20,14,4 },
561 0x00,0x27,0x57,0xA1,0x11,0x4D,0x69,0x6E,0x67,0x68,
562 0x75,0x61,0x51,0x75,0x53,0x16,0xC0,0x5E,0x0B,0xD4,
565 0xDB,0x7C,0x2A,0xBF,0x62,0xE3,0x5E,0x66,0x80,0x76,
569 0x61,0x27,0xC2,0x4C,0x05,0xF3,0x8A,0x0A,0xAA,0xF6,
573 0x51,0xDE,0xF1,0x81,0x5D,0xB5,0xED,0x74,0xFC,0xC3,
577 0x4B,0xA3,0x0A,0xB5,0xE8,0x92,0xB4,0xE1,0x64,0x9D,
581 0xad,0xcd,0x46,0xf5,0x88,0x2e,0x37,0x47,0xde,0xf3,
585 0x36,0xDF,0x0A,0xAF,0xD8,0xB8,0xD7,0x59,0x7C,0xA1,
586 0x05,0x20,0xD0,0x4B }
589 static const struct { EC_CURVE_DATA h; unsigned char data[20+16*6]; }
590 _EC_SECG_PRIME_128R1 = {
591 { NID_X9_62_prime_field,20,16,1 },
594 0x00,0x0E,0x0D,0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,
595 0x51,0x75,0x0C,0xC0,0x3A,0x44,0x73,0xD0,0x36,0x79,
598 0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
599 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
602 0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
603 0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
606 0xE8,0x75,0x79,0xC1,0x10,0x79,0xF4,0x3D,0xD8,0x24,
607 0x99,0x3C,0x2C,0xEE,0x5E,0xD3,
610 0x16,0x1F,0xF7,0x52,0x8B,0x89,0x9B,0x2D,0x0C,0x28,
611 0x60,0x7C,0xA5,0x2C,0x5B,0x86,
614 0xcf,0x5a,0xc8,0x39,0x5b,0xaf,0xeb,0x13,0xc0,0x2d,
615 0xa2,0x92,0xdd,0xed,0x7a,0x83,
618 0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x75,0xA3,
619 0x0D,0x1B,0x90,0x38,0xA1,0x15 }
622 static const struct { EC_CURVE_DATA h; unsigned char data[20+16*6]; }
623 _EC_SECG_PRIME_128R2 = {
624 { NID_X9_62_prime_field,20,16,4 },
627 0x00,0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,0x51,0x75,
628 0x12,0xD8,0xF0,0x34,0x31,0xFC,0xE6,0x3B,0x88,0xF4,
631 0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
632 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
635 0xD6,0x03,0x19,0x98,0xD1,0xB3,0xBB,0xFE,0xBF,0x59,
636 0xCC,0x9B,0xBF,0xF9,0xAE,0xE1,
639 0x5E,0xEE,0xFC,0xA3,0x80,0xD0,0x29,0x19,0xDC,0x2C,
640 0x65,0x58,0xBB,0x6D,0x8A,0x5D,
643 0x7B,0x6A,0xA5,0xD8,0x5E,0x57,0x29,0x83,0xE6,0xFB,
644 0x32,0xA7,0xCD,0xEB,0xC1,0x40,
647 0x27,0xb6,0x91,0x6a,0x89,0x4d,0x3a,0xee,0x71,0x06,
648 0xfe,0x80,0x5f,0xc3,0x4b,0x44,
651 0x3F,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xBE,0x00,
652 0x24,0x72,0x06,0x13,0xB5,0xA3 }
655 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
656 _EC_SECG_PRIME_160K1 = {
657 { NID_X9_62_prime_field,0,21,1 },
661 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
662 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xAC,
666 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
667 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
671 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
672 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
676 0x00,0x3B,0x4C,0x38,0x2C,0xE3,0x7A,0xA1,0x92,0xA4,
677 0x01,0x9E,0x76,0x30,0x36,0xF4,0xF5,0xDD,0x4D,0x7E,
681 0x00,0x93,0x8c,0xf9,0x35,0x31,0x8f,0xdc,0xed,0x6b,
682 0xc2,0x82,0x86,0x53,0x17,0x33,0xc3,0xf0,0x3c,0x4f,
686 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
687 0x01,0xB8,0xFA,0x16,0xDF,0xAB,0x9A,0xCA,0x16,0xB6,
691 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
692 _EC_SECG_PRIME_160R1 = {
693 { NID_X9_62_prime_field,20,21,1 },
696 0x10,0x53,0xCD,0xE4,0x2C,0x14,0xD6,0x96,0xE6,0x76,
697 0x87,0x56,0x15,0x17,0x53,0x3B,0xF3,0xF8,0x33,0x45,
700 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
701 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,
705 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
706 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,
710 0x00,0x1C,0x97,0xBE,0xFC,0x54,0xBD,0x7A,0x8B,0x65,
711 0xAC,0xF8,0x9F,0x81,0xD4,0xD4,0xAD,0xC5,0x65,0xFA,
715 0x00,0x4A,0x96,0xB5,0x68,0x8E,0xF5,0x73,0x28,0x46,
716 0x64,0x69,0x89,0x68,0xC3,0x8B,0xB9,0x13,0xCB,0xFC,
720 0x00,0x23,0xa6,0x28,0x55,0x31,0x68,0x94,0x7d,0x59,
721 0xdc,0xc9,0x12,0x04,0x23,0x51,0x37,0x7a,0xc5,0xfb,
725 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
726 0x01,0xF4,0xC8,0xF9,0x27,0xAE,0xD3,0xCA,0x75,0x22,
730 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
731 _EC_SECG_PRIME_160R2 = {
732 { NID_X9_62_prime_field,20,21,1 },
735 0xB9,0x9B,0x99,0xB0,0x99,0xB3,0x23,0xE0,0x27,0x09,
736 0xA4,0xD6,0x96,0xE6,0x76,0x87,0x56,0x15,0x17,0x51,
739 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
740 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xAC,
744 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
745 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xAC,
749 0x00,0xB4,0xE1,0x34,0xD3,0xFB,0x59,0xEB,0x8B,0xAB,
750 0x57,0x27,0x49,0x04,0x66,0x4D,0x5A,0xF5,0x03,0x88,
754 0x00,0x52,0xDC,0xB0,0x34,0x29,0x3A,0x11,0x7E,0x1F,
755 0x4F,0xF1,0x1B,0x30,0xF7,0x19,0x9D,0x31,0x44,0xCE,
759 0x00,0xfe,0xaf,0xfe,0xf2,0xe3,0x31,0xf2,0x96,0xe0,
760 0x71,0xfa,0x0d,0xf9,0x98,0x2c,0xfe,0xa7,0xd4,0x3f,
764 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
765 0x00,0x35,0x1E,0xE7,0x86,0xA8,0x18,0xF3,0xA1,0xA1,
769 static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
770 _EC_SECG_PRIME_192K1 = {
771 { NID_X9_62_prime_field,0,24,1 },
775 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
776 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
780 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
781 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
785 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
786 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
790 0xDB,0x4F,0xF1,0x0E,0xC0,0x57,0xE9,0xAE,0x26,0xB0,
791 0x7D,0x02,0x80,0xB7,0xF4,0x34,0x1D,0xA5,0xD1,0xB1,
795 0x9b,0x2f,0x2f,0x6d,0x9c,0x56,0x28,0xa7,0x84,0x41,
796 0x63,0xd0,0x15,0xbe,0x86,0x34,0x40,0x82,0xaa,0x88,
800 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
801 0xFF,0xFE,0x26,0xF2,0xFC,0x17,0x0F,0x69,0x46,0x6A,
802 0x74,0xDE,0xFD,0x8D }
805 static const struct { EC_CURVE_DATA h; unsigned char data[0+29*6]; }
806 _EC_SECG_PRIME_224K1 = {
807 { NID_X9_62_prime_field,0,29,1 },
811 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
812 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
813 0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xE5,0x6D,
816 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
817 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
818 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
821 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
822 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
823 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
826 0x00,0xA1,0x45,0x5B,0x33,0x4D,0xF0,0x99,0xDF,0x30,
827 0xFC,0x28,0xA1,0x69,0xA4,0x67,0xE9,0xE4,0x70,0x75,
828 0xA9,0x0F,0x7E,0x65,0x0E,0xB6,0xB7,0xA4,0x5C,
831 0x00,0x7e,0x08,0x9f,0xed,0x7f,0xba,0x34,0x42,0x82,
832 0xca,0xfb,0xd6,0xf7,0xe3,0x19,0xf7,0xc0,0xb0,0xbd,
833 0x59,0xe2,0xca,0x4b,0xdb,0x55,0x6d,0x61,0xa5,
836 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
837 0x00,0x00,0x00,0x00,0x01,0xDC,0xE8,0xD2,0xEC,0x61,
838 0x84,0xCA,0xF0,0xA9,0x71,0x76,0x9F,0xB1,0xF7 }
841 static const struct { EC_CURVE_DATA h; unsigned char data[0+32*6]; }
842 _EC_SECG_PRIME_256K1 = {
843 { NID_X9_62_prime_field,0,32,1 },
847 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
848 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
849 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,
853 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
854 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
855 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
859 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
860 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
861 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
865 0x79,0xBE,0x66,0x7E,0xF9,0xDC,0xBB,0xAC,0x55,0xA0,
866 0x62,0x95,0xCE,0x87,0x0B,0x07,0x02,0x9B,0xFC,0xDB,
867 0x2D,0xCE,0x28,0xD9,0x59,0xF2,0x81,0x5B,0x16,0xF8,
871 0x48,0x3a,0xda,0x77,0x26,0xa3,0xc4,0x65,0x5d,0xa4,
872 0xfb,0xfc,0x0e,0x11,0x08,0xa8,0xfd,0x17,0xb4,0x48,
873 0xa6,0x85,0x54,0x19,0x9c,0x47,0xd0,0x8f,0xfb,0x10,
877 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
878 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xBA,0xAE,0xDC,0xE6,
879 0xAF,0x48,0xA0,0x3B,0xBF,0xD2,0x5E,0x8C,0xD0,0x36,
883 /* some wap/wtls curves */
884 static const struct { EC_CURVE_DATA h; unsigned char data[0+15*6]; }
886 { NID_X9_62_prime_field,0,15,1 },
890 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
891 0xFF,0xFF,0xFF,0xFD,0xE7,
894 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
895 0x00,0x00,0x00,0x00,0x00,
898 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
899 0x00,0x00,0x00,0x00,0x03,
902 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
903 0x00,0x00,0x00,0x00,0x01,
906 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
907 0x00,0x00,0x00,0x00,0x02,
910 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xEC,0xEA,
911 0x55,0x1A,0xD8,0x37,0xE9 }
914 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
916 { NID_X9_62_prime_field,0,21,1 },
920 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
921 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x80,
925 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
926 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
930 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
931 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
935 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
936 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
940 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
941 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
945 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
946 0x01,0xCD,0xC9,0x8A,0xE0,0xE2,0xDE,0x57,0x4A,0xBF,
950 static const struct { EC_CURVE_DATA h; unsigned char data[0+28*6]; }
952 { NID_X9_62_prime_field,0,28,1 },
956 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
957 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
958 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
961 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
962 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
963 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
966 0xB4,0x05,0x0A,0x85,0x0C,0x04,0xB3,0xAB,0xF5,0x41,
967 0x32,0x56,0x50,0x44,0xB0,0xB7,0xD7,0xBF,0xD8,0xBA,
968 0x27,0x0B,0x39,0x43,0x23,0x55,0xFF,0xB4,
971 0xB7,0x0E,0x0C,0xBD,0x6B,0xB4,0xBF,0x7F,0x32,0x13,
972 0x90,0xB9,0x4A,0x03,0xC1,0xD3,0x56,0xC2,0x11,0x22,
973 0x34,0x32,0x80,0xD6,0x11,0x5C,0x1D,0x21,
976 0xbd,0x37,0x63,0x88,0xb5,0xf7,0x23,0xfb,0x4c,0x22,
977 0xdf,0xe6,0xcd,0x43,0x75,0xa0,0x5a,0x07,0x47,0x64,
978 0x44,0xd5,0x81,0x99,0x85,0x00,0x7e,0x34,
981 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
982 0xFF,0xFF,0xFF,0xFF,0x16,0xA2,0xE0,0xB8,0xF0,0x3E,
983 0x13,0xDD,0x29,0x45,0x5C,0x5C,0x2A,0x3D }
986 #ifndef OPENSSL_NO_EC2M
988 /* characteristic two curves */
989 static const struct { EC_CURVE_DATA h; unsigned char data[20+15*6]; }
990 _EC_SECG_CHAR2_113R1 = {
991 { NID_X9_62_characteristic_two_field,20,15,2 },
994 0x10,0xE7,0x23,0xAB,0x14,0xD6,0x96,0xE6,0x76,0x87,
995 0x56,0x15,0x17,0x56,0xFE,0xBF,0x8F,0xCB,0x49,0xA9,
998 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
999 0x00,0x00,0x00,0x02,0x01,
1002 0x00,0x30,0x88,0x25,0x0C,0xA6,0xE7,0xC7,0xFE,0x64,
1003 0x9C,0xE8,0x58,0x20,0xF7,
1006 0x00,0xE8,0xBE,0xE4,0xD3,0xE2,0x26,0x07,0x44,0x18,
1007 0x8B,0xE0,0xE9,0xC7,0x23,
1010 0x00,0x9D,0x73,0x61,0x6F,0x35,0xF4,0xAB,0x14,0x07,
1011 0xD7,0x35,0x62,0xC1,0x0F,
1014 0x00,0xA5,0x28,0x30,0x27,0x79,0x58,0xEE,0x84,0xD1,
1015 0x31,0x5E,0xD3,0x18,0x86,
1018 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD9,0xCC,
1019 0xEC,0x8A,0x39,0xE5,0x6F }
1022 static const struct { EC_CURVE_DATA h; unsigned char data[20+15*6]; }
1023 _EC_SECG_CHAR2_113R2 = {
1024 { NID_X9_62_characteristic_two_field,20,15,2 },
1027 0x10,0xC0,0xFB,0x15,0x76,0x08,0x60,0xDE,0xF1,0xEE,
1028 0xF4,0xD6,0x96,0xE6,0x76,0x87,0x56,0x15,0x17,0x5D,
1031 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1032 0x00,0x00,0x00,0x02,0x01,
1035 0x00,0x68,0x99,0x18,0xDB,0xEC,0x7E,0x5A,0x0D,0xD6,
1036 0xDF,0xC0,0xAA,0x55,0xC7,
1039 0x00,0x95,0xE9,0xA9,0xEC,0x9B,0x29,0x7B,0xD4,0xBF,
1040 0x36,0xE0,0x59,0x18,0x4F,
1043 0x01,0xA5,0x7A,0x6A,0x7B,0x26,0xCA,0x5E,0xF5,0x2F,
1044 0xCD,0xB8,0x16,0x47,0x97,
1047 0x00,0xB3,0xAD,0xC9,0x4E,0xD1,0xFE,0x67,0x4C,0x06,
1048 0xE6,0x95,0xBA,0xBA,0x1D,
1051 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x78,
1052 0x9B,0x24,0x96,0xAF,0x93 }
1055 static const struct { EC_CURVE_DATA h; unsigned char data[20+17*6]; }
1056 _EC_SECG_CHAR2_131R1 = {
1057 { NID_X9_62_characteristic_two_field,20,17,2 },
1060 0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,0x51,0x75,0x98,
1061 0x5B,0xD3,0xAD,0xBA,0xDA,0x21,0xB4,0x3A,0x97,0xE2,
1064 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1065 0x00,0x00,0x00,0x00,0x00,0x01,0x0D,
1068 0x07,0xA1,0x1B,0x09,0xA7,0x6B,0x56,0x21,0x44,0x41,
1069 0x8F,0xF3,0xFF,0x8C,0x25,0x70,0xB8,
1072 0x02,0x17,0xC0,0x56,0x10,0x88,0x4B,0x63,0xB9,0xC6,
1073 0xC7,0x29,0x16,0x78,0xF9,0xD3,0x41,
1076 0x00,0x81,0xBA,0xF9,0x1F,0xDF,0x98,0x33,0xC4,0x0F,
1077 0x9C,0x18,0x13,0x43,0x63,0x83,0x99,
1080 0x07,0x8C,0x6E,0x7E,0xA3,0x8C,0x00,0x1F,0x73,0xC8,
1081 0x13,0x4B,0x1B,0x4E,0xF9,0xE1,0x50,
1084 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x31,
1085 0x23,0x95,0x3A,0x94,0x64,0xB5,0x4D }
1088 static const struct { EC_CURVE_DATA h; unsigned char data[20+17*6]; }
1089 _EC_SECG_CHAR2_131R2 = {
1090 { NID_X9_62_characteristic_two_field,20,17,2 },
1093 0x98,0x5B,0xD3,0xAD,0xBA,0xD4,0xD6,0x96,0xE6,0x76,
1094 0x87,0x56,0x15,0x17,0x5A,0x21,0xB4,0x3A,0x97,0xE3,
1097 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1098 0x00,0x00,0x00,0x00,0x00,0x01,0x0D,
1101 0x03,0xE5,0xA8,0x89,0x19,0xD7,0xCA,0xFC,0xBF,0x41,
1102 0x5F,0x07,0xC2,0x17,0x65,0x73,0xB2,
1105 0x04,0xB8,0x26,0x6A,0x46,0xC5,0x56,0x57,0xAC,0x73,
1106 0x4C,0xE3,0x8F,0x01,0x8F,0x21,0x92,
1109 0x03,0x56,0xDC,0xD8,0xF2,0xF9,0x50,0x31,0xAD,0x65,
1110 0x2D,0x23,0x95,0x1B,0xB3,0x66,0xA8,
1113 0x06,0x48,0xF0,0x6D,0x86,0x79,0x40,0xA5,0x36,0x6D,
1114 0x9E,0x26,0x5D,0xE9,0xEB,0x24,0x0F,
1117 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x69,
1118 0x54,0xA2,0x33,0x04,0x9B,0xA9,0x8F }
1121 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
1122 _EC_NIST_CHAR2_163K = {
1123 { NID_X9_62_characteristic_two_field,0,21,2 },
1127 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1128 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1132 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1133 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1137 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1138 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1142 0x02,0xFE,0x13,0xC0,0x53,0x7B,0xBC,0x11,0xAC,0xAA,
1143 0x07,0xD7,0x93,0xDE,0x4E,0x6D,0x5E,0x5C,0x94,0xEE,
1147 0x02,0x89,0x07,0x0F,0xB0,0x5D,0x38,0xFF,0x58,0x32,
1148 0x1F,0x2E,0x80,0x05,0x36,0xD5,0x38,0xCC,0xDA,0xA3,
1152 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1153 0x02,0x01,0x08,0xA2,0xE0,0xCC,0x0D,0x99,0xF8,0xA5,
1157 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
1158 _EC_SECG_CHAR2_163R1 = {
1159 { NID_X9_62_characteristic_two_field,0,21,2 },
1163 /* The algorithm used to derive the curve parameters from
1164 * the seed used here is slightly different than the
1165 * algorithm described in X9.62 . */
1166 0x24,0xB7,0xB1,0x37,0xC8,0xA1,0x4D,0x69,0x6E,0x67,
1167 0x68,0x75,0x61,0x51,0x75,0x6F,0xD0,0xDA,0x2E,0x5C,
1170 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1171 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1175 0x07,0xB6,0x88,0x2C,0xAA,0xEF,0xA8,0x4F,0x95,0x54,
1176 0xFF,0x84,0x28,0xBD,0x88,0xE2,0x46,0xD2,0x78,0x2A,
1180 0x07,0x13,0x61,0x2D,0xCD,0xDC,0xB4,0x0A,0xAB,0x94,
1181 0x6B,0xDA,0x29,0xCA,0x91,0xF7,0x3A,0xF9,0x58,0xAF,
1185 0x03,0x69,0x97,0x96,0x97,0xAB,0x43,0x89,0x77,0x89,
1186 0x56,0x67,0x89,0x56,0x7F,0x78,0x7A,0x78,0x76,0xA6,
1190 0x00,0x43,0x5E,0xDB,0x42,0xEF,0xAF,0xB2,0x98,0x9D,
1191 0x51,0xFE,0xFC,0xE3,0xC8,0x09,0x88,0xF4,0x1F,0xF8,
1195 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1196 0xFF,0x48,0xAA,0xB6,0x89,0xC2,0x9C,0xA7,0x10,0x27,
1200 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
1201 _EC_NIST_CHAR2_163B = {
1202 { NID_X9_62_characteristic_two_field,0,21,2 },
1206 /* The seed here was used to created the curve parameters in normal
1207 * basis representation (and not the polynomial representation used here) */
1208 0x85,0xE2,0x5B,0xFE,0x5C,0x86,0x22,0x6C,0xDB,0x12,
1209 0x01,0x6F,0x75,0x53,0xF9,0xD0,0xE6,0x93,0xA2,0x68,
1212 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1213 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1217 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1218 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1222 0x02,0x0A,0x60,0x19,0x07,0xB8,0xC9,0x53,0xCA,0x14,
1223 0x81,0xEB,0x10,0x51,0x2F,0x78,0x74,0x4A,0x32,0x05,
1227 0x03,0xF0,0xEB,0xA1,0x62,0x86,0xA2,0xD5,0x7E,0xA0,
1228 0x99,0x11,0x68,0xD4,0x99,0x46,0x37,0xE8,0x34,0x3E,
1232 0x00,0xD5,0x1F,0xBC,0x6C,0x71,0xA0,0x09,0x4F,0xA2,
1233 0xCD,0xD5,0x45,0xB1,0x1C,0x5C,0x0C,0x79,0x73,0x24,
1237 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1238 0x02,0x92,0xFE,0x77,0xE7,0x0C,0x12,0xA4,0x23,0x4C,
1242 static const struct { EC_CURVE_DATA h; unsigned char data[20+25*6]; }
1243 _EC_SECG_CHAR2_193R1 = {
1244 { NID_X9_62_characteristic_two_field,20,25,2 },
1247 0x10,0x3F,0xAE,0xC7,0x4D,0x69,0x6E,0x67,0x68,0x75,
1248 0x61,0x51,0x75,0x77,0x7F,0xC5,0xB1,0x91,0xEF,0x30,
1251 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1252 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1253 0x00,0x00,0x00,0x80,0x01,
1256 0x00,0x17,0x85,0x8F,0xEB,0x7A,0x98,0x97,0x51,0x69,
1257 0xE1,0x71,0xF7,0x7B,0x40,0x87,0xDE,0x09,0x8A,0xC8,
1258 0xA9,0x11,0xDF,0x7B,0x01,
1261 0x00,0xFD,0xFB,0x49,0xBF,0xE6,0xC3,0xA8,0x9F,0xAC,
1262 0xAD,0xAA,0x7A,0x1E,0x5B,0xBC,0x7C,0xC1,0xC2,0xE5,
1263 0xD8,0x31,0x47,0x88,0x14,
1266 0x01,0xF4,0x81,0xBC,0x5F,0x0F,0xF8,0x4A,0x74,0xAD,
1267 0x6C,0xDF,0x6F,0xDE,0xF4,0xBF,0x61,0x79,0x62,0x53,
1268 0x72,0xD8,0xC0,0xC5,0xE1,
1271 0x00,0x25,0xE3,0x99,0xF2,0x90,0x37,0x12,0xCC,0xF3,
1272 0xEA,0x9E,0x3A,0x1A,0xD1,0x7F,0xB0,0xB3,0x20,0x1B,
1273 0x6A,0xF7,0xCE,0x1B,0x05,
1276 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1277 0x00,0x00,0x00,0xC7,0xF3,0x4A,0x77,0x8F,0x44,0x3A,
1278 0xCC,0x92,0x0E,0xBA,0x49 }
1281 static const struct { EC_CURVE_DATA h; unsigned char data[20+25*6]; }
1282 _EC_SECG_CHAR2_193R2 = {
1283 { NID_X9_62_characteristic_two_field,20,25,2 },
1286 0x10,0xB7,0xB4,0xD6,0x96,0xE6,0x76,0x87,0x56,0x15,
1287 0x17,0x51,0x37,0xC8,0xA1,0x6F,0xD0,0xDA,0x22,0x11,
1290 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1291 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1292 0x00,0x00,0x00,0x80,0x01,
1295 0x01,0x63,0xF3,0x5A,0x51,0x37,0xC2,0xCE,0x3E,0xA6,
1296 0xED,0x86,0x67,0x19,0x0B,0x0B,0xC4,0x3E,0xCD,0x69,
1297 0x97,0x77,0x02,0x70,0x9B,
1300 0x00,0xC9,0xBB,0x9E,0x89,0x27,0xD4,0xD6,0x4C,0x37,
1301 0x7E,0x2A,0xB2,0x85,0x6A,0x5B,0x16,0xE3,0xEF,0xB7,
1302 0xF6,0x1D,0x43,0x16,0xAE,
1305 0x00,0xD9,0xB6,0x7D,0x19,0x2E,0x03,0x67,0xC8,0x03,
1306 0xF3,0x9E,0x1A,0x7E,0x82,0xCA,0x14,0xA6,0x51,0x35,
1307 0x0A,0xAE,0x61,0x7E,0x8F,
1310 0x01,0xCE,0x94,0x33,0x56,0x07,0xC3,0x04,0xAC,0x29,
1311 0xE7,0xDE,0xFB,0xD9,0xCA,0x01,0xF5,0x96,0xF9,0x27,
1312 0x22,0x4C,0xDE,0xCF,0x6C,
1315 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1316 0x00,0x00,0x01,0x5A,0xAB,0x56,0x1B,0x00,0x54,0x13,
1317 0xCC,0xD4,0xEE,0x99,0xD5 }
1320 static const struct { EC_CURVE_DATA h; unsigned char data[0+30*6]; }
1321 _EC_NIST_CHAR2_233K = {
1322 { NID_X9_62_characteristic_two_field,0,30,4 },
1325 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1326 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1327 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1330 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1331 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1332 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1335 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1336 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1337 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1340 0x01,0x72,0x32,0xBA,0x85,0x3A,0x7E,0x73,0x1A,0xF1,
1341 0x29,0xF2,0x2F,0xF4,0x14,0x95,0x63,0xA4,0x19,0xC2,
1342 0x6B,0xF5,0x0A,0x4C,0x9D,0x6E,0xEF,0xAD,0x61,0x26,
1345 0x01,0xDB,0x53,0x7D,0xEC,0xE8,0x19,0xB7,0xF7,0x0F,
1346 0x55,0x5A,0x67,0xC4,0x27,0xA8,0xCD,0x9B,0xF1,0x8A,
1347 0xEB,0x9B,0x56,0xE0,0xC1,0x10,0x56,0xFA,0xE6,0xA3,
1350 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1351 0x00,0x00,0x00,0x00,0x00,0x06,0x9D,0x5B,0xB9,0x15,
1352 0xBC,0xD4,0x6E,0xFB,0x1A,0xD5,0xF1,0x73,0xAB,0xDF }
1355 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
1356 _EC_NIST_CHAR2_233B = {
1357 { NID_X9_62_characteristic_two_field,20,30,2 },
1360 0x74,0xD5,0x9F,0xF0,0x7F,0x6B,0x41,0x3D,0x0E,0xA1,
1361 0x4B,0x34,0x4B,0x20,0xA2,0xDB,0x04,0x9B,0x50,0xC3,
1364 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1365 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1366 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1369 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1370 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1371 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1374 0x00,0x66,0x64,0x7E,0xDE,0x6C,0x33,0x2C,0x7F,0x8C,
1375 0x09,0x23,0xBB,0x58,0x21,0x3B,0x33,0x3B,0x20,0xE9,
1376 0xCE,0x42,0x81,0xFE,0x11,0x5F,0x7D,0x8F,0x90,0xAD,
1379 0x00,0xFA,0xC9,0xDF,0xCB,0xAC,0x83,0x13,0xBB,0x21,
1380 0x39,0xF1,0xBB,0x75,0x5F,0xEF,0x65,0xBC,0x39,0x1F,
1381 0x8B,0x36,0xF8,0xF8,0xEB,0x73,0x71,0xFD,0x55,0x8B,
1384 0x01,0x00,0x6A,0x08,0xA4,0x19,0x03,0x35,0x06,0x78,
1385 0xE5,0x85,0x28,0xBE,0xBF,0x8A,0x0B,0xEF,0xF8,0x67,
1386 0xA7,0xCA,0x36,0x71,0x6F,0x7E,0x01,0xF8,0x10,0x52,
1389 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1390 0x00,0x00,0x00,0x00,0x00,0x13,0xE9,0x74,0xE7,0x2F,
1391 0x8A,0x69,0x22,0x03,0x1D,0x26,0x03,0xCF,0xE0,0xD7 }
1394 static const struct { EC_CURVE_DATA h; unsigned char data[0+30*6]; }
1395 _EC_SECG_CHAR2_239K1 = {
1396 { NID_X9_62_characteristic_two_field,0,30,4 },
1399 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1400 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1401 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1404 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1405 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1406 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1409 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1410 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1411 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1414 0x29,0xA0,0xB6,0xA8,0x87,0xA9,0x83,0xE9,0x73,0x09,
1415 0x88,0xA6,0x87,0x27,0xA8,0xB2,0xD1,0x26,0xC4,0x4C,
1416 0xC2,0xCC,0x7B,0x2A,0x65,0x55,0x19,0x30,0x35,0xDC,
1419 0x76,0x31,0x08,0x04,0xF1,0x2E,0x54,0x9B,0xDB,0x01,
1420 0x1C,0x10,0x30,0x89,0xE7,0x35,0x10,0xAC,0xB2,0x75,
1421 0xFC,0x31,0x2A,0x5D,0xC6,0xB7,0x65,0x53,0xF0,0xCA,
1424 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1425 0x00,0x00,0x00,0x00,0x00,0x5A,0x79,0xFE,0xC6,0x7C,
1426 0xB6,0xE9,0x1F,0x1C,0x1D,0xA8,0x00,0xE4,0x78,0xA5 }
1429 static const struct { EC_CURVE_DATA h; unsigned char data[0+36*6]; }
1430 _EC_NIST_CHAR2_283K = {
1431 { NID_X9_62_characteristic_two_field,0,36,4 },
1434 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1435 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1436 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1437 0x00,0x00,0x00,0x00,0x10,0xA1,
1440 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1441 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1442 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1443 0x00,0x00,0x00,0x00,0x00,0x00,
1446 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1447 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1448 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1449 0x00,0x00,0x00,0x00,0x00,0x01,
1452 0x05,0x03,0x21,0x3F,0x78,0xCA,0x44,0x88,0x3F,0x1A,
1453 0x3B,0x81,0x62,0xF1,0x88,0xE5,0x53,0xCD,0x26,0x5F,
1454 0x23,0xC1,0x56,0x7A,0x16,0x87,0x69,0x13,0xB0,0xC2,
1455 0xAC,0x24,0x58,0x49,0x28,0x36,
1458 0x01,0xCC,0xDA,0x38,0x0F,0x1C,0x9E,0x31,0x8D,0x90,
1459 0xF9,0x5D,0x07,0xE5,0x42,0x6F,0xE8,0x7E,0x45,0xC0,
1460 0xE8,0x18,0x46,0x98,0xE4,0x59,0x62,0x36,0x4E,0x34,
1461 0x11,0x61,0x77,0xDD,0x22,0x59,
1464 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1465 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE9,0xAE,
1466 0x2E,0xD0,0x75,0x77,0x26,0x5D,0xFF,0x7F,0x94,0x45,
1467 0x1E,0x06,0x1E,0x16,0x3C,0x61 }
1470 static const struct { EC_CURVE_DATA h; unsigned char data[20+36*6]; }
1471 _EC_NIST_CHAR2_283B = {
1472 { NID_X9_62_characteristic_two_field,20,36,2 },
1475 0x77,0xE2,0xB0,0x73,0x70,0xEB,0x0F,0x83,0x2A,0x6D,
1476 0xD5,0xB6,0x2D,0xFC,0x88,0xCD,0x06,0xBB,0x84,0xBE,
1479 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1480 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1481 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1482 0x00,0x00,0x00,0x00,0x10,0xA1,
1485 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1486 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1487 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1488 0x00,0x00,0x00,0x00,0x00,0x01,
1491 0x02,0x7B,0x68,0x0A,0xC8,0xB8,0x59,0x6D,0xA5,0xA4,
1492 0xAF,0x8A,0x19,0xA0,0x30,0x3F,0xCA,0x97,0xFD,0x76,
1493 0x45,0x30,0x9F,0xA2,0xA5,0x81,0x48,0x5A,0xF6,0x26,
1494 0x3E,0x31,0x3B,0x79,0xA2,0xF5,
1497 0x05,0xF9,0x39,0x25,0x8D,0xB7,0xDD,0x90,0xE1,0x93,
1498 0x4F,0x8C,0x70,0xB0,0xDF,0xEC,0x2E,0xED,0x25,0xB8,
1499 0x55,0x7E,0xAC,0x9C,0x80,0xE2,0xE1,0x98,0xF8,0xCD,
1500 0xBE,0xCD,0x86,0xB1,0x20,0x53,
1503 0x03,0x67,0x68,0x54,0xFE,0x24,0x14,0x1C,0xB9,0x8F,
1504 0xE6,0xD4,0xB2,0x0D,0x02,0xB4,0x51,0x6F,0xF7,0x02,
1505 0x35,0x0E,0xDD,0xB0,0x82,0x67,0x79,0xC8,0x13,0xF0,
1506 0xDF,0x45,0xBE,0x81,0x12,0xF4,
1509 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1510 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0x90,
1511 0x39,0x96,0x60,0xFC,0x93,0x8A,0x90,0x16,0x5B,0x04,
1512 0x2A,0x7C,0xEF,0xAD,0xB3,0x07 }
1515 static const struct { EC_CURVE_DATA h; unsigned char data[0+52*6]; }
1516 _EC_NIST_CHAR2_409K = {
1517 { NID_X9_62_characteristic_two_field,0,52,4 },
1521 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1522 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1523 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1524 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1525 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1529 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1530 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1531 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1532 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1533 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1537 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1538 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1539 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1540 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1541 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1545 0x00,0x60,0xF0,0x5F,0x65,0x8F,0x49,0xC1,0xAD,0x3A,
1546 0xB1,0x89,0x0F,0x71,0x84,0x21,0x0E,0xFD,0x09,0x87,
1547 0xE3,0x07,0xC8,0x4C,0x27,0xAC,0xCF,0xB8,0xF9,0xF6,
1548 0x7C,0xC2,0xC4,0x60,0x18,0x9E,0xB5,0xAA,0xAA,0x62,
1549 0xEE,0x22,0x2E,0xB1,0xB3,0x55,0x40,0xCF,0xE9,0x02,
1553 0x01,0xE3,0x69,0x05,0x0B,0x7C,0x4E,0x42,0xAC,0xBA,
1554 0x1D,0xAC,0xBF,0x04,0x29,0x9C,0x34,0x60,0x78,0x2F,
1555 0x91,0x8E,0xA4,0x27,0xE6,0x32,0x51,0x65,0xE9,0xEA,
1556 0x10,0xE3,0xDA,0x5F,0x6C,0x42,0xE9,0xC5,0x52,0x15,
1557 0xAA,0x9C,0xA2,0x7A,0x58,0x63,0xEC,0x48,0xD8,0xE0,
1561 0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1562 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1563 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x5F,0x83,0xB2,
1564 0xD4,0xEA,0x20,0x40,0x0E,0xC4,0x55,0x7D,0x5E,0xD3,
1565 0xE3,0xE7,0xCA,0x5B,0x4B,0x5C,0x83,0xB8,0xE0,0x1E,
1569 static const struct { EC_CURVE_DATA h; unsigned char data[20+52*6]; }
1570 _EC_NIST_CHAR2_409B = {
1571 { NID_X9_62_characteristic_two_field,20,52,2 },
1574 0x40,0x99,0xB5,0xA4,0x57,0xF9,0xD6,0x9F,0x79,0x21,
1575 0x3D,0x09,0x4C,0x4B,0xCD,0x4D,0x42,0x62,0x21,0x0B,
1578 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1579 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1580 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1581 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1582 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1586 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1587 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1588 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1589 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1590 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1594 0x00,0x21,0xA5,0xC2,0xC8,0xEE,0x9F,0xEB,0x5C,0x4B,
1595 0x9A,0x75,0x3B,0x7B,0x47,0x6B,0x7F,0xD6,0x42,0x2E,
1596 0xF1,0xF3,0xDD,0x67,0x47,0x61,0xFA,0x99,0xD6,0xAC,
1597 0x27,0xC8,0xA9,0xA1,0x97,0xB2,0x72,0x82,0x2F,0x6C,
1598 0xD5,0x7A,0x55,0xAA,0x4F,0x50,0xAE,0x31,0x7B,0x13,
1602 0x01,0x5D,0x48,0x60,0xD0,0x88,0xDD,0xB3,0x49,0x6B,
1603 0x0C,0x60,0x64,0x75,0x62,0x60,0x44,0x1C,0xDE,0x4A,
1604 0xF1,0x77,0x1D,0x4D,0xB0,0x1F,0xFE,0x5B,0x34,0xE5,
1605 0x97,0x03,0xDC,0x25,0x5A,0x86,0x8A,0x11,0x80,0x51,
1606 0x56,0x03,0xAE,0xAB,0x60,0x79,0x4E,0x54,0xBB,0x79,
1610 0x00,0x61,0xB1,0xCF,0xAB,0x6B,0xE5,0xF3,0x2B,0xBF,
1611 0xA7,0x83,0x24,0xED,0x10,0x6A,0x76,0x36,0xB9,0xC5,
1612 0xA7,0xBD,0x19,0x8D,0x01,0x58,0xAA,0x4F,0x54,0x88,
1613 0xD0,0x8F,0x38,0x51,0x4F,0x1F,0xDF,0x4B,0x4F,0x40,
1614 0xD2,0x18,0x1B,0x36,0x81,0xC3,0x64,0xBA,0x02,0x73,
1618 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1619 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1620 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE2,0xAA,0xD6,
1621 0xA6,0x12,0xF3,0x33,0x07,0xBE,0x5F,0xA4,0x7C,0x3C,
1622 0x9E,0x05,0x2F,0x83,0x81,0x64,0xCD,0x37,0xD9,0xA2,
1626 static const struct { EC_CURVE_DATA h; unsigned char data[0+72*6]; }
1627 _EC_NIST_CHAR2_571K = {
1628 { NID_X9_62_characteristic_two_field,0,72,4 },
1632 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1633 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1634 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1635 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1636 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1637 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1638 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1642 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1643 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1644 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1645 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1646 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1647 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1648 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1652 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1653 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1654 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1655 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1656 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1657 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1658 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1662 0x02,0x6E,0xB7,0xA8,0x59,0x92,0x3F,0xBC,0x82,0x18,
1663 0x96,0x31,0xF8,0x10,0x3F,0xE4,0xAC,0x9C,0xA2,0x97,
1664 0x00,0x12,0xD5,0xD4,0x60,0x24,0x80,0x48,0x01,0x84,
1665 0x1C,0xA4,0x43,0x70,0x95,0x84,0x93,0xB2,0x05,0xE6,
1666 0x47,0xDA,0x30,0x4D,0xB4,0xCE,0xB0,0x8C,0xBB,0xD1,
1667 0xBA,0x39,0x49,0x47,0x76,0xFB,0x98,0x8B,0x47,0x17,
1668 0x4D,0xCA,0x88,0xC7,0xE2,0x94,0x52,0x83,0xA0,0x1C,
1672 0x03,0x49,0xDC,0x80,0x7F,0x4F,0xBF,0x37,0x4F,0x4A,
1673 0xEA,0xDE,0x3B,0xCA,0x95,0x31,0x4D,0xD5,0x8C,0xEC,
1674 0x9F,0x30,0x7A,0x54,0xFF,0xC6,0x1E,0xFC,0x00,0x6D,
1675 0x8A,0x2C,0x9D,0x49,0x79,0xC0,0xAC,0x44,0xAE,0xA7,
1676 0x4F,0xBE,0xBB,0xB9,0xF7,0x72,0xAE,0xDC,0xB6,0x20,
1677 0xB0,0x1A,0x7B,0xA7,0xAF,0x1B,0x32,0x04,0x30,0xC8,
1678 0x59,0x19,0x84,0xF6,0x01,0xCD,0x4C,0x14,0x3E,0xF1,
1682 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1683 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1684 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1685 0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x18,0x50,0xE1,
1686 0xF1,0x9A,0x63,0xE4,0xB3,0x91,0xA8,0xDB,0x91,0x7F,
1687 0x41,0x38,0xB6,0x30,0xD8,0x4B,0xE5,0xD6,0x39,0x38,
1688 0x1E,0x91,0xDE,0xB4,0x5C,0xFE,0x77,0x8F,0x63,0x7C,
1692 static const struct { EC_CURVE_DATA h; unsigned char data[20+72*6]; }
1693 _EC_NIST_CHAR2_571B = {
1694 { NID_X9_62_characteristic_two_field,20,72,2 },
1697 0x2A,0xA0,0x58,0xF7,0x3A,0x0E,0x33,0xAB,0x48,0x6B,
1698 0x0F,0x61,0x04,0x10,0xC5,0x3A,0x7F,0x13,0x23,0x10,
1701 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1702 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1703 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1704 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1705 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1706 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1707 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1711 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1712 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1713 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1714 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1715 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1716 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1717 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1721 0x02,0xF4,0x0E,0x7E,0x22,0x21,0xF2,0x95,0xDE,0x29,
1722 0x71,0x17,0xB7,0xF3,0xD6,0x2F,0x5C,0x6A,0x97,0xFF,
1723 0xCB,0x8C,0xEF,0xF1,0xCD,0x6B,0xA8,0xCE,0x4A,0x9A,
1724 0x18,0xAD,0x84,0xFF,0xAB,0xBD,0x8E,0xFA,0x59,0x33,
1725 0x2B,0xE7,0xAD,0x67,0x56,0xA6,0x6E,0x29,0x4A,0xFD,
1726 0x18,0x5A,0x78,0xFF,0x12,0xAA,0x52,0x0E,0x4D,0xE7,
1727 0x39,0xBA,0xCA,0x0C,0x7F,0xFE,0xFF,0x7F,0x29,0x55,
1731 0x03,0x03,0x00,0x1D,0x34,0xB8,0x56,0x29,0x6C,0x16,
1732 0xC0,0xD4,0x0D,0x3C,0xD7,0x75,0x0A,0x93,0xD1,0xD2,
1733 0x95,0x5F,0xA8,0x0A,0xA5,0xF4,0x0F,0xC8,0xDB,0x7B,
1734 0x2A,0xBD,0xBD,0xE5,0x39,0x50,0xF4,0xC0,0xD2,0x93,
1735 0xCD,0xD7,0x11,0xA3,0x5B,0x67,0xFB,0x14,0x99,0xAE,
1736 0x60,0x03,0x86,0x14,0xF1,0x39,0x4A,0xBF,0xA3,0xB4,
1737 0xC8,0x50,0xD9,0x27,0xE1,0xE7,0x76,0x9C,0x8E,0xEC,
1741 0x03,0x7B,0xF2,0x73,0x42,0xDA,0x63,0x9B,0x6D,0xCC,
1742 0xFF,0xFE,0xB7,0x3D,0x69,0xD7,0x8C,0x6C,0x27,0xA6,
1743 0x00,0x9C,0xBB,0xCA,0x19,0x80,0xF8,0x53,0x39,0x21,
1744 0xE8,0xA6,0x84,0x42,0x3E,0x43,0xBA,0xB0,0x8A,0x57,
1745 0x62,0x91,0xAF,0x8F,0x46,0x1B,0xB2,0xA8,0xB3,0x53,
1746 0x1D,0x2F,0x04,0x85,0xC1,0x9B,0x16,0xE2,0xF1,0x51,
1747 0x6E,0x23,0xDD,0x3C,0x1A,0x48,0x27,0xAF,0x1B,0x8A,
1751 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1752 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1753 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1754 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE6,0x61,0xCE,0x18,
1755 0xFF,0x55,0x98,0x73,0x08,0x05,0x9B,0x18,0x68,0x23,
1756 0x85,0x1E,0xC7,0xDD,0x9C,0xA1,0x16,0x1D,0xE9,0x3D,
1757 0x51,0x74,0xD6,0x6E,0x83,0x82,0xE9,0xBB,0x2F,0xE8,
1761 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
1762 _EC_X9_62_CHAR2_163V1 = {
1763 { NID_X9_62_characteristic_two_field,20,21,2 },
1766 0xD2,0xC0,0xFB,0x15,0x76,0x08,0x60,0xDE,0xF1,0xEE,
1767 0xF4,0xD6,0x96,0xE6,0x76,0x87,0x56,0x15,0x17,0x54,
1770 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1771 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1775 0x07,0x25,0x46,0xB5,0x43,0x52,0x34,0xA4,0x22,0xE0,
1776 0x78,0x96,0x75,0xF4,0x32,0xC8,0x94,0x35,0xDE,0x52,
1780 0x00,0xC9,0x51,0x7D,0x06,0xD5,0x24,0x0D,0x3C,0xFF,
1781 0x38,0xC7,0x4B,0x20,0xB6,0xCD,0x4D,0x6F,0x9D,0xD4,
1785 0x07,0xAF,0x69,0x98,0x95,0x46,0x10,0x3D,0x79,0x32,
1786 0x9F,0xCC,0x3D,0x74,0x88,0x0F,0x33,0xBB,0xE8,0x03,
1790 0x01,0xEC,0x23,0x21,0x1B,0x59,0x66,0xAD,0xEA,0x1D,
1791 0x3F,0x87,0xF7,0xEA,0x58,0x48,0xAE,0xF0,0xB7,0xCA,
1795 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1796 0x01,0xE6,0x0F,0xC8,0x82,0x1C,0xC7,0x4D,0xAE,0xAF,
1800 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
1801 _EC_X9_62_CHAR2_163V2 = {
1802 { NID_X9_62_characteristic_two_field,20,21,2 },
1805 0x53,0x81,0x4C,0x05,0x0D,0x44,0xD6,0x96,0xE6,0x76,
1806 0x87,0x56,0x15,0x17,0x58,0x0C,0xA4,0xE2,0x9F,0xFD,
1809 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1810 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1814 0x01,0x08,0xB3,0x9E,0x77,0xC4,0xB1,0x08,0xBE,0xD9,
1815 0x81,0xED,0x0E,0x89,0x0E,0x11,0x7C,0x51,0x1C,0xF0,
1819 0x06,0x67,0xAC,0xEB,0x38,0xAF,0x4E,0x48,0x8C,0x40,
1820 0x74,0x33,0xFF,0xAE,0x4F,0x1C,0x81,0x16,0x38,0xDF,
1824 0x00,0x24,0x26,0x6E,0x4E,0xB5,0x10,0x6D,0x0A,0x96,
1825 0x4D,0x92,0xC4,0x86,0x0E,0x26,0x71,0xDB,0x9B,0x6C,
1829 0x07,0x9F,0x68,0x4D,0xDF,0x66,0x84,0xC5,0xCD,0x25,
1830 0x8B,0x38,0x90,0x02,0x1B,0x23,0x86,0xDF,0xD1,0x9F,
1834 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1835 0xFD,0xF6,0x4D,0xE1,0x15,0x1A,0xDB,0xB7,0x8F,0x10,
1839 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
1840 _EC_X9_62_CHAR2_163V3 = {
1841 { NID_X9_62_characteristic_two_field,20,21,2 },
1844 0x50,0xCB,0xF1,0xD9,0x5C,0xA9,0x4D,0x69,0x6E,0x67,
1845 0x68,0x75,0x61,0x51,0x75,0xF1,0x6A,0x36,0xA3,0xB8,
1848 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1849 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1853 0x07,0xA5,0x26,0xC6,0x3D,0x3E,0x25,0xA2,0x56,0xA0,
1854 0x07,0x69,0x9F,0x54,0x47,0xE3,0x2A,0xE4,0x56,0xB5,
1858 0x03,0xF7,0x06,0x17,0x98,0xEB,0x99,0xE2,0x38,0xFD,
1859 0x6F,0x1B,0xF9,0x5B,0x48,0xFE,0xEB,0x48,0x54,0x25,
1863 0x02,0xF9,0xF8,0x7B,0x7C,0x57,0x4D,0x0B,0xDE,0xCF,
1864 0x8A,0x22,0xE6,0x52,0x47,0x75,0xF9,0x8C,0xDE,0xBD,
1868 0x05,0xB9,0x35,0x59,0x0C,0x15,0x5E,0x17,0xEA,0x48,
1869 0xEB,0x3F,0xF3,0x71,0x8B,0x89,0x3D,0xF5,0x9A,0x05,
1873 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1874 0xFE,0x1A,0xEE,0x14,0x0F,0x11,0x0A,0xFF,0x96,0x13,
1878 static const struct { EC_CURVE_DATA h; unsigned char data[0+23*6]; }
1879 _EC_X9_62_CHAR2_176V1 = {
1880 { NID_X9_62_characteristic_two_field,0,23,0xFF6E },
1884 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1885 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,
1889 0x00,0xE4,0xE6,0xDB,0x29,0x95,0x06,0x5C,0x40,0x7D,
1890 0x9D,0x39,0xB8,0xD0,0x96,0x7B,0x96,0x70,0x4B,0xA8,
1894 0x00,0x5D,0xDA,0x47,0x0A,0xBE,0x64,0x14,0xDE,0x8E,
1895 0xC1,0x33,0xAE,0x28,0xE9,0xBB,0xD7,0xFC,0xEC,0x0A,
1899 0x00,0x8D,0x16,0xC2,0x86,0x67,0x98,0xB6,0x00,0xF9,
1900 0xF0,0x8B,0xB4,0xA8,0xE8,0x60,0xF3,0x29,0x8C,0xE0,
1904 0x00,0x6F,0xA4,0x53,0x9C,0x2D,0xAD,0xDD,0xD6,0xBA,
1905 0xB5,0x16,0x7D,0x61,0xB4,0x36,0xE1,0xD9,0x2B,0xB1,
1909 0x00,0x00,0x01,0x00,0x92,0x53,0x73,0x97,0xEC,0xA4,
1910 0xF6,0x14,0x57,0x99,0xD6,0x2B,0x0A,0x19,0xCE,0x06,
1914 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
1915 _EC_X9_62_CHAR2_191V1 = {
1916 { NID_X9_62_characteristic_two_field,20,24,2 },
1919 0x4E,0x13,0xCA,0x54,0x27,0x44,0xD6,0x96,0xE6,0x76,
1920 0x87,0x56,0x15,0x17,0x55,0x2F,0x27,0x9A,0x8C,0x84,
1923 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1924 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1925 0x00,0x00,0x02,0x01,
1928 0x28,0x66,0x53,0x7B,0x67,0x67,0x52,0x63,0x6A,0x68,
1929 0xF5,0x65,0x54,0xE1,0x26,0x40,0x27,0x6B,0x64,0x9E,
1930 0xF7,0x52,0x62,0x67,
1933 0x2E,0x45,0xEF,0x57,0x1F,0x00,0x78,0x6F,0x67,0xB0,
1934 0x08,0x1B,0x94,0x95,0xA3,0xD9,0x54,0x62,0xF5,0xDE,
1935 0x0A,0xA1,0x85,0xEC,
1938 0x36,0xB3,0xDA,0xF8,0xA2,0x32,0x06,0xF9,0xC4,0xF2,
1939 0x99,0xD7,0xB2,0x1A,0x9C,0x36,0x91,0x37,0xF2,0xC8,
1940 0x4A,0xE1,0xAA,0x0D,
1943 0x76,0x5B,0xE7,0x34,0x33,0xB3,0xF9,0x5E,0x33,0x29,
1944 0x32,0xE7,0x0E,0xA2,0x45,0xCA,0x24,0x18,0xEA,0x0E,
1945 0xF9,0x80,0x18,0xFB,
1948 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1949 0x00,0x00,0x04,0xA2,0x0E,0x90,0xC3,0x90,0x67,0xC8,
1950 0x93,0xBB,0xB9,0xA5 }
1953 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
1954 _EC_X9_62_CHAR2_191V2 = {
1955 { NID_X9_62_characteristic_two_field,20,24,4 },
1958 0x08,0x71,0xEF,0x2F,0xEF,0x24,0xD6,0x96,0xE6,0x76,
1959 0x87,0x56,0x15,0x17,0x58,0xBE,0xE0,0xD9,0x5C,0x15,
1962 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1963 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1964 0x00,0x00,0x02,0x01,
1967 0x40,0x10,0x28,0x77,0x4D,0x77,0x77,0xC7,0xB7,0x66,
1968 0x6D,0x13,0x66,0xEA,0x43,0x20,0x71,0x27,0x4F,0x89,
1969 0xFF,0x01,0xE7,0x18,
1972 0x06,0x20,0x04,0x8D,0x28,0xBC,0xBD,0x03,0xB6,0x24,
1973 0x9C,0x99,0x18,0x2B,0x7C,0x8C,0xD1,0x97,0x00,0xC3,
1974 0x62,0xC4,0x6A,0x01,
1977 0x38,0x09,0xB2,0xB7,0xCC,0x1B,0x28,0xCC,0x5A,0x87,
1978 0x92,0x6A,0xAD,0x83,0xFD,0x28,0x78,0x9E,0x81,0xE2,
1979 0xC9,0xE3,0xBF,0x10,
1982 0x17,0x43,0x43,0x86,0x62,0x6D,0x14,0xF3,0xDB,0xF0,
1983 0x17,0x60,0xD9,0x21,0x3A,0x3E,0x1C,0xF3,0x7A,0xEC,
1984 0x43,0x7D,0x66,0x8A,
1987 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1988 0x00,0x00,0x50,0x50,0x8C,0xB8,0x9F,0x65,0x28,0x24,
1989 0xE0,0x6B,0x81,0x73 }
1992 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
1993 _EC_X9_62_CHAR2_191V3 = {
1994 { NID_X9_62_characteristic_two_field,20,24,6 },
1997 0xE0,0x53,0x51,0x2D,0xC6,0x84,0xD6,0x96,0xE6,0x76,
1998 0x87,0x56,0x15,0x17,0x50,0x67,0xAE,0x78,0x6D,0x1F,
2001 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2002 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2003 0x00,0x00,0x02,0x01,
2006 0x6C,0x01,0x07,0x47,0x56,0x09,0x91,0x22,0x22,0x10,
2007 0x56,0x91,0x1C,0x77,0xD7,0x7E,0x77,0xA7,0x77,0xE7,
2008 0xE7,0xE7,0x7F,0xCB,
2011 0x71,0xFE,0x1A,0xF9,0x26,0xCF,0x84,0x79,0x89,0xEF,
2012 0xEF,0x8D,0xB4,0x59,0xF6,0x63,0x94,0xD9,0x0F,0x32,
2013 0xAD,0x3F,0x15,0xE8,
2016 0x37,0x5D,0x4C,0xE2,0x4F,0xDE,0x43,0x44,0x89,0xDE,
2017 0x87,0x46,0xE7,0x17,0x86,0x01,0x50,0x09,0xE6,0x6E,
2018 0x38,0xA9,0x26,0xDD,
2021 0x54,0x5A,0x39,0x17,0x61,0x96,0x57,0x5D,0x98,0x59,
2022 0x99,0x36,0x6E,0x6A,0xD3,0x4C,0xE0,0xA7,0x7C,0xD7,
2023 0x12,0x7B,0x06,0xBE,
2026 0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
2027 0x55,0x55,0x61,0x0C,0x0B,0x19,0x68,0x12,0xBF,0xB6,
2028 0x28,0x8A,0x3E,0xA3 }
2031 static const struct { EC_CURVE_DATA h; unsigned char data[0+27*6]; }
2032 _EC_X9_62_CHAR2_208W1 = {
2033 { NID_X9_62_characteristic_two_field,0,27,0xFE48 },
2037 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2038 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
2039 0x00,0x00,0x00,0x00,0x00,0x00,0x07,
2042 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2043 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2044 0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2047 0x00,0xC8,0x61,0x9E,0xD4,0x5A,0x62,0xE6,0x21,0x2E,
2048 0x11,0x60,0x34,0x9E,0x2B,0xFA,0x84,0x44,0x39,0xFA,
2049 0xFC,0x2A,0x3F,0xD1,0x63,0x8F,0x9E,
2052 0x00,0x89,0xFD,0xFB,0xE4,0xAB,0xE1,0x93,0xDF,0x95,
2053 0x59,0xEC,0xF0,0x7A,0xC0,0xCE,0x78,0x55,0x4E,0x27,
2054 0x84,0xEB,0x8C,0x1E,0xD1,0xA5,0x7A,
2057 0x00,0x0F,0x55,0xB5,0x1A,0x06,0xE7,0x8E,0x9A,0xC3,
2058 0x8A,0x03,0x5F,0xF5,0x20,0xD8,0xB0,0x17,0x81,0xBE,
2059 0xB1,0xA6,0xBB,0x08,0x61,0x7D,0xE3,
2062 0x00,0x00,0x01,0x01,0xBA,0xF9,0x5C,0x97,0x23,0xC5,
2063 0x7B,0x6C,0x21,0xDA,0x2E,0xFF,0x2D,0x5E,0xD5,0x88,
2064 0xBD,0xD5,0x71,0x7E,0x21,0x2F,0x9D }
2067 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
2068 _EC_X9_62_CHAR2_239V1 = {
2069 { NID_X9_62_characteristic_two_field,20,30,4 },
2072 0xD3,0x4B,0x9A,0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,
2073 0x51,0x75,0xCA,0x71,0xB9,0x20,0xBF,0xEF,0xB0,0x5D,
2076 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2077 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2078 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,
2081 0x32,0x01,0x08,0x57,0x07,0x7C,0x54,0x31,0x12,0x3A,
2082 0x46,0xB8,0x08,0x90,0x67,0x56,0xF5,0x43,0x42,0x3E,
2083 0x8D,0x27,0x87,0x75,0x78,0x12,0x57,0x78,0xAC,0x76,
2086 0x79,0x04,0x08,0xF2,0xEE,0xDA,0xF3,0x92,0xB0,0x12,
2087 0xED,0xEF,0xB3,0x39,0x2F,0x30,0xF4,0x32,0x7C,0x0C,
2088 0xA3,0xF3,0x1F,0xC3,0x83,0xC4,0x22,0xAA,0x8C,0x16,
2091 0x57,0x92,0x70,0x98,0xFA,0x93,0x2E,0x7C,0x0A,0x96,
2092 0xD3,0xFD,0x5B,0x70,0x6E,0xF7,0xE5,0xF5,0xC1,0x56,
2093 0xE1,0x6B,0x7E,0x7C,0x86,0x03,0x85,0x52,0xE9,0x1D,
2096 0x61,0xD8,0xEE,0x50,0x77,0xC3,0x3F,0xEC,0xF6,0xF1,
2097 0xA1,0x6B,0x26,0x8D,0xE4,0x69,0xC3,0xC7,0x74,0x4E,
2098 0xA9,0xA9,0x71,0x64,0x9F,0xC7,0xA9,0x61,0x63,0x05,
2101 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2102 0x00,0x00,0x00,0x00,0x00,0x0F,0x4D,0x42,0xFF,0xE1,
2103 0x49,0x2A,0x49,0x93,0xF1,0xCA,0xD6,0x66,0xE4,0x47 }
2106 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
2107 _EC_X9_62_CHAR2_239V2 = {
2108 { NID_X9_62_characteristic_two_field,20,30,6 },
2111 0x2A,0xA6,0x98,0x2F,0xDF,0xA4,0xD6,0x96,0xE6,0x76,
2112 0x87,0x56,0x15,0x17,0x5D,0x26,0x67,0x27,0x27,0x7D,
2115 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2116 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2117 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,
2120 0x42,0x30,0x01,0x77,0x57,0xA7,0x67,0xFA,0xE4,0x23,
2121 0x98,0x56,0x9B,0x74,0x63,0x25,0xD4,0x53,0x13,0xAF,
2122 0x07,0x66,0x26,0x64,0x79,0xB7,0x56,0x54,0xE6,0x5F,
2125 0x50,0x37,0xEA,0x65,0x41,0x96,0xCF,0xF0,0xCD,0x82,
2126 0xB2,0xC1,0x4A,0x2F,0xCF,0x2E,0x3F,0xF8,0x77,0x52,
2127 0x85,0xB5,0x45,0x72,0x2F,0x03,0xEA,0xCD,0xB7,0x4B,
2130 0x28,0xF9,0xD0,0x4E,0x90,0x00,0x69,0xC8,0xDC,0x47,
2131 0xA0,0x85,0x34,0xFE,0x76,0xD2,0xB9,0x00,0xB7,0xD7,
2132 0xEF,0x31,0xF5,0x70,0x9F,0x20,0x0C,0x4C,0xA2,0x05,
2135 0x56,0x67,0x33,0x4C,0x45,0xAF,0xF3,0xB5,0xA0,0x3B,
2136 0xAD,0x9D,0xD7,0x5E,0x2C,0x71,0xA9,0x93,0x62,0x56,
2137 0x7D,0x54,0x53,0xF7,0xFA,0x6E,0x22,0x7E,0xC8,0x33,
2140 0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
2141 0x55,0x55,0x55,0x55,0x55,0x3C,0x6F,0x28,0x85,0x25,
2142 0x9C,0x31,0xE3,0xFC,0xDF,0x15,0x46,0x24,0x52,0x2D }
2145 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
2146 _EC_X9_62_CHAR2_239V3 = {
2147 { NID_X9_62_characteristic_two_field,20,30,0xA },
2150 0x9E,0x07,0x6F,0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,
2151 0x51,0x75,0xE1,0x1E,0x9F,0xDD,0x77,0xF9,0x20,0x41,
2154 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2155 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2156 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,
2159 0x01,0x23,0x87,0x74,0x66,0x6A,0x67,0x76,0x6D,0x66,
2160 0x76,0xF7,0x78,0xE6,0x76,0xB6,0x69,0x99,0x17,0x66,
2161 0x66,0xE6,0x87,0x66,0x6D,0x87,0x66,0xC6,0x6A,0x9F,
2164 0x6A,0x94,0x19,0x77,0xBA,0x9F,0x6A,0x43,0x51,0x99,
2165 0xAC,0xFC,0x51,0x06,0x7E,0xD5,0x87,0xF5,0x19,0xC5,
2166 0xEC,0xB5,0x41,0xB8,0xE4,0x41,0x11,0xDE,0x1D,0x40,
2169 0x70,0xF6,0xE9,0xD0,0x4D,0x28,0x9C,0x4E,0x89,0x91,
2170 0x3C,0xE3,0x53,0x0B,0xFD,0xE9,0x03,0x97,0x7D,0x42,
2171 0xB1,0x46,0xD5,0x39,0xBF,0x1B,0xDE,0x4E,0x9C,0x92,
2174 0x2E,0x5A,0x0E,0xAF,0x6E,0x5E,0x13,0x05,0xB9,0x00,
2175 0x4D,0xCE,0x5C,0x0E,0xD7,0xFE,0x59,0xA3,0x56,0x08,
2176 0xF3,0x38,0x37,0xC8,0x16,0xD8,0x0B,0x79,0xF4,0x61,
2179 0x0C,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,
2180 0xCC,0xCC,0xCC,0xCC,0xCC,0xAC,0x49,0x12,0xD2,0xD9,
2181 0xDF,0x90,0x3E,0xF9,0x88,0x8B,0x8A,0x0E,0x4C,0xFF }
2184 static const struct { EC_CURVE_DATA h; unsigned char data[0+35*6]; }
2185 _EC_X9_62_CHAR2_272W1 = {
2186 { NID_X9_62_characteristic_two_field,0,35,0xFF06 },
2190 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2191 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2192 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
2193 0x00,0x00,0x00,0x00,0x0B,
2196 0x00,0x91,0xA0,0x91,0xF0,0x3B,0x5F,0xBA,0x4A,0xB2,
2197 0xCC,0xF4,0x9C,0x4E,0xDD,0x22,0x0F,0xB0,0x28,0x71,
2198 0x2D,0x42,0xBE,0x75,0x2B,0x2C,0x40,0x09,0x4D,0xBA,
2199 0xCD,0xB5,0x86,0xFB,0x20,
2202 0x00,0x71,0x67,0xEF,0xC9,0x2B,0xB2,0xE3,0xCE,0x7C,
2203 0x8A,0xAA,0xFF,0x34,0xE1,0x2A,0x9C,0x55,0x70,0x03,
2204 0xD7,0xC7,0x3A,0x6F,0xAF,0x00,0x3F,0x99,0xF6,0xCC,
2205 0x84,0x82,0xE5,0x40,0xF7,
2208 0x00,0x61,0x08,0xBA,0xBB,0x2C,0xEE,0xBC,0xF7,0x87,
2209 0x05,0x8A,0x05,0x6C,0xBE,0x0C,0xFE,0x62,0x2D,0x77,
2210 0x23,0xA2,0x89,0xE0,0x8A,0x07,0xAE,0x13,0xEF,0x0D,
2211 0x10,0xD1,0x71,0xDD,0x8D,
2214 0x00,0x10,0xC7,0x69,0x57,0x16,0x85,0x1E,0xEF,0x6B,
2215 0xA7,0xF6,0x87,0x2E,0x61,0x42,0xFB,0xD2,0x41,0xB8,
2216 0x30,0xFF,0x5E,0xFC,0xAC,0xEC,0xCA,0xB0,0x5E,0x02,
2217 0x00,0x5D,0xDE,0x9D,0x23,
2220 0x00,0x00,0x01,0x00,0xFA,0xF5,0x13,0x54,0xE0,0xE3,
2221 0x9E,0x48,0x92,0xDF,0x6E,0x31,0x9C,0x72,0xC8,0x16,
2222 0x16,0x03,0xFA,0x45,0xAA,0x7B,0x99,0x8A,0x16,0x7B,
2223 0x8F,0x1E,0x62,0x95,0x21 }
2226 static const struct { EC_CURVE_DATA h; unsigned char data[0+39*6]; }
2227 _EC_X9_62_CHAR2_304W1 = {
2228 { NID_X9_62_characteristic_two_field,0,39,0xFE2E },
2232 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2233 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2234 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2235 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x07,
2237 0x00,0xFD,0x0D,0x69,0x31,0x49,0xA1,0x18,0xF6,0x51,
2238 0xE6,0xDC,0xE6,0x80,0x20,0x85,0x37,0x7E,0x5F,0x88,
2239 0x2D,0x1B,0x51,0x0B,0x44,0x16,0x00,0x74,0xC1,0x28,
2240 0x80,0x78,0x36,0x5A,0x03,0x96,0xC8,0xE6,0x81,
2242 0x00,0xBD,0xDB,0x97,0xE5,0x55,0xA5,0x0A,0x90,0x8E,
2243 0x43,0xB0,0x1C,0x79,0x8E,0xA5,0xDA,0xA6,0x78,0x8F,
2244 0x1E,0xA2,0x79,0x4E,0xFC,0xF5,0x71,0x66,0xB8,0xC1,
2245 0x40,0x39,0x60,0x1E,0x55,0x82,0x73,0x40,0xBE,
2247 0x00,0x19,0x7B,0x07,0x84,0x5E,0x9B,0xE2,0xD9,0x6A,
2248 0xDB,0x0F,0x5F,0x3C,0x7F,0x2C,0xFF,0xBD,0x7A,0x3E,
2249 0xB8,0xB6,0xFE,0xC3,0x5C,0x7F,0xD6,0x7F,0x26,0xDD,
2250 0xF6,0x28,0x5A,0x64,0x4F,0x74,0x0A,0x26,0x14,
2252 0x00,0xE1,0x9F,0xBE,0xB7,0x6E,0x0D,0xA1,0x71,0x51,
2253 0x7E,0xCF,0x40,0x1B,0x50,0x28,0x9B,0xF0,0x14,0x10,
2254 0x32,0x88,0x52,0x7A,0x9B,0x41,0x6A,0x10,0x5E,0x80,
2255 0x26,0x0B,0x54,0x9F,0xDC,0x1B,0x92,0xC0,0x3B,
2257 0x00,0x00,0x01,0x01,0xD5,0x56,0x57,0x2A,0xAB,0xAC,
2258 0x80,0x01,0x01,0xD5,0x56,0x57,0x2A,0xAB,0xAC,0x80,
2259 0x01,0x02,0x2D,0x5C,0x91,0xDD,0x17,0x3F,0x8F,0xB5,
2260 0x61,0xDA,0x68,0x99,0x16,0x44,0x43,0x05,0x1D }
2263 static const struct { EC_CURVE_DATA h; unsigned char data[20+45*6]; }
2264 _EC_X9_62_CHAR2_359V1 = {
2265 { NID_X9_62_characteristic_two_field,20,45,0x4C },
2268 0x2B,0x35,0x49,0x20,0xB7,0x24,0xD6,0x96,0xE6,0x76,
2269 0x87,0x56,0x15,0x17,0x58,0x5B,0xA1,0x33,0x2D,0xC6,
2272 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2273 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2274 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2275 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
2276 0x00,0x00,0x00,0x00,0x01,
2279 0x56,0x67,0x67,0x6A,0x65,0x4B,0x20,0x75,0x4F,0x35,
2280 0x6E,0xA9,0x20,0x17,0xD9,0x46,0x56,0x7C,0x46,0x67,
2281 0x55,0x56,0xF1,0x95,0x56,0xA0,0x46,0x16,0xB5,0x67,
2282 0xD2,0x23,0xA5,0xE0,0x56,0x56,0xFB,0x54,0x90,0x16,
2283 0xA9,0x66,0x56,0xA5,0x57,
2286 0x24,0x72,0xE2,0xD0,0x19,0x7C,0x49,0x36,0x3F,0x1F,
2287 0xE7,0xF5,0xB6,0xDB,0x07,0x5D,0x52,0xB6,0x94,0x7D,
2288 0x13,0x5D,0x8C,0xA4,0x45,0x80,0x5D,0x39,0xBC,0x34,
2289 0x56,0x26,0x08,0x96,0x87,0x74,0x2B,0x63,0x29,0xE7,
2290 0x06,0x80,0x23,0x19,0x88,
2293 0x3C,0x25,0x8E,0xF3,0x04,0x77,0x67,0xE7,0xED,0xE0,
2294 0xF1,0xFD,0xAA,0x79,0xDA,0xEE,0x38,0x41,0x36,0x6A,
2295 0x13,0x2E,0x16,0x3A,0xCE,0xD4,0xED,0x24,0x01,0xDF,
2296 0x9C,0x6B,0xDC,0xDE,0x98,0xE8,0xE7,0x07,0xC0,0x7A,
2297 0x22,0x39,0xB1,0xB0,0x97,
2300 0x53,0xD7,0xE0,0x85,0x29,0x54,0x70,0x48,0x12,0x1E,
2301 0x9C,0x95,0xF3,0x79,0x1D,0xD8,0x04,0x96,0x39,0x48,
2302 0xF3,0x4F,0xAE,0x7B,0xF4,0x4E,0xA8,0x23,0x65,0xDC,
2303 0x78,0x68,0xFE,0x57,0xE4,0xAE,0x2D,0xE2,0x11,0x30,
2304 0x5A,0x40,0x71,0x04,0xBD,
2307 0x01,0xAF,0x28,0x6B,0xCA,0x1A,0xF2,0x86,0xBC,0xA1,
2308 0xAF,0x28,0x6B,0xCA,0x1A,0xF2,0x86,0xBC,0xA1,0xAF,
2309 0x28,0x6B,0xC9,0xFB,0x8F,0x6B,0x85,0xC5,0x56,0x89,
2310 0x2C,0x20,0xA7,0xEB,0x96,0x4F,0xE7,0x71,0x9E,0x74,
2311 0xF4,0x90,0x75,0x8D,0x3B }
2314 static const struct { EC_CURVE_DATA h; unsigned char data[0+47*6]; }
2315 _EC_X9_62_CHAR2_368W1 = {
2316 { NID_X9_62_characteristic_two_field,0,47,0xFF70 },
2320 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2321 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2322 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2323 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
2324 0x00,0x00,0x00,0x00,0x00,0x00,0x07,
2327 0x00,0xE0,0xD2,0xEE,0x25,0x09,0x52,0x06,0xF5,0xE2,
2328 0xA4,0xF9,0xED,0x22,0x9F,0x1F,0x25,0x6E,0x79,0xA0,
2329 0xE2,0xB4,0x55,0x97,0x0D,0x8D,0x0D,0x86,0x5B,0xD9,
2330 0x47,0x78,0xC5,0x76,0xD6,0x2F,0x0A,0xB7,0x51,0x9C,
2331 0xCD,0x2A,0x1A,0x90,0x6A,0xE3,0x0D,
2334 0x00,0xFC,0x12,0x17,0xD4,0x32,0x0A,0x90,0x45,0x2C,
2335 0x76,0x0A,0x58,0xED,0xCD,0x30,0xC8,0xDD,0x06,0x9B,
2336 0x3C,0x34,0x45,0x38,0x37,0xA3,0x4E,0xD5,0x0C,0xB5,
2337 0x49,0x17,0xE1,0xC2,0x11,0x2D,0x84,0xD1,0x64,0xF4,
2338 0x44,0xF8,0xF7,0x47,0x86,0x04,0x6A,
2341 0x00,0x10,0x85,0xE2,0x75,0x53,0x81,0xDC,0xCC,0xE3,
2342 0xC1,0x55,0x7A,0xFA,0x10,0xC2,0xF0,0xC0,0xC2,0x82,
2343 0x56,0x46,0xC5,0xB3,0x4A,0x39,0x4C,0xBC,0xFA,0x8B,
2344 0xC1,0x6B,0x22,0xE7,0xE7,0x89,0xE9,0x27,0xBE,0x21,
2345 0x6F,0x02,0xE1,0xFB,0x13,0x6A,0x5F,
2348 0x00,0x7B,0x3E,0xB1,0xBD,0xDC,0xBA,0x62,0xD5,0xD8,
2349 0xB2,0x05,0x9B,0x52,0x57,0x97,0xFC,0x73,0x82,0x2C,
2350 0x59,0x05,0x9C,0x62,0x3A,0x45,0xFF,0x38,0x43,0xCE,
2351 0xE8,0xF8,0x7C,0xD1,0x85,0x5A,0xDA,0xA8,0x1E,0x2A,
2352 0x07,0x50,0xB8,0x0F,0xDA,0x23,0x10,
2355 0x00,0x00,0x01,0x00,0x90,0x51,0x2D,0xA9,0xAF,0x72,
2356 0xB0,0x83,0x49,0xD9,0x8A,0x5D,0xD4,0xC7,0xB0,0x53,
2357 0x2E,0xCA,0x51,0xCE,0x03,0xE2,0xD1,0x0F,0x3B,0x7A,
2358 0xC5,0x79,0xBD,0x87,0xE9,0x09,0xAE,0x40,0xA6,0xF1,
2359 0x31,0xE9,0xCF,0xCE,0x5B,0xD9,0x67 }
2362 static const struct { EC_CURVE_DATA h; unsigned char data[0+54*6]; }
2363 _EC_X9_62_CHAR2_431R1 = {
2364 { NID_X9_62_characteristic_two_field,0,54,0x2760 },
2368 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2369 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2370 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2371 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
2372 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2373 0x00,0x00,0x00,0x01,
2376 0x1A,0x82,0x7E,0xF0,0x0D,0xD6,0xFC,0x0E,0x23,0x4C,
2377 0xAF,0x04,0x6C,0x6A,0x5D,0x8A,0x85,0x39,0x5B,0x23,
2378 0x6C,0xC4,0xAD,0x2C,0xF3,0x2A,0x0C,0xAD,0xBD,0xC9,
2379 0xDD,0xF6,0x20,0xB0,0xEB,0x99,0x06,0xD0,0x95,0x7F,
2380 0x6C,0x6F,0xEA,0xCD,0x61,0x54,0x68,0xDF,0x10,0x4D,
2381 0xE2,0x96,0xCD,0x8F,
2384 0x10,0xD9,0xB4,0xA3,0xD9,0x04,0x7D,0x8B,0x15,0x43,
2385 0x59,0xAB,0xFB,0x1B,0x7F,0x54,0x85,0xB0,0x4C,0xEB,
2386 0x86,0x82,0x37,0xDD,0xC9,0xDE,0xDA,0x98,0x2A,0x67,
2387 0x9A,0x5A,0x91,0x9B,0x62,0x6D,0x4E,0x50,0xA8,0xDD,
2388 0x73,0x1B,0x10,0x7A,0x99,0x62,0x38,0x1F,0xB5,0xD8,
2389 0x07,0xBF,0x26,0x18,
2392 0x12,0x0F,0xC0,0x5D,0x3C,0x67,0xA9,0x9D,0xE1,0x61,
2393 0xD2,0xF4,0x09,0x26,0x22,0xFE,0xCA,0x70,0x1B,0xE4,
2394 0xF5,0x0F,0x47,0x58,0x71,0x4E,0x8A,0x87,0xBB,0xF2,
2395 0xA6,0x58,0xEF,0x8C,0x21,0xE7,0xC5,0xEF,0xE9,0x65,
2396 0x36,0x1F,0x6C,0x29,0x99,0xC0,0xC2,0x47,0xB0,0xDB,
2397 0xD7,0x0C,0xE6,0xB7,
2400 0x20,0xD0,0xAF,0x89,0x03,0xA9,0x6F,0x8D,0x5F,0xA2,
2401 0xC2,0x55,0x74,0x5D,0x3C,0x45,0x1B,0x30,0x2C,0x93,
2402 0x46,0xD9,0xB7,0xE4,0x85,0xE7,0xBC,0xE4,0x1F,0x6B,
2403 0x59,0x1F,0x3E,0x8F,0x6A,0xDD,0xCB,0xB0,0xBC,0x4C,
2404 0x2F,0x94,0x7A,0x7D,0xE1,0xA8,0x9B,0x62,0x5D,0x6A,
2405 0x59,0x8B,0x37,0x60,
2408 0x00,0x03,0x40,0x34,0x03,0x40,0x34,0x03,0x40,0x34,
2409 0x03,0x40,0x34,0x03,0x40,0x34,0x03,0x40,0x34,0x03,
2410 0x40,0x34,0x03,0x40,0x34,0x03,0x40,0x34,0x03,0x23,
2411 0xC3,0x13,0xFA,0xB5,0x05,0x89,0x70,0x3B,0x5E,0xC6,
2412 0x8D,0x35,0x87,0xFE,0xC6,0x0D,0x16,0x1C,0xC1,0x49,
2413 0xC1,0xAD,0x4A,0x91 }
2416 static const struct { EC_CURVE_DATA h; unsigned char data[0+15*6]; }
2418 { NID_X9_62_characteristic_two_field,0,15,2 },
2422 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2423 0x00,0x00,0x00,0x02,0x01,
2426 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2427 0x00,0x00,0x00,0x00,0x01,
2430 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2431 0x00,0x00,0x00,0x00,0x01,
2434 0x01,0x66,0x79,0x79,0xA4,0x0B,0xA4,0x97,0xE5,0xD5,
2435 0xC2,0x70,0x78,0x06,0x17,
2438 0x00,0xF4,0x4B,0x4A,0xF1,0xEC,0xC2,0x63,0x0E,0x08,
2439 0x78,0x5C,0xEB,0xCC,0x15,
2442 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xBF,
2443 0x91,0xAF,0x6D,0xEA,0x73 }
2447 /* NOTE: The of curves over a extension field of non prime degree
2448 * is not recommended (Weil-descent).
2449 * As the group order is not a prime this curve is not suitable
2452 static const struct { EC_CURVE_DATA h; unsigned char data[0+20*6]; }
2453 _EC_IPSEC_155_ID3 = {
2454 { NID_X9_62_characteristic_two_field,0,20,3 },
2458 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2459 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
2462 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2463 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2466 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2467 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x33,0x8f,
2470 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2471 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7b,
2474 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2475 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xc8,
2478 0x02,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
2479 0xC7,0xF3,0xC7,0x88,0x1B,0xD0,0x86,0x8F,0xA8,0x6C }
2482 /* NOTE: The of curves over a extension field of non prime degree
2483 * is not recommended (Weil-descent).
2484 * As the group order is not a prime this curve is not suitable
2487 static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
2488 _EC_IPSEC_185_ID4 = {
2489 { NID_X9_62_characteristic_two_field,0,24,2 },
2493 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2494 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
2495 0x00,0x00,0x00,0x01,
2498 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2499 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2500 0x00,0x00,0x00,0x00,
2503 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2504 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2505 0x00,0x00,0x1e,0xe9,
2508 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2509 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2510 0x00,0x00,0x00,0x18,
2513 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2514 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2515 0x00,0x00,0x00,0x0d,
2518 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
2519 0xFF,0xFF,0xED,0xF9,0x7C,0x44,0xDB,0x9F,0x24,0x20,
2520 0xBA,0xFC,0xA7,0x5E }
2525 /* These curves were added by Annie Yousar <a.yousar@informatik.hu-berlin.de>
2526 * For the definition of RFC 5639 curves see
2527 * http://www.ietf.org/rfc/rfc5639.txt
2528 * These curves are generated verifiable at random, nevertheless the seed is
2529 * omitted as parameter because the generation mechanism is different from
2530 * those defined in ANSI X9.62.
2533 static const struct { EC_CURVE_DATA h; unsigned char data[0+20*6]; }
2534 _EC_brainpoolP160r1 = {
2535 { NID_X9_62_prime_field, 0,20,1 },
2539 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2540 0xC7,0xAD,0x95,0xB3,0xD8,0x13,0x95,0x15,0x62,0x0F,
2543 0x34,0x0E,0x7B,0xE2,0xA2,0x80,0xEB,0x74,0xE2,0xBE,
2544 0x61,0xBA,0xDA,0x74,0x5D,0x97,0xE8,0xF7,0xC3,0x00,
2547 0x1E,0x58,0x9A,0x85,0x95,0x42,0x34,0x12,0x13,0x4F,
2548 0xAA,0x2D,0xBD,0xEC,0x95,0xC8,0xD8,0x67,0x5E,0x58,
2551 0xBE,0xD5,0xAF,0x16,0xEA,0x3F,0x6A,0x4F,0x62,0x93,
2552 0x8C,0x46,0x31,0xEB,0x5A,0xF7,0xBD,0xBC,0xDB,0xC3,
2555 0x16,0x67,0xCB,0x47,0x7A,0x1A,0x8E,0xC3,0x38,0xF9,
2556 0x47,0x41,0x66,0x9C,0x97,0x63,0x16,0xDA,0x63,0x21,
2559 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2560 0x59,0x91,0xD4,0x50,0x29,0x40,0x9E,0x60,0xFC,0x09 }
2563 static const struct { EC_CURVE_DATA h; unsigned char data[0+20*6]; }
2564 _EC_brainpoolP160t1 = {
2565 { NID_X9_62_prime_field, 0,20,1 },
2569 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2570 0xC7,0xAD,0x95,0xB3,0xD8,0x13,0x95,0x15,0x62,0x0F,
2573 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2574 0xC7,0xAD,0x95,0xB3,0xD8,0x13,0x95,0x15,0x62,0x0C,
2577 0x7A,0x55,0x6B,0x6D,0xAE,0x53,0x5B,0x7B,0x51,0xED,
2578 0x2C,0x4D,0x7D,0xAA,0x7A,0x0B,0x5C,0x55,0xF3,0x80,
2581 0xB1,0x99,0xB1,0x3B,0x9B,0x34,0xEF,0xC1,0x39,0x7E,
2582 0x64,0xBA,0xEB,0x05,0xAC,0xC2,0x65,0xFF,0x23,0x78,
2585 0xAD,0xD6,0x71,0x8B,0x7C,0x7C,0x19,0x61,0xF0,0x99,
2586 0x1B,0x84,0x24,0x43,0x77,0x21,0x52,0xC9,0xE0,0xAD,
2589 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2590 0x59,0x91,0xD4,0x50,0x29,0x40,0x9E,0x60,0xFC,0x09 }
2593 static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
2594 _EC_brainpoolP192r1 = {
2595 { NID_X9_62_prime_field, 0,24,1 },
2599 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2600 0x46,0x30,0x93,0xD1,0x8D,0xB7,0x8F,0xCE,0x47,0x6D,
2601 0xE1,0xA8,0x62,0x97,
2604 0x6A,0x91,0x17,0x40,0x76,0xB1,0xE0,0xE1,0x9C,0x39,
2605 0xC0,0x31,0xFE,0x86,0x85,0xC1,0xCA,0xE0,0x40,0xE5,
2606 0xC6,0x9A,0x28,0xEF,
2609 0x46,0x9A,0x28,0xEF,0x7C,0x28,0xCC,0xA3,0xDC,0x72,
2610 0x1D,0x04,0x4F,0x44,0x96,0xBC,0xCA,0x7E,0xF4,0x14,
2611 0x6F,0xBF,0x25,0xC9,
2614 0xC0,0xA0,0x64,0x7E,0xAA,0xB6,0xA4,0x87,0x53,0xB0,
2615 0x33,0xC5,0x6C,0xB0,0xF0,0x90,0x0A,0x2F,0x5C,0x48,
2616 0x53,0x37,0x5F,0xD6,
2619 0x14,0xB6,0x90,0x86,0x6A,0xBD,0x5B,0xB8,0x8B,0x5F,
2620 0x48,0x28,0xC1,0x49,0x00,0x02,0xE6,0x77,0x3F,0xA2,
2621 0xFA,0x29,0x9B,0x8F,
2624 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2625 0x46,0x2F,0x9E,0x9E,0x91,0x6B,0x5B,0xE8,0xF1,0x02,
2626 0x9A,0xC4,0xAC,0xC1 }
2629 static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
2630 _EC_brainpoolP192t1 = {
2631 { NID_X9_62_prime_field, 0,24,1 },
2635 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2636 0x46,0x30,0x93,0xD1,0x8D,0xB7,0x8F,0xCE,0x47,0x6D,
2637 0xE1,0xA8,0x62,0x97,
2640 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2641 0x46,0x30,0x93,0xD1,0x8D,0xB7,0x8F,0xCE,0x47,0x6D,
2642 0xE1,0xA8,0x62,0x94,
2645 0x13,0xD5,0x6F,0xFA,0xEC,0x78,0x68,0x1E,0x68,0xF9,
2646 0xDE,0xB4,0x3B,0x35,0xBE,0xC2,0xFB,0x68,0x54,0x2E,
2647 0x27,0x89,0x7B,0x79,
2650 0x3A,0xE9,0xE5,0x8C,0x82,0xF6,0x3C,0x30,0x28,0x2E,
2651 0x1F,0xE7,0xBB,0xF4,0x3F,0xA7,0x2C,0x44,0x6A,0xF6,
2652 0xF4,0x61,0x81,0x29,
2655 0x09,0x7E,0x2C,0x56,0x67,0xC2,0x22,0x3A,0x90,0x2A,
2656 0xB5,0xCA,0x44,0x9D,0x00,0x84,0xB7,0xE5,0xB3,0xDE,
2657 0x7C,0xCC,0x01,0xC9,
2660 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2661 0x46,0x2F,0x9E,0x9E,0x91,0x6B,0x5B,0xE8,0xF1,0x02,
2662 0x9A,0xC4,0xAC,0xC1 }
2665 static const struct { EC_CURVE_DATA h; unsigned char data[0+28*6]; }
2666 _EC_brainpoolP224r1 = {
2667 { NID_X9_62_prime_field, 0,28,1 },
2670 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2671 0x30,0x25,0x75,0xD1,0xD7,0x87,0xB0,0x9F,0x07,0x57,
2672 0x97,0xDA,0x89,0xF5,0x7E,0xC8,0xC0,0xFF,
2675 0x68,0xA5,0xE6,0x2C,0xA9,0xCE,0x6C,0x1C,0x29,0x98,
2676 0x03,0xA6,0xC1,0x53,0x0B,0x51,0x4E,0x18,0x2A,0xD8,
2677 0xB0,0x04,0x2A,0x59,0xCA,0xD2,0x9F,0x43,
2680 0x25,0x80,0xF6,0x3C,0xCF,0xE4,0x41,0x38,0x87,0x07,
2681 0x13,0xB1,0xA9,0x23,0x69,0xE3,0x3E,0x21,0x35,0xD2,
2682 0x66,0xDB,0xB3,0x72,0x38,0x6C,0x40,0x0B,
2685 0x0D,0x90,0x29,0xAD,0x2C,0x7E,0x5C,0xF4,0x34,0x08,
2686 0x23,0xB2,0xA8,0x7D,0xC6,0x8C,0x9E,0x4C,0xE3,0x17,
2687 0x4C,0x1E,0x6E,0xFD,0xEE,0x12,0xC0,0x7D,
2690 0x58,0xAA,0x56,0xF7,0x72,0xC0,0x72,0x6F,0x24,0xC6,
2691 0xB8,0x9E,0x4E,0xCD,0xAC,0x24,0x35,0x4B,0x9E,0x99,
2692 0xCA,0xA3,0xF6,0xD3,0x76,0x14,0x02,0xCD,
2695 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2696 0x30,0x25,0x75,0xD0,0xFB,0x98,0xD1,0x16,0xBC,0x4B,
2697 0x6D,0xDE,0xBC,0xA3,0xA5,0xA7,0x93,0x9F }
2700 static const struct { EC_CURVE_DATA h; unsigned char data[0+28*6]; }
2701 _EC_brainpoolP224t1 = {
2702 { NID_X9_62_prime_field, 0,28,1 },
2705 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2706 0x30,0x25,0x75,0xD1,0xD7,0x87,0xB0,0x9F,0x07,0x57,
2707 0x97,0xDA,0x89,0xF5,0x7E,0xC8,0xC0,0xFF,
2710 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2711 0x30,0x25,0x75,0xD1,0xD7,0x87,0xB0,0x9F,0x07,0x57,
2712 0x97,0xDA,0x89,0xF5,0x7E,0xC8,0xC0,0xFC,
2715 0x4B,0x33,0x7D,0x93,0x41,0x04,0xCD,0x7B,0xEF,0x27,
2716 0x1B,0xF6,0x0C,0xED,0x1E,0xD2,0x0D,0xA1,0x4C,0x08,
2717 0xB3,0xBB,0x64,0xF1,0x8A,0x60,0x88,0x8D,
2720 0x6A,0xB1,0xE3,0x44,0xCE,0x25,0xFF,0x38,0x96,0x42,
2721 0x4E,0x7F,0xFE,0x14,0x76,0x2E,0xCB,0x49,0xF8,0x92,
2722 0x8A,0xC0,0xC7,0x60,0x29,0xB4,0xD5,0x80,
2725 0x03,0x74,0xE9,0xF5,0x14,0x3E,0x56,0x8C,0xD2,0x3F,
2726 0x3F,0x4D,0x7C,0x0D,0x4B,0x1E,0x41,0xC8,0xCC,0x0D,
2727 0x1C,0x6A,0xBD,0x5F,0x1A,0x46,0xDB,0x4C,
2730 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2731 0x30,0x25,0x75,0xD0,0xFB,0x98,0xD1,0x16,0xBC,0x4B,
2732 0x6D,0xDE,0xBC,0xA3,0xA5,0xA7,0x93,0x9F }
2735 static const struct { EC_CURVE_DATA h; unsigned char data[0+32*6]; }
2736 _EC_brainpoolP256r1 = {
2737 { NID_X9_62_prime_field, 0,32,1 },
2740 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2741 0x0A,0x90,0x9D,0x83,0x8D,0x72,0x6E,0x3B,0xF6,0x23,
2742 0xD5,0x26,0x20,0x28,0x20,0x13,0x48,0x1D,0x1F,0x6E,
2746 0x7D,0x5A,0x09,0x75,0xFC,0x2C,0x30,0x57,0xEE,0xF6,
2747 0x75,0x30,0x41,0x7A,0xFF,0xE7,0xFB,0x80,0x55,0xC1,
2748 0x26,0xDC,0x5C,0x6C,0xE9,0x4A,0x4B,0x44,0xF3,0x30,
2752 0x26,0xDC,0x5C,0x6C,0xE9,0x4A,0x4B,0x44,0xF3,0x30,
2753 0xB5,0xD9,0xBB,0xD7,0x7C,0xBF,0x95,0x84,0x16,0x29,
2754 0x5C,0xF7,0xE1,0xCE,0x6B,0xCC,0xDC,0x18,0xFF,0x8C,
2758 0x8B,0xD2,0xAE,0xB9,0xCB,0x7E,0x57,0xCB,0x2C,0x4B,
2759 0x48,0x2F,0xFC,0x81,0xB7,0xAF,0xB9,0xDE,0x27,0xE1,
2760 0xE3,0xBD,0x23,0xC2,0x3A,0x44,0x53,0xBD,0x9A,0xCE,
2764 0x54,0x7E,0xF8,0x35,0xC3,0xDA,0xC4,0xFD,0x97,0xF8,
2765 0x46,0x1A,0x14,0x61,0x1D,0xC9,0xC2,0x77,0x45,0x13,
2766 0x2D,0xED,0x8E,0x54,0x5C,0x1D,0x54,0xC7,0x2F,0x04,
2770 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2771 0x0A,0x90,0x9D,0x83,0x8D,0x71,0x8C,0x39,0x7A,0xA3,
2772 0xB5,0x61,0xA6,0xF7,0x90,0x1E,0x0E,0x82,0x97,0x48,
2776 static const struct { EC_CURVE_DATA h; unsigned char data[0+32*6]; }
2777 _EC_brainpoolP256t1 = {
2778 { NID_X9_62_prime_field, 0,32,1 },
2781 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2782 0x0A,0x90,0x9D,0x83,0x8D,0x72,0x6E,0x3B,0xF6,0x23,
2783 0xD5,0x26,0x20,0x28,0x20,0x13,0x48,0x1D,0x1F,0x6E,
2787 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2788 0x0A,0x90,0x9D,0x83,0x8D,0x72,0x6E,0x3B,0xF6,0x23,
2789 0xD5,0x26,0x20,0x28,0x20,0x13,0x48,0x1D,0x1F,0x6E,
2793 0x66,0x2C,0x61,0xC4,0x30,0xD8,0x4E,0xA4,0xFE,0x66,
2794 0xA7,0x73,0x3D,0x0B,0x76,0xB7,0xBF,0x93,0xEB,0xC4,
2795 0xAF,0x2F,0x49,0x25,0x6A,0xE5,0x81,0x01,0xFE,0xE9,
2799 0xA3,0xE8,0xEB,0x3C,0xC1,0xCF,0xE7,0xB7,0x73,0x22,
2800 0x13,0xB2,0x3A,0x65,0x61,0x49,0xAF,0xA1,0x42,0xC4,
2801 0x7A,0xAF,0xBC,0x2B,0x79,0xA1,0x91,0x56,0x2E,0x13,
2805 0x2D,0x99,0x6C,0x82,0x34,0x39,0xC5,0x6D,0x7F,0x7B,
2806 0x22,0xE1,0x46,0x44,0x41,0x7E,0x69,0xBC,0xB6,0xDE,
2807 0x39,0xD0,0x27,0x00,0x1D,0xAB,0xE8,0xF3,0x5B,0x25,
2811 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2812 0x0A,0x90,0x9D,0x83,0x8D,0x71,0x8C,0x39,0x7A,0xA3,
2813 0xB5,0x61,0xA6,0xF7,0x90,0x1E,0x0E,0x82,0x97,0x48,
2817 static const struct { EC_CURVE_DATA h; unsigned char data[0+40*6]; }
2818 _EC_brainpoolP320r1 = {
2819 { NID_X9_62_prime_field, 0,40,1 },
2822 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2823 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA6,
2824 0xF6,0xF4,0x0D,0xEF,0x4F,0x92,0xB9,0xEC,0x78,0x93,
2825 0xEC,0x28,0xFC,0xD4,0x12,0xB1,0xF1,0xB3,0x2E,0x27,
2828 0x3E,0xE3,0x0B,0x56,0x8F,0xBA,0xB0,0xF8,0x83,0xCC,
2829 0xEB,0xD4,0x6D,0x3F,0x3B,0xB8,0xA2,0xA7,0x35,0x13,
2830 0xF5,0xEB,0x79,0xDA,0x66,0x19,0x0E,0xB0,0x85,0xFF,
2831 0xA9,0xF4,0x92,0xF3,0x75,0xA9,0x7D,0x86,0x0E,0xB4,
2834 0x52,0x08,0x83,0x94,0x9D,0xFD,0xBC,0x42,0xD3,0xAD,
2835 0x19,0x86,0x40,0x68,0x8A,0x6F,0xE1,0x3F,0x41,0x34,
2836 0x95,0x54,0xB4,0x9A,0xCC,0x31,0xDC,0xCD,0x88,0x45,
2837 0x39,0x81,0x6F,0x5E,0xB4,0xAC,0x8F,0xB1,0xF1,0xA6,
2840 0x43,0xBD,0x7E,0x9A,0xFB,0x53,0xD8,0xB8,0x52,0x89,
2841 0xBC,0xC4,0x8E,0xE5,0xBF,0xE6,0xF2,0x01,0x37,0xD1,
2842 0x0A,0x08,0x7E,0xB6,0xE7,0x87,0x1E,0x2A,0x10,0xA5,
2843 0x99,0xC7,0x10,0xAF,0x8D,0x0D,0x39,0xE2,0x06,0x11,
2846 0x14,0xFD,0xD0,0x55,0x45,0xEC,0x1C,0xC8,0xAB,0x40,
2847 0x93,0x24,0x7F,0x77,0x27,0x5E,0x07,0x43,0xFF,0xED,
2848 0x11,0x71,0x82,0xEA,0xA9,0xC7,0x78,0x77,0xAA,0xAC,
2849 0x6A,0xC7,0xD3,0x52,0x45,0xD1,0x69,0x2E,0x8E,0xE1,
2852 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2853 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA5,
2854 0xB6,0x8F,0x12,0xA3,0x2D,0x48,0x2E,0xC7,0xEE,0x86,
2855 0x58,0xE9,0x86,0x91,0x55,0x5B,0x44,0xC5,0x93,0x11 }
2858 static const struct { EC_CURVE_DATA h; unsigned char data[0+40*6]; }
2859 _EC_brainpoolP320t1 = {
2860 { NID_X9_62_prime_field, 0,40,1 },
2863 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2864 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA6,
2865 0xF6,0xF4,0x0D,0xEF,0x4F,0x92,0xB9,0xEC,0x78,0x93,
2866 0xEC,0x28,0xFC,0xD4,0x12,0xB1,0xF1,0xB3,0x2E,0x27,
2869 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2870 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA6,
2871 0xF6,0xF4,0x0D,0xEF,0x4F,0x92,0xB9,0xEC,0x78,0x93,
2872 0xEC,0x28,0xFC,0xD4,0x12,0xB1,0xF1,0xB3,0x2E,0x24,
2875 0xA7,0xF5,0x61,0xE0,0x38,0xEB,0x1E,0xD5,0x60,0xB3,
2876 0xD1,0x47,0xDB,0x78,0x20,0x13,0x06,0x4C,0x19,0xF2,
2877 0x7E,0xD2,0x7C,0x67,0x80,0xAA,0xF7,0x7F,0xB8,0xA5,
2878 0x47,0xCE,0xB5,0xB4,0xFE,0xF4,0x22,0x34,0x03,0x53,
2881 0x92,0x5B,0xE9,0xFB,0x01,0xAF,0xC6,0xFB,0x4D,0x3E,
2882 0x7D,0x49,0x90,0x01,0x0F,0x81,0x34,0x08,0xAB,0x10,
2883 0x6C,0x4F,0x09,0xCB,0x7E,0xE0,0x78,0x68,0xCC,0x13,
2884 0x6F,0xFF,0x33,0x57,0xF6,0x24,0xA2,0x1B,0xED,0x52,
2887 0x63,0xBA,0x3A,0x7A,0x27,0x48,0x3E,0xBF,0x66,0x71,
2888 0xDB,0xEF,0x7A,0xBB,0x30,0xEB,0xEE,0x08,0x4E,0x58,
2889 0xA0,0xB0,0x77,0xAD,0x42,0xA5,0xA0,0x98,0x9D,0x1E,
2890 0xE7,0x1B,0x1B,0x9B,0xC0,0x45,0x5F,0xB0,0xD2,0xC3,
2893 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2894 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA5,
2895 0xB6,0x8F,0x12,0xA3,0x2D,0x48,0x2E,0xC7,0xEE,0x86,
2896 0x58,0xE9,0x86,0x91,0x55,0x5B,0x44,0xC5,0x93,0x11 }
2899 static const struct { EC_CURVE_DATA h; unsigned char data[0+48*6]; }
2900 _EC_brainpoolP384r1 = {
2901 { NID_X9_62_prime_field, 0,48,1 },
2904 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2905 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2906 0xED,0x54,0x56,0xB4,0x12,0xB1,0xDA,0x19,0x7F,0xB7,
2907 0x11,0x23,0xAC,0xD3,0xA7,0x29,0x90,0x1D,0x1A,0x71,
2908 0x87,0x47,0x00,0x13,0x31,0x07,0xEC,0x53,
2911 0x7B,0xC3,0x82,0xC6,0x3D,0x8C,0x15,0x0C,0x3C,0x72,
2912 0x08,0x0A,0xCE,0x05,0xAF,0xA0,0xC2,0xBE,0xA2,0x8E,
2913 0x4F,0xB2,0x27,0x87,0x13,0x91,0x65,0xEF,0xBA,0x91,
2914 0xF9,0x0F,0x8A,0xA5,0x81,0x4A,0x50,0x3A,0xD4,0xEB,
2915 0x04,0xA8,0xC7,0xDD,0x22,0xCE,0x28,0x26,
2918 0x04,0xA8,0xC7,0xDD,0x22,0xCE,0x28,0x26,0x8B,0x39,
2919 0xB5,0x54,0x16,0xF0,0x44,0x7C,0x2F,0xB7,0x7D,0xE1,
2920 0x07,0xDC,0xD2,0xA6,0x2E,0x88,0x0E,0xA5,0x3E,0xEB,
2921 0x62,0xD5,0x7C,0xB4,0x39,0x02,0x95,0xDB,0xC9,0x94,
2922 0x3A,0xB7,0x86,0x96,0xFA,0x50,0x4C,0x11,
2925 0x1D,0x1C,0x64,0xF0,0x68,0xCF,0x45,0xFF,0xA2,0xA6,
2926 0x3A,0x81,0xB7,0xC1,0x3F,0x6B,0x88,0x47,0xA3,0xE7,
2927 0x7E,0xF1,0x4F,0xE3,0xDB,0x7F,0xCA,0xFE,0x0C,0xBD,
2928 0x10,0xE8,0xE8,0x26,0xE0,0x34,0x36,0xD6,0x46,0xAA,
2929 0xEF,0x87,0xB2,0xE2,0x47,0xD4,0xAF,0x1E,
2932 0x8A,0xBE,0x1D,0x75,0x20,0xF9,0xC2,0xA4,0x5C,0xB1,
2933 0xEB,0x8E,0x95,0xCF,0xD5,0x52,0x62,0xB7,0x0B,0x29,
2934 0xFE,0xEC,0x58,0x64,0xE1,0x9C,0x05,0x4F,0xF9,0x91,
2935 0x29,0x28,0x0E,0x46,0x46,0x21,0x77,0x91,0x81,0x11,
2936 0x42,0x82,0x03,0x41,0x26,0x3C,0x53,0x15,
2939 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2940 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2941 0xED,0x54,0x56,0xB3,0x1F,0x16,0x6E,0x6C,0xAC,0x04,
2942 0x25,0xA7,0xCF,0x3A,0xB6,0xAF,0x6B,0x7F,0xC3,0x10,
2943 0x3B,0x88,0x32,0x02,0xE9,0x04,0x65,0x65 }
2946 static const struct { EC_CURVE_DATA h; unsigned char data[0+48*6]; }
2947 _EC_brainpoolP384t1 = {
2948 { NID_X9_62_prime_field, 0,48,1 },
2951 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2952 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2953 0xED,0x54,0x56,0xB4,0x12,0xB1,0xDA,0x19,0x7F,0xB7,
2954 0x11,0x23,0xAC,0xD3,0xA7,0x29,0x90,0x1D,0x1A,0x71,
2955 0x87,0x47,0x00,0x13,0x31,0x07,0xEC,0x53,
2958 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2959 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2960 0xED,0x54,0x56,0xB4,0x12,0xB1,0xDA,0x19,0x7F,0xB7,
2961 0x11,0x23,0xAC,0xD3,0xA7,0x29,0x90,0x1D,0x1A,0x71,
2962 0x87,0x47,0x00,0x13,0x31,0x07,0xEC,0x50,
2965 0x7F,0x51,0x9E,0xAD,0xA7,0xBD,0xA8,0x1B,0xD8,0x26,
2966 0xDB,0xA6,0x47,0x91,0x0F,0x8C,0x4B,0x93,0x46,0xED,
2967 0x8C,0xCD,0xC6,0x4E,0x4B,0x1A,0xBD,0x11,0x75,0x6D,
2968 0xCE,0x1D,0x20,0x74,0xAA,0x26,0x3B,0x88,0x80,0x5C,
2969 0xED,0x70,0x35,0x5A,0x33,0xB4,0x71,0xEE,
2972 0x18,0xDE,0x98,0xB0,0x2D,0xB9,0xA3,0x06,0xF2,0xAF,
2973 0xCD,0x72,0x35,0xF7,0x2A,0x81,0x9B,0x80,0xAB,0x12,
2974 0xEB,0xD6,0x53,0x17,0x24,0x76,0xFE,0xCD,0x46,0x2A,
2975 0xAB,0xFF,0xC4,0xFF,0x19,0x1B,0x94,0x6A,0x5F,0x54,
2976 0xD8,0xD0,0xAA,0x2F,0x41,0x88,0x08,0xCC,
2979 0x25,0xAB,0x05,0x69,0x62,0xD3,0x06,0x51,0xA1,0x14,
2980 0xAF,0xD2,0x75,0x5A,0xD3,0x36,0x74,0x7F,0x93,0x47,
2981 0x5B,0x7A,0x1F,0xCA,0x3B,0x88,0xF2,0xB6,0xA2,0x08,
2982 0xCC,0xFE,0x46,0x94,0x08,0x58,0x4D,0xC2,0xB2,0x91,
2983 0x26,0x75,0xBF,0x5B,0x9E,0x58,0x29,0x28,
2986 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2987 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2988 0xED,0x54,0x56,0xB3,0x1F,0x16,0x6E,0x6C,0xAC,0x04,
2989 0x25,0xA7,0xCF,0x3A,0xB6,0xAF,0x6B,0x7F,0xC3,0x10,
2990 0x3B,0x88,0x32,0x02,0xE9,0x04,0x65,0x65 }
2993 static const struct { EC_CURVE_DATA h; unsigned char data[0+64*6]; }
2994 _EC_brainpoolP512r1 = {
2995 { NID_X9_62_prime_field, 0,64,1 },
2998 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
2999 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
3000 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
3001 0x08,0x71,0x7D,0x4D,0x9B,0x00,0x9B,0xC6,0x68,0x42,
3002 0xAE,0xCD,0xA1,0x2A,0xE6,0xA3,0x80,0xE6,0x28,0x81,
3003 0xFF,0x2F,0x2D,0x82,0xC6,0x85,0x28,0xAA,0x60,0x56,
3004 0x58,0x3A,0x48,0xF3,
3007 0x78,0x30,0xA3,0x31,0x8B,0x60,0x3B,0x89,0xE2,0x32,
3008 0x71,0x45,0xAC,0x23,0x4C,0xC5,0x94,0xCB,0xDD,0x8D,
3009 0x3D,0xF9,0x16,0x10,0xA8,0x34,0x41,0xCA,0xEA,0x98,
3010 0x63,0xBC,0x2D,0xED,0x5D,0x5A,0xA8,0x25,0x3A,0xA1,
3011 0x0A,0x2E,0xF1,0xC9,0x8B,0x9A,0xC8,0xB5,0x7F,0x11,
3012 0x17,0xA7,0x2B,0xF2,0xC7,0xB9,0xE7,0xC1,0xAC,0x4D,
3013 0x77,0xFC,0x94,0xCA,
3016 0x3D,0xF9,0x16,0x10,0xA8,0x34,0x41,0xCA,0xEA,0x98,
3017 0x63,0xBC,0x2D,0xED,0x5D,0x5A,0xA8,0x25,0x3A,0xA1,
3018 0x0A,0x2E,0xF1,0xC9,0x8B,0x9A,0xC8,0xB5,0x7F,0x11,
3019 0x17,0xA7,0x2B,0xF2,0xC7,0xB9,0xE7,0xC1,0xAC,0x4D,
3020 0x77,0xFC,0x94,0xCA,0xDC,0x08,0x3E,0x67,0x98,0x40,
3021 0x50,0xB7,0x5E,0xBA,0xE5,0xDD,0x28,0x09,0xBD,0x63,
3022 0x80,0x16,0xF7,0x23,
3025 0x81,0xAE,0xE4,0xBD,0xD8,0x2E,0xD9,0x64,0x5A,0x21,
3026 0x32,0x2E,0x9C,0x4C,0x6A,0x93,0x85,0xED,0x9F,0x70,
3027 0xB5,0xD9,0x16,0xC1,0xB4,0x3B,0x62,0xEE,0xF4,0xD0,
3028 0x09,0x8E,0xFF,0x3B,0x1F,0x78,0xE2,0xD0,0xD4,0x8D,
3029 0x50,0xD1,0x68,0x7B,0x93,0xB9,0x7D,0x5F,0x7C,0x6D,
3030 0x50,0x47,0x40,0x6A,0x5E,0x68,0x8B,0x35,0x22,0x09,
3031 0xBC,0xB9,0xF8,0x22,
3034 0x7D,0xDE,0x38,0x5D,0x56,0x63,0x32,0xEC,0xC0,0xEA,
3035 0xBF,0xA9,0xCF,0x78,0x22,0xFD,0xF2,0x09,0xF7,0x00,
3036 0x24,0xA5,0x7B,0x1A,0xA0,0x00,0xC5,0x5B,0x88,0x1F,
3037 0x81,0x11,0xB2,0xDC,0xDE,0x49,0x4A,0x5F,0x48,0x5E,
3038 0x5B,0xCA,0x4B,0xD8,0x8A,0x27,0x63,0xAE,0xD1,0xCA,
3039 0x2B,0x2F,0xA8,0xF0,0x54,0x06,0x78,0xCD,0x1E,0x0F,
3040 0x3A,0xD8,0x08,0x92,
3043 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
3044 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
3045 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
3046 0x08,0x70,0x55,0x3E,0x5C,0x41,0x4C,0xA9,0x26,0x19,
3047 0x41,0x86,0x61,0x19,0x7F,0xAC,0x10,0x47,0x1D,0xB1,
3048 0xD3,0x81,0x08,0x5D,0xDA,0xDD,0xB5,0x87,0x96,0x82,
3049 0x9C,0xA9,0x00,0x69 }
3052 static const struct { EC_CURVE_DATA h; unsigned char data[0+64*6]; }
3053 _EC_brainpoolP512t1 = {
3054 { NID_X9_62_prime_field, 0,64,1 },
3057 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
3058 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
3059 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
3060 0x08,0x71,0x7D,0x4D,0x9B,0x00,0x9B,0xC6,0x68,0x42,
3061 0xAE,0xCD,0xA1,0x2A,0xE6,0xA3,0x80,0xE6,0x28,0x81,
3062 0xFF,0x2F,0x2D,0x82,0xC6,0x85,0x28,0xAA,0x60,0x56,
3063 0x58,0x3A,0x48,0xF3,
3066 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
3067 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
3068 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
3069 0x08,0x71,0x7D,0x4D,0x9B,0x00,0x9B,0xC6,0x68,0x42,
3070 0xAE,0xCD,0xA1,0x2A,0xE6,0xA3,0x80,0xE6,0x28,0x81,
3071 0xFF,0x2F,0x2D,0x82,0xC6,0x85,0x28,0xAA,0x60,0x56,
3072 0x58,0x3A,0x48,0xF0,
3075 0x7C,0xBB,0xBC,0xF9,0x44,0x1C,0xFA,0xB7,0x6E,0x18,
3076 0x90,0xE4,0x68,0x84,0xEA,0xE3,0x21,0xF7,0x0C,0x0B,
3077 0xCB,0x49,0x81,0x52,0x78,0x97,0x50,0x4B,0xEC,0x3E,
3078 0x36,0xA6,0x2B,0xCD,0xFA,0x23,0x04,0x97,0x65,0x40,
3079 0xF6,0x45,0x00,0x85,0xF2,0xDA,0xE1,0x45,0xC2,0x25,
3080 0x53,0xB4,0x65,0x76,0x36,0x89,0x18,0x0E,0xA2,0x57,
3081 0x18,0x67,0x42,0x3E,
3084 0x64,0x0E,0xCE,0x5C,0x12,0x78,0x87,0x17,0xB9,0xC1,
3085 0xBA,0x06,0xCB,0xC2,0xA6,0xFE,0xBA,0x85,0x84,0x24,
3086 0x58,0xC5,0x6D,0xDE,0x9D,0xB1,0x75,0x8D,0x39,0xC0,
3087 0x31,0x3D,0x82,0xBA,0x51,0x73,0x5C,0xDB,0x3E,0xA4,
3088 0x99,0xAA,0x77,0xA7,0xD6,0x94,0x3A,0x64,0xF7,0xA3,
3089 0xF2,0x5F,0xE2,0x6F,0x06,0xB5,0x1B,0xAA,0x26,0x96,
3090 0xFA,0x90,0x35,0xDA,
3093 0x5B,0x53,0x4B,0xD5,0x95,0xF5,0xAF,0x0F,0xA2,0xC8,
3094 0x92,0x37,0x6C,0x84,0xAC,0xE1,0xBB,0x4E,0x30,0x19,
3095 0xB7,0x16,0x34,0xC0,0x11,0x31,0x15,0x9C,0xAE,0x03,
3096 0xCE,0xE9,0xD9,0x93,0x21,0x84,0xBE,0xEF,0x21,0x6B,
3097 0xD7,0x1D,0xF2,0xDA,0xDF,0x86,0xA6,0x27,0x30,0x6E,
3098 0xCF,0xF9,0x6D,0xBB,0x8B,0xAC,0xE1,0x98,0xB6,0x1E,
3099 0x00,0xF8,0xB3,0x32,
3102 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
3103 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
3104 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
3105 0x08,0x70,0x55,0x3E,0x5C,0x41,0x4C,0xA9,0x26,0x19,
3106 0x41,0x86,0x61,0x19,0x7F,0xAC,0x10,0x47,0x1D,0xB1,
3107 0xD3,0x81,0x08,0x5D,0xDA,0xDD,0xB5,0x87,0x96,0x82,
3108 0x9C,0xA9,0x00,0x69 }
3111 typedef struct _ec_list_element_st {
3113 const EC_CURVE_DATA *data;
3114 const EC_METHOD *(*meth)(void);
3115 const char *comment;
3118 static const ec_list_element curve_list[] = {
3119 /* prime field curves */
3121 { NID_secp112r1, &_EC_SECG_PRIME_112R1.h, 0, "SECG/WTLS curve over a 112 bit prime field" },
3122 { NID_secp112r2, &_EC_SECG_PRIME_112R2.h, 0, "SECG curve over a 112 bit prime field" },
3123 { NID_secp128r1, &_EC_SECG_PRIME_128R1.h, 0, "SECG curve over a 128 bit prime field" },
3124 { NID_secp128r2, &_EC_SECG_PRIME_128R2.h, 0, "SECG curve over a 128 bit prime field" },
3125 { NID_secp160k1, &_EC_SECG_PRIME_160K1.h, 0, "SECG curve over a 160 bit prime field" },
3126 { NID_secp160r1, &_EC_SECG_PRIME_160R1.h, 0, "SECG curve over a 160 bit prime field" },
3127 { NID_secp160r2, &_EC_SECG_PRIME_160R2.h, 0, "SECG/WTLS curve over a 160 bit prime field" },
3128 /* SECG secp192r1 is the same as X9.62 prime192v1 and hence omitted */
3129 { NID_secp192k1, &_EC_SECG_PRIME_192K1.h, 0, "SECG curve over a 192 bit prime field" },
3130 { NID_secp224k1, &_EC_SECG_PRIME_224K1.h, 0, "SECG curve over a 224 bit prime field" },
3131 #ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
3132 { NID_secp224r1, &_EC_NIST_PRIME_224.h, EC_GFp_nistp224_method, "NIST/SECG curve over a 224 bit prime field" },
3134 { NID_secp224r1, &_EC_NIST_PRIME_224.h, 0, "NIST/SECG curve over a 224 bit prime field" },
3136 { NID_secp256k1, &_EC_SECG_PRIME_256K1.h, 0, "SECG curve over a 256 bit prime field" },
3137 /* SECG secp256r1 is the same as X9.62 prime256v1 and hence omitted */
3138 { NID_secp384r1, &_EC_NIST_PRIME_384.h, 0, "NIST/SECG curve over a 384 bit prime field" },
3139 #ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
3140 { NID_secp521r1, &_EC_NIST_PRIME_521.h, EC_GFp_nistp521_method, "NIST/SECG curve over a 521 bit prime field" },
3142 { NID_secp521r1, &_EC_NIST_PRIME_521.h, 0, "NIST/SECG curve over a 521 bit prime field" },
3145 { NID_X9_62_prime192v1, &_EC_NIST_PRIME_192.h, 0, "NIST/X9.62/SECG curve over a 192 bit prime field" },
3146 { NID_X9_62_prime192v2, &_EC_X9_62_PRIME_192V2.h, 0, "X9.62 curve over a 192 bit prime field" },
3147 { NID_X9_62_prime192v3, &_EC_X9_62_PRIME_192V3.h, 0, "X9.62 curve over a 192 bit prime field" },
3148 { NID_X9_62_prime239v1, &_EC_X9_62_PRIME_239V1.h, 0, "X9.62 curve over a 239 bit prime field" },
3149 { NID_X9_62_prime239v2, &_EC_X9_62_PRIME_239V2.h, 0, "X9.62 curve over a 239 bit prime field" },
3150 { NID_X9_62_prime239v3, &_EC_X9_62_PRIME_239V3.h, 0, "X9.62 curve over a 239 bit prime field" },
3151 { NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h,
3152 #if defined(ECP_NISTZ256_ASM)
3153 EC_GFp_nistz256_method,
3154 #elif !defined(OPENSSL_NO_EC_NISTP_64_GCC_128)
3155 EC_GFp_nistp256_method,
3159 "X9.62/SECG curve over a 256 bit prime field" },
3160 #ifndef OPENSSL_NO_EC2M
3161 /* characteristic two field curves */
3162 /* NIST/SECG curves */
3163 { NID_sect113r1, &_EC_SECG_CHAR2_113R1.h, 0, "SECG curve over a 113 bit binary field" },
3164 { NID_sect113r2, &_EC_SECG_CHAR2_113R2.h, 0, "SECG curve over a 113 bit binary field" },
3165 { NID_sect131r1, &_EC_SECG_CHAR2_131R1.h, 0, "SECG/WTLS curve over a 131 bit binary field" },
3166 { NID_sect131r2, &_EC_SECG_CHAR2_131R2.h, 0, "SECG curve over a 131 bit binary field" },
3167 { NID_sect163k1, &_EC_NIST_CHAR2_163K.h, 0, "NIST/SECG/WTLS curve over a 163 bit binary field" },
3168 { NID_sect163r1, &_EC_SECG_CHAR2_163R1.h, 0, "SECG curve over a 163 bit binary field" },
3169 { NID_sect163r2, &_EC_NIST_CHAR2_163B.h, 0, "NIST/SECG curve over a 163 bit binary field" },
3170 { NID_sect193r1, &_EC_SECG_CHAR2_193R1.h, 0, "SECG curve over a 193 bit binary field" },
3171 { NID_sect193r2, &_EC_SECG_CHAR2_193R2.h, 0, "SECG curve over a 193 bit binary field" },
3172 { NID_sect233k1, &_EC_NIST_CHAR2_233K.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
3173 { NID_sect233r1, &_EC_NIST_CHAR2_233B.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
3174 { NID_sect239k1, &_EC_SECG_CHAR2_239K1.h, 0, "SECG curve over a 239 bit binary field" },
3175 { NID_sect283k1, &_EC_NIST_CHAR2_283K.h, 0, "NIST/SECG curve over a 283 bit binary field" },
3176 { NID_sect283r1, &_EC_NIST_CHAR2_283B.h, 0, "NIST/SECG curve over a 283 bit binary field" },
3177 { NID_sect409k1, &_EC_NIST_CHAR2_409K.h, 0, "NIST/SECG curve over a 409 bit binary field" },
3178 { NID_sect409r1, &_EC_NIST_CHAR2_409B.h, 0, "NIST/SECG curve over a 409 bit binary field" },
3179 { NID_sect571k1, &_EC_NIST_CHAR2_571K.h, 0, "NIST/SECG curve over a 571 bit binary field" },
3180 { NID_sect571r1, &_EC_NIST_CHAR2_571B.h, 0, "NIST/SECG curve over a 571 bit binary field" },
3182 { NID_X9_62_c2pnb163v1, &_EC_X9_62_CHAR2_163V1.h, 0, "X9.62 curve over a 163 bit binary field" },
3183 { NID_X9_62_c2pnb163v2, &_EC_X9_62_CHAR2_163V2.h, 0, "X9.62 curve over a 163 bit binary field" },
3184 { NID_X9_62_c2pnb163v3, &_EC_X9_62_CHAR2_163V3.h, 0, "X9.62 curve over a 163 bit binary field" },
3185 { NID_X9_62_c2pnb176v1, &_EC_X9_62_CHAR2_176V1.h, 0, "X9.62 curve over a 176 bit binary field" },
3186 { NID_X9_62_c2tnb191v1, &_EC_X9_62_CHAR2_191V1.h, 0, "X9.62 curve over a 191 bit binary field" },
3187 { NID_X9_62_c2tnb191v2, &_EC_X9_62_CHAR2_191V2.h, 0, "X9.62 curve over a 191 bit binary field" },
3188 { NID_X9_62_c2tnb191v3, &_EC_X9_62_CHAR2_191V3.h, 0, "X9.62 curve over a 191 bit binary field" },
3189 { NID_X9_62_c2pnb208w1, &_EC_X9_62_CHAR2_208W1.h, 0, "X9.62 curve over a 208 bit binary field" },
3190 { NID_X9_62_c2tnb239v1, &_EC_X9_62_CHAR2_239V1.h, 0, "X9.62 curve over a 239 bit binary field" },
3191 { NID_X9_62_c2tnb239v2, &_EC_X9_62_CHAR2_239V2.h, 0, "X9.62 curve over a 239 bit binary field" },
3192 { NID_X9_62_c2tnb239v3, &_EC_X9_62_CHAR2_239V3.h, 0, "X9.62 curve over a 239 bit binary field" },
3193 { NID_X9_62_c2pnb272w1, &_EC_X9_62_CHAR2_272W1.h, 0, "X9.62 curve over a 272 bit binary field" },
3194 { NID_X9_62_c2pnb304w1, &_EC_X9_62_CHAR2_304W1.h, 0, "X9.62 curve over a 304 bit binary field" },
3195 { NID_X9_62_c2tnb359v1, &_EC_X9_62_CHAR2_359V1.h, 0, "X9.62 curve over a 359 bit binary field" },
3196 { NID_X9_62_c2pnb368w1, &_EC_X9_62_CHAR2_368W1.h, 0, "X9.62 curve over a 368 bit binary field" },
3197 { NID_X9_62_c2tnb431r1, &_EC_X9_62_CHAR2_431R1.h, 0, "X9.62 curve over a 431 bit binary field" },
3198 /* the WAP/WTLS curves
3199 * [unlike SECG, spec has its own OIDs for curves from X9.62] */
3200 { NID_wap_wsg_idm_ecid_wtls1, &_EC_WTLS_1.h, 0, "WTLS curve over a 113 bit binary field" },
3201 { NID_wap_wsg_idm_ecid_wtls3, &_EC_NIST_CHAR2_163K.h, 0, "NIST/SECG/WTLS curve over a 163 bit binary field" },
3202 { NID_wap_wsg_idm_ecid_wtls4, &_EC_SECG_CHAR2_113R1.h, 0, "SECG curve over a 113 bit binary field" },
3203 { NID_wap_wsg_idm_ecid_wtls5, &_EC_X9_62_CHAR2_163V1.h, 0, "X9.62 curve over a 163 bit binary field" },
3205 { NID_wap_wsg_idm_ecid_wtls6, &_EC_SECG_PRIME_112R1.h, 0, "SECG/WTLS curve over a 112 bit prime field" },
3206 { NID_wap_wsg_idm_ecid_wtls7, &_EC_SECG_PRIME_160R2.h, 0, "SECG/WTLS curve over a 160 bit prime field" },
3207 { NID_wap_wsg_idm_ecid_wtls8, &_EC_WTLS_8.h, 0, "WTLS curve over a 112 bit prime field" },
3208 { NID_wap_wsg_idm_ecid_wtls9, &_EC_WTLS_9.h, 0, "WTLS curve over a 160 bit prime field" },
3209 #ifndef OPENSSL_NO_EC2M
3210 { NID_wap_wsg_idm_ecid_wtls10, &_EC_NIST_CHAR2_233K.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
3211 { NID_wap_wsg_idm_ecid_wtls11, &_EC_NIST_CHAR2_233B.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
3213 { NID_wap_wsg_idm_ecid_wtls12, &_EC_WTLS_12.h, 0, "WTLS curvs over a 224 bit prime field" },
3214 #ifndef OPENSSL_NO_EC2M
3216 { NID_ipsec3, &_EC_IPSEC_155_ID3.h, 0, "\n\tIPSec/IKE/Oakley curve #3 over a 155 bit binary field.\n"
3217 "\tNot suitable for ECDSA.\n\tQuestionable extension field!" },
3218 { NID_ipsec4, &_EC_IPSEC_185_ID4.h, 0, "\n\tIPSec/IKE/Oakley curve #4 over a 185 bit binary field.\n"
3219 "\tNot suitable for ECDSA.\n\tQuestionable extension field!" },
3221 /* brainpool curves */
3222 { NID_brainpoolP160r1, &_EC_brainpoolP160r1.h, 0, "RFC 5639 curve over a 160 bit prime field"},
3223 { NID_brainpoolP160t1, &_EC_brainpoolP160t1.h, 0, "RFC 5639 curve over a 160 bit prime field"},
3224 { NID_brainpoolP192r1, &_EC_brainpoolP192r1.h, 0, "RFC 5639 curve over a 192 bit prime field"},
3225 { NID_brainpoolP192t1, &_EC_brainpoolP192t1.h, 0, "RFC 5639 curve over a 192 bit prime field"},
3226 { NID_brainpoolP224r1, &_EC_brainpoolP224r1.h, 0, "RFC 5639 curve over a 224 bit prime field"},
3227 { NID_brainpoolP224t1, &_EC_brainpoolP224t1.h, 0, "RFC 5639 curve over a 224 bit prime field"},
3228 { NID_brainpoolP256r1, &_EC_brainpoolP256r1.h, 0, "RFC 5639 curve over a 256 bit prime field"},
3229 { NID_brainpoolP256t1, &_EC_brainpoolP256t1.h, 0, "RFC 5639 curve over a 256 bit prime field"},
3230 { NID_brainpoolP320r1, &_EC_brainpoolP320r1.h, 0, "RFC 5639 curve over a 320 bit prime field"},
3231 { NID_brainpoolP320t1, &_EC_brainpoolP320t1.h, 0, "RFC 5639 curve over a 320 bit prime field"},
3232 { NID_brainpoolP384r1, &_EC_brainpoolP384r1.h, 0, "RFC 5639 curve over a 384 bit prime field"},
3233 { NID_brainpoolP384t1, &_EC_brainpoolP384t1.h, 0, "RFC 5639 curve over a 384 bit prime field"},
3234 { NID_brainpoolP512r1, &_EC_brainpoolP512r1.h, 0, "RFC 5639 curve over a 512 bit prime field"},
3235 { NID_brainpoolP512t1, &_EC_brainpoolP512t1.h, 0, "RFC 5639 curve over a 512 bit prime field"},
3238 #define curve_list_length (sizeof(curve_list)/sizeof(ec_list_element))
3240 static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
3242 EC_GROUP *group=NULL;
3245 BIGNUM *p=NULL, *a=NULL, *b=NULL, *x=NULL, *y=NULL, *order=NULL;
3247 int seed_len,param_len;
3248 const EC_METHOD *meth;
3249 const EC_CURVE_DATA *data;
3250 const unsigned char *params;
3252 if ((ctx = BN_CTX_new()) == NULL)
3254 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_MALLOC_FAILURE);
3259 seed_len = data->seed_len;
3260 param_len = data->param_len;
3261 params = (const unsigned char *)(data+1); /* skip header */
3262 params += seed_len; /* skip seed */
3264 if (!(p = BN_bin2bn(params+0*param_len, param_len, NULL))
3265 || !(a = BN_bin2bn(params+1*param_len, param_len, NULL))
3266 || !(b = BN_bin2bn(params+2*param_len, param_len, NULL)))
3268 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
3272 if (curve.meth != 0)
3274 meth = curve.meth();
3275 if (((group = EC_GROUP_new(meth)) == NULL) ||
3276 (!(group->meth->group_set_curve(group, p, a, b, ctx))))
3278 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3282 else if (data->field_type == NID_X9_62_prime_field)
3284 if ((group = EC_GROUP_new_curve_GFp(p, a, b, ctx)) == NULL)
3286 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3290 #ifndef OPENSSL_NO_EC2M
3291 else /* field_type == NID_X9_62_characteristic_two_field */
3293 if ((group = EC_GROUP_new_curve_GF2m(p, a, b, ctx)) == NULL)
3295 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3301 if ((P = EC_POINT_new(group)) == NULL)
3303 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3307 if (!(x = BN_bin2bn(params+3*param_len, param_len, NULL))
3308 || !(y = BN_bin2bn(params+4*param_len, param_len, NULL)))
3310 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
3313 if (!EC_POINT_set_affine_coordinates_GFp(group, P, x, y, ctx))
3315 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3318 if (!(order = BN_bin2bn(params+5*param_len, param_len, NULL))
3319 || !BN_set_word(x, (BN_ULONG)data->cofactor))
3321 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
3324 if (!EC_GROUP_set_generator(group, P, order, x))
3326 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3331 if (!EC_GROUP_set_seed(group, params-seed_len, seed_len))
3333 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3341 EC_GROUP_free(group);
3363 EC_GROUP *EC_GROUP_new_by_curve_name(int nid)
3366 EC_GROUP *ret = NULL;
3370 return FIPS_ec_group_new_by_curve_name(nid);
3375 for (i=0; i<curve_list_length; i++)
3376 if (curve_list[i].nid == nid)
3378 ret = ec_group_new_from_data(curve_list[i]);
3384 ECerr(EC_F_EC_GROUP_NEW_BY_CURVE_NAME, EC_R_UNKNOWN_GROUP);
3388 EC_GROUP_set_curve_name(ret, nid);
3393 size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems)
3397 if (r == NULL || nitems == 0)
3398 return curve_list_length;
3400 min = nitems < curve_list_length ? nitems : curve_list_length;
3402 for (i = 0; i < min; i++)
3404 r[i].nid = curve_list[i].nid;
3405 r[i].comment = curve_list[i].comment;
3408 return curve_list_length;
3411 /* Functions to translate between common NIST curve names and NIDs */
3414 const char *name; /* NIST Name of curve */
3415 int nid; /* Curve NID */
3418 static EC_NIST_NAME nist_curves[] = {
3419 {"B-163", NID_sect163r2},
3420 {"B-233", NID_sect233r1},
3421 {"B-283", NID_sect283r1},
3422 {"B-409", NID_sect409r1},
3423 {"B-571", NID_sect571r1},
3424 {"K-163", NID_sect163k1},
3425 {"K-233", NID_sect233k1},
3426 {"K-283", NID_sect283k1},
3427 {"K-409", NID_sect409k1},
3428 {"K-571", NID_sect571k1},
3429 {"P-192", NID_X9_62_prime192v1},
3430 {"P-224", NID_secp224r1},
3431 {"P-256", NID_X9_62_prime256v1},
3432 {"P-384", NID_secp384r1},
3433 {"P-521", NID_secp521r1}
3436 const char *EC_curve_nid2nist(int nid)
3439 for (i = 0; i < sizeof(nist_curves)/sizeof(EC_NIST_NAME); i++)
3441 if (nist_curves[i].nid == nid)
3442 return nist_curves[i].name;
3447 int EC_curve_nist2nid(const char *name)
3450 for (i = 0; i < sizeof(nist_curves)/sizeof(EC_NIST_NAME); i++)
3452 if (!strcmp(nist_curves[i].name, name))
3453 return nist_curves[i].nid;