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.
76 #include <openssl/err.h>
77 #include <openssl/obj_mac.h>
78 #include <openssl/opensslconf.h>
81 int field_type, /* either NID_X9_62_prime_field or
82 * NID_X9_62_characteristic_two_field */
85 unsigned int cofactor; /* promoted to BN_ULONG */
88 /* the nist prime curves */
89 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
90 _EC_NIST_PRIME_192 = {
91 { NID_X9_62_prime_field,20,24,1 },
94 0x30,0x45,0xAE,0x6F,0xC8,0x42,0x2F,0x64,0xED,0x57,
95 0x95,0x28,0xD3,0x81,0x20,0xEA,0xE1,0x21,0x96,0xD5,
98 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
99 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
103 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
104 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
108 0x64,0x21,0x05,0x19,0xE5,0x9C,0x80,0xE7,0x0F,0xA7,
109 0xE9,0xAB,0x72,0x24,0x30,0x49,0xFE,0xB8,0xDE,0xEC,
113 0x18,0x8D,0xA8,0x0E,0xB0,0x30,0x90,0xF6,0x7C,0xBF,
114 0x20,0xEB,0x43,0xA1,0x88,0x00,0xF4,0xFF,0x0A,0xFD,
118 0x07,0x19,0x2b,0x95,0xff,0xc8,0xda,0x78,0x63,0x10,
119 0x11,0xed,0x6b,0x24,0xcd,0xd5,0x73,0xf9,0x77,0xa1,
123 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
124 0xFF,0xFF,0x99,0xDE,0xF8,0x36,0x14,0x6B,0xC9,0xB1,
125 0xB4,0xD2,0x28,0x31 }
128 static const struct { EC_CURVE_DATA h; unsigned char data[20+28*6]; }
129 _EC_NIST_PRIME_224 = {
130 { NID_X9_62_prime_field,20,28,1 },
133 0xBD,0x71,0x34,0x47,0x99,0xD5,0xC7,0xFC,0xDC,0x45,
134 0xB5,0x9F,0xA3,0xB9,0xAB,0x8F,0x6A,0x94,0x8B,0xC5,
137 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
138 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
139 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
142 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
143 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
144 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
147 0xB4,0x05,0x0A,0x85,0x0C,0x04,0xB3,0xAB,0xF5,0x41,
148 0x32,0x56,0x50,0x44,0xB0,0xB7,0xD7,0xBF,0xD8,0xBA,
149 0x27,0x0B,0x39,0x43,0x23,0x55,0xFF,0xB4,
152 0xB7,0x0E,0x0C,0xBD,0x6B,0xB4,0xBF,0x7F,0x32,0x13,
153 0x90,0xB9,0x4A,0x03,0xC1,0xD3,0x56,0xC2,0x11,0x22,
154 0x34,0x32,0x80,0xD6,0x11,0x5C,0x1D,0x21,
157 0xbd,0x37,0x63,0x88,0xb5,0xf7,0x23,0xfb,0x4c,0x22,
158 0xdf,0xe6,0xcd,0x43,0x75,0xa0,0x5a,0x07,0x47,0x64,
159 0x44,0xd5,0x81,0x99,0x85,0x00,0x7e,0x34,
162 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
163 0xFF,0xFF,0xFF,0xFF,0x16,0xA2,0xE0,0xB8,0xF0,0x3E,
164 0x13,0xDD,0x29,0x45,0x5C,0x5C,0x2A,0x3D }
167 static const struct { EC_CURVE_DATA h; unsigned char data[20+48*6]; }
168 _EC_NIST_PRIME_384 = {
169 { NID_X9_62_prime_field,20,48,1 },
172 0xA3,0x35,0x92,0x6A,0xA3,0x19,0xA2,0x7A,0x1D,0x00,
173 0x89,0x6A,0x67,0x73,0xA4,0x82,0x7A,0xCD,0xAC,0x73,
176 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
177 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
178 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
179 0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
180 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
183 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
184 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
185 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
186 0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
187 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC,
189 0xB3,0x31,0x2F,0xA7,0xE2,0x3E,0xE7,0xE4,0x98,0x8E,
190 0x05,0x6B,0xE3,0xF8,0x2D,0x19,0x18,0x1D,0x9C,0x6E,
191 0xFE,0x81,0x41,0x12,0x03,0x14,0x08,0x8F,0x50,0x13,
192 0x87,0x5A,0xC6,0x56,0x39,0x8D,0x8A,0x2E,0xD1,0x9D,
193 0x2A,0x85,0xC8,0xED,0xD3,0xEC,0x2A,0xEF,
195 0xAA,0x87,0xCA,0x22,0xBE,0x8B,0x05,0x37,0x8E,0xB1,
196 0xC7,0x1E,0xF3,0x20,0xAD,0x74,0x6E,0x1D,0x3B,0x62,
197 0x8B,0xA7,0x9B,0x98,0x59,0xF7,0x41,0xE0,0x82,0x54,
198 0x2A,0x38,0x55,0x02,0xF2,0x5D,0xBF,0x55,0x29,0x6C,
199 0x3A,0x54,0x5E,0x38,0x72,0x76,0x0A,0xB7,
201 0x36,0x17,0xde,0x4a,0x96,0x26,0x2c,0x6f,0x5d,0x9e,
202 0x98,0xbf,0x92,0x92,0xdc,0x29,0xf8,0xf4,0x1d,0xbd,
203 0x28,0x9a,0x14,0x7c,0xe9,0xda,0x31,0x13,0xb5,0xf0,
204 0xb8,0xc0,0x0a,0x60,0xb1,0xce,0x1d,0x7e,0x81,0x9d,
205 0x7a,0x43,0x1d,0x7c,0x90,0xea,0x0e,0x5f,
207 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
208 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
209 0xFF,0xFF,0xFF,0xFF,0xC7,0x63,0x4D,0x81,0xF4,0x37,
210 0x2D,0xDF,0x58,0x1A,0x0D,0xB2,0x48,0xB0,0xA7,0x7A,
211 0xEC,0xEC,0x19,0x6A,0xCC,0xC5,0x29,0x73 }
214 static const struct { EC_CURVE_DATA h; unsigned char data[20+66*6]; }
215 _EC_NIST_PRIME_521 = {
216 { NID_X9_62_prime_field,20,66,1 },
219 0xD0,0x9E,0x88,0x00,0x29,0x1C,0xB8,0x53,0x96,0xCC,
220 0x67,0x17,0x39,0x32,0x84,0xAA,0xA0,0xDA,0x64,0xBA,
223 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
224 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
225 0xFF,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,
232 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
233 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
234 0xFF,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,0xFC,
241 0x00,0x51,0x95,0x3E,0xB9,0x61,0x8E,0x1C,0x9A,0x1F,
242 0x92,0x9A,0x21,0xA0,0xB6,0x85,0x40,0xEE,0xA2,0xDA,
243 0x72,0x5B,0x99,0xB3,0x15,0xF3,0xB8,0xB4,0x89,0x91,
244 0x8E,0xF1,0x09,0xE1,0x56,0x19,0x39,0x51,0xEC,0x7E,
245 0x93,0x7B,0x16,0x52,0xC0,0xBD,0x3B,0xB1,0xBF,0x07,
246 0x35,0x73,0xDF,0x88,0x3D,0x2C,0x34,0xF1,0xEF,0x45,
247 0x1F,0xD4,0x6B,0x50,0x3F,0x00,
250 0x00,0xC6,0x85,0x8E,0x06,0xB7,0x04,0x04,0xE9,0xCD,
251 0x9E,0x3E,0xCB,0x66,0x23,0x95,0xB4,0x42,0x9C,0x64,
252 0x81,0x39,0x05,0x3F,0xB5,0x21,0xF8,0x28,0xAF,0x60,
253 0x6B,0x4D,0x3D,0xBA,0xA1,0x4B,0x5E,0x77,0xEF,0xE7,
254 0x59,0x28,0xFE,0x1D,0xC1,0x27,0xA2,0xFF,0xA8,0xDE,
255 0x33,0x48,0xB3,0xC1,0x85,0x6A,0x42,0x9B,0xF9,0x7E,
256 0x7E,0x31,0xC2,0xE5,0xBD,0x66,
259 0x01,0x18,0x39,0x29,0x6a,0x78,0x9a,0x3b,0xc0,0x04,
260 0x5c,0x8a,0x5f,0xb4,0x2c,0x7d,0x1b,0xd9,0x98,0xf5,
261 0x44,0x49,0x57,0x9b,0x44,0x68,0x17,0xaf,0xbd,0x17,
262 0x27,0x3e,0x66,0x2c,0x97,0xee,0x72,0x99,0x5e,0xf4,
263 0x26,0x40,0xc5,0x50,0xb9,0x01,0x3f,0xad,0x07,0x61,
264 0x35,0x3c,0x70,0x86,0xa2,0x72,0xc2,0x40,0x88,0xbe,
265 0x94,0x76,0x9f,0xd1,0x66,0x50,
268 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
269 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
270 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
271 0xFF,0xFF,0xFF,0xFA,0x51,0x86,0x87,0x83,0xBF,0x2F,
272 0x96,0x6B,0x7F,0xCC,0x01,0x48,0xF7,0x09,0xA5,0xD0,
273 0x3B,0xB5,0xC9,0xB8,0x89,0x9C,0x47,0xAE,0xBB,0x6F,
274 0xB7,0x1E,0x91,0x38,0x64,0x09 }
277 /* the x9.62 prime curves (minus the nist prime curves) */
278 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
279 _EC_X9_62_PRIME_192V2 = {
280 { NID_X9_62_prime_field,20,24,1 },
283 0x31,0xA9,0x2E,0xE2,0x02,0x9F,0xD1,0x0D,0x90,0x1B,
284 0x11,0x3E,0x99,0x07,0x10,0xF0,0xD2,0x1A,0xC6,0xB6,
287 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
288 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
292 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
293 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
297 0xCC,0x22,0xD6,0xDF,0xB9,0x5C,0x6B,0x25,0xE4,0x9C,
298 0x0D,0x63,0x64,0xA4,0xE5,0x98,0x0C,0x39,0x3A,0xA2,
302 0xEE,0xA2,0xBA,0xE7,0xE1,0x49,0x78,0x42,0xF2,0xDE,
303 0x77,0x69,0xCF,0xE9,0xC9,0x89,0xC0,0x72,0xAD,0x69,
307 0x65,0x74,0xd1,0x1d,0x69,0xb6,0xec,0x7a,0x67,0x2b,
308 0xb8,0x2a,0x08,0x3d,0xf2,0xf2,0xb0,0x84,0x7d,0xe9,
312 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
313 0xFF,0xFE,0x5F,0xB1,0xA7,0x24,0xDC,0x80,0x41,0x86,
314 0x48,0xD8,0xDD,0x31 }
317 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
318 _EC_X9_62_PRIME_192V3 = {
319 { NID_X9_62_prime_field,20,24,1 },
322 0xC4,0x69,0x68,0x44,0x35,0xDE,0xB3,0x78,0xC4,0xB6,
323 0x5C,0xA9,0x59,0x1E,0x2A,0x57,0x63,0x05,0x9A,0x2E,
326 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
327 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
331 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
332 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
336 0x22,0x12,0x3D,0xC2,0x39,0x5A,0x05,0xCA,0xA7,0x42,
337 0x3D,0xAE,0xCC,0xC9,0x47,0x60,0xA7,0xD4,0x62,0x25,
341 0x7D,0x29,0x77,0x81,0x00,0xC6,0x5A,0x1D,0xA1,0x78,
342 0x37,0x16,0x58,0x8D,0xCE,0x2B,0x8B,0x4A,0xEE,0x8E,
346 0x38,0xa9,0x0f,0x22,0x63,0x73,0x37,0x33,0x4b,0x49,
347 0xdc,0xb6,0x6a,0x6d,0xc8,0xf9,0x97,0x8a,0xca,0x76,
351 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
352 0xFF,0xFF,0x7A,0x62,0xD0,0x31,0xC8,0x3F,0x42,0x94,
353 0xF6,0x40,0xEC,0x13 }
356 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
357 _EC_X9_62_PRIME_239V1 = {
358 { NID_X9_62_prime_field,20,30,1 },
361 0xE4,0x3B,0xB4,0x60,0xF0,0xB8,0x0C,0xC0,0xC0,0xB0,
362 0x75,0x79,0x8E,0x94,0x80,0x60,0xF8,0x32,0x1B,0x7D,
365 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
366 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
367 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
370 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
371 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
372 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFC,
375 0x6B,0x01,0x6C,0x3B,0xDC,0xF1,0x89,0x41,0xD0,0xD6,
376 0x54,0x92,0x14,0x75,0xCA,0x71,0xA9,0xDB,0x2F,0xB2,
377 0x7D,0x1D,0x37,0x79,0x61,0x85,0xC2,0x94,0x2C,0x0A,
380 0x0F,0xFA,0x96,0x3C,0xDC,0xA8,0x81,0x6C,0xCC,0x33,
381 0xB8,0x64,0x2B,0xED,0xF9,0x05,0xC3,0xD3,0x58,0x57,
382 0x3D,0x3F,0x27,0xFB,0xBD,0x3B,0x3C,0xB9,0xAA,0xAF,
385 0x7d,0xeb,0xe8,0xe4,0xe9,0x0a,0x5d,0xae,0x6e,0x40,
386 0x54,0xca,0x53,0x0b,0xa0,0x46,0x54,0xb3,0x68,0x18,
387 0xce,0x22,0x6b,0x39,0xfc,0xcb,0x7b,0x02,0xf1,0xae,
390 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
391 0xFF,0xFF,0x7F,0xFF,0xFF,0x9E,0x5E,0x9A,0x9F,0x5D,
392 0x90,0x71,0xFB,0xD1,0x52,0x26,0x88,0x90,0x9D,0x0B }
395 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
396 _EC_X9_62_PRIME_239V2 = {
397 { NID_X9_62_prime_field,20,30,1 },
400 0xE8,0xB4,0x01,0x16,0x04,0x09,0x53,0x03,0xCA,0x3B,
401 0x80,0x99,0x98,0x2B,0xE0,0x9F,0xCB,0x9A,0xE6,0x16,
404 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
405 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
406 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
409 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
410 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
411 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFC,
414 0x61,0x7F,0xAB,0x68,0x32,0x57,0x6C,0xBB,0xFE,0xD5,
415 0x0D,0x99,0xF0,0x24,0x9C,0x3F,0xEE,0x58,0xB9,0x4B,
416 0xA0,0x03,0x8C,0x7A,0xE8,0x4C,0x8C,0x83,0x2F,0x2C,
419 0x38,0xAF,0x09,0xD9,0x87,0x27,0x70,0x51,0x20,0xC9,
420 0x21,0xBB,0x5E,0x9E,0x26,0x29,0x6A,0x3C,0xDC,0xF2,
421 0xF3,0x57,0x57,0xA0,0xEA,0xFD,0x87,0xB8,0x30,0xE7,
424 0x5b,0x01,0x25,0xe4,0xdb,0xea,0x0e,0xc7,0x20,0x6d,
425 0xa0,0xfc,0x01,0xd9,0xb0,0x81,0x32,0x9f,0xb5,0x55,
426 0xde,0x6e,0xf4,0x60,0x23,0x7d,0xff,0x8b,0xe4,0xba,
429 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
430 0xFF,0xFF,0x80,0x00,0x00,0xCF,0xA7,0xE8,0x59,0x43,
431 0x77,0xD4,0x14,0xC0,0x38,0x21,0xBC,0x58,0x20,0x63 }
434 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
435 _EC_X9_62_PRIME_239V3 = {
436 { NID_X9_62_prime_field,20,30,1 },
440 0x7D,0x73,0x74,0x16,0x8F,0xFE,0x34,0x71,0xB6,0x0A,
441 0x85,0x76,0x86,0xA1,0x94,0x75,0xD3,0xBF,0xA2,0xFF,
444 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
445 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
446 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
449 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
450 0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
451 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFC,
454 0x25,0x57,0x05,0xFA,0x2A,0x30,0x66,0x54,0xB1,0xF4,
455 0xCB,0x03,0xD6,0xA7,0x50,0xA3,0x0C,0x25,0x01,0x02,
456 0xD4,0x98,0x87,0x17,0xD9,0xBA,0x15,0xAB,0x6D,0x3E,
459 0x67,0x68,0xAE,0x8E,0x18,0xBB,0x92,0xCF,0xCF,0x00,
460 0x5C,0x94,0x9A,0xA2,0xC6,0xD9,0x48,0x53,0xD0,0xE6,
461 0x60,0xBB,0xF8,0x54,0xB1,0xC9,0x50,0x5F,0xE9,0x5A,
464 0x16,0x07,0xe6,0x89,0x8f,0x39,0x0c,0x06,0xbc,0x1d,
465 0x55,0x2b,0xad,0x22,0x6f,0x3b,0x6f,0xcf,0xe4,0x8b,
466 0x6e,0x81,0x84,0x99,0xaf,0x18,0xe3,0xed,0x6c,0xf3,
469 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
470 0xFF,0xFF,0x7F,0xFF,0xFF,0x97,0x5D,0xEB,0x41,0xB3,
471 0xA6,0x05,0x7C,0x3C,0x43,0x21,0x46,0x52,0x65,0x51 }
475 static const struct { EC_CURVE_DATA h; unsigned char data[20+32*6]; }
476 _EC_X9_62_PRIME_256V1 = {
477 { NID_X9_62_prime_field,20,32,1 },
480 0xC4,0x9D,0x36,0x08,0x86,0xE7,0x04,0x93,0x6A,0x66,
481 0x78,0xE1,0x13,0x9D,0x26,0xB7,0x81,0x9F,0x7E,0x90,
484 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01,0x00,0x00,
485 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
486 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
490 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x01,0x00,0x00,
491 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
492 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
496 0x5A,0xC6,0x35,0xD8,0xAA,0x3A,0x93,0xE7,0xB3,0xEB,
497 0xBD,0x55,0x76,0x98,0x86,0xBC,0x65,0x1D,0x06,0xB0,
498 0xCC,0x53,0xB0,0xF6,0x3B,0xCE,0x3C,0x3E,0x27,0xD2,
502 0x6B,0x17,0xD1,0xF2,0xE1,0x2C,0x42,0x47,0xF8,0xBC,
503 0xE6,0xE5,0x63,0xA4,0x40,0xF2,0x77,0x03,0x7D,0x81,
504 0x2D,0xEB,0x33,0xA0,0xF4,0xA1,0x39,0x45,0xD8,0x98,
508 0x4f,0xe3,0x42,0xe2,0xfe,0x1a,0x7f,0x9b,0x8e,0xe7,
509 0xeb,0x4a,0x7c,0x0f,0x9e,0x16,0x2b,0xce,0x33,0x57,
510 0x6b,0x31,0x5e,0xce,0xcb,0xb6,0x40,0x68,0x37,0xbf,
514 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,
515 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBC,0xE6,0xFA,0xAD,
516 0xA7,0x17,0x9E,0x84,0xF3,0xB9,0xCA,0xC2,0xFC,0x63,
520 /* the secg prime curves (minus the nist and x9.62 prime curves) */
521 static const struct { EC_CURVE_DATA h; unsigned char data[20+14*6]; }
522 _EC_SECG_PRIME_112R1 = {
523 { NID_X9_62_prime_field,20,14,1 },
526 0x00,0xF5,0x0B,0x02,0x8E,0x4D,0x69,0x6E,0x67,0x68,
527 0x75,0x61,0x51,0x75,0x29,0x04,0x72,0x78,0x3F,0xB1,
530 0xDB,0x7C,0x2A,0xBF,0x62,0xE3,0x5E,0x66,0x80,0x76,
534 0xDB,0x7C,0x2A,0xBF,0x62,0xE3,0x5E,0x66,0x80,0x76,
538 0x65,0x9E,0xF8,0xBA,0x04,0x39,0x16,0xEE,0xDE,0x89,
542 0x09,0x48,0x72,0x39,0x99,0x5A,0x5E,0xE7,0x6B,0x55,
546 0xa8,0x9c,0xe5,0xaf,0x87,0x24,0xc0,0xa2,0x3e,0x0e,
550 0xDB,0x7C,0x2A,0xBF,0x62,0xE3,0x5E,0x76,0x28,0xDF,
551 0xAC,0x65,0x61,0xC5 }
554 static const struct { EC_CURVE_DATA h; unsigned char data[20+14*6]; }
555 _EC_SECG_PRIME_112R2 = {
556 { NID_X9_62_prime_field,20,14,4 },
559 0x00,0x27,0x57,0xA1,0x11,0x4D,0x69,0x6E,0x67,0x68,
560 0x75,0x61,0x51,0x75,0x53,0x16,0xC0,0x5E,0x0B,0xD4,
563 0xDB,0x7C,0x2A,0xBF,0x62,0xE3,0x5E,0x66,0x80,0x76,
567 0x61,0x27,0xC2,0x4C,0x05,0xF3,0x8A,0x0A,0xAA,0xF6,
571 0x51,0xDE,0xF1,0x81,0x5D,0xB5,0xED,0x74,0xFC,0xC3,
575 0x4B,0xA3,0x0A,0xB5,0xE8,0x92,0xB4,0xE1,0x64,0x9D,
579 0xad,0xcd,0x46,0xf5,0x88,0x2e,0x37,0x47,0xde,0xf3,
583 0x36,0xDF,0x0A,0xAF,0xD8,0xB8,0xD7,0x59,0x7C,0xA1,
584 0x05,0x20,0xD0,0x4B }
587 static const struct { EC_CURVE_DATA h; unsigned char data[20+16*6]; }
588 _EC_SECG_PRIME_128R1 = {
589 { NID_X9_62_prime_field,20,16,1 },
592 0x00,0x0E,0x0D,0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,
593 0x51,0x75,0x0C,0xC0,0x3A,0x44,0x73,0xD0,0x36,0x79,
596 0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
597 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
600 0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
601 0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
604 0xE8,0x75,0x79,0xC1,0x10,0x79,0xF4,0x3D,0xD8,0x24,
605 0x99,0x3C,0x2C,0xEE,0x5E,0xD3,
608 0x16,0x1F,0xF7,0x52,0x8B,0x89,0x9B,0x2D,0x0C,0x28,
609 0x60,0x7C,0xA5,0x2C,0x5B,0x86,
612 0xcf,0x5a,0xc8,0x39,0x5b,0xaf,0xeb,0x13,0xc0,0x2d,
613 0xa2,0x92,0xdd,0xed,0x7a,0x83,
616 0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x75,0xA3,
617 0x0D,0x1B,0x90,0x38,0xA1,0x15 }
620 static const struct { EC_CURVE_DATA h; unsigned char data[20+16*6]; }
621 _EC_SECG_PRIME_128R2 = {
622 { NID_X9_62_prime_field,20,16,4 },
625 0x00,0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,0x51,0x75,
626 0x12,0xD8,0xF0,0x34,0x31,0xFC,0xE6,0x3B,0x88,0xF4,
629 0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
630 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
633 0xD6,0x03,0x19,0x98,0xD1,0xB3,0xBB,0xFE,0xBF,0x59,
634 0xCC,0x9B,0xBF,0xF9,0xAE,0xE1,
637 0x5E,0xEE,0xFC,0xA3,0x80,0xD0,0x29,0x19,0xDC,0x2C,
638 0x65,0x58,0xBB,0x6D,0x8A,0x5D,
641 0x7B,0x6A,0xA5,0xD8,0x5E,0x57,0x29,0x83,0xE6,0xFB,
642 0x32,0xA7,0xCD,0xEB,0xC1,0x40,
645 0x27,0xb6,0x91,0x6a,0x89,0x4d,0x3a,0xee,0x71,0x06,
646 0xfe,0x80,0x5f,0xc3,0x4b,0x44,
649 0x3F,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xBE,0x00,
650 0x24,0x72,0x06,0x13,0xB5,0xA3 }
653 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
654 _EC_SECG_PRIME_160K1 = {
655 { NID_X9_62_prime_field,0,21,1 },
659 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
660 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xAC,
664 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
665 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
669 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
670 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
674 0x00,0x3B,0x4C,0x38,0x2C,0xE3,0x7A,0xA1,0x92,0xA4,
675 0x01,0x9E,0x76,0x30,0x36,0xF4,0xF5,0xDD,0x4D,0x7E,
679 0x00,0x93,0x8c,0xf9,0x35,0x31,0x8f,0xdc,0xed,0x6b,
680 0xc2,0x82,0x86,0x53,0x17,0x33,0xc3,0xf0,0x3c,0x4f,
684 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
685 0x01,0xB8,0xFA,0x16,0xDF,0xAB,0x9A,0xCA,0x16,0xB6,
689 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
690 _EC_SECG_PRIME_160R1 = {
691 { NID_X9_62_prime_field,20,21,1 },
694 0x10,0x53,0xCD,0xE4,0x2C,0x14,0xD6,0x96,0xE6,0x76,
695 0x87,0x56,0x15,0x17,0x53,0x3B,0xF3,0xF8,0x33,0x45,
698 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
699 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,
703 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
704 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,
708 0x00,0x1C,0x97,0xBE,0xFC,0x54,0xBD,0x7A,0x8B,0x65,
709 0xAC,0xF8,0x9F,0x81,0xD4,0xD4,0xAD,0xC5,0x65,0xFA,
713 0x00,0x4A,0x96,0xB5,0x68,0x8E,0xF5,0x73,0x28,0x46,
714 0x64,0x69,0x89,0x68,0xC3,0x8B,0xB9,0x13,0xCB,0xFC,
718 0x00,0x23,0xa6,0x28,0x55,0x31,0x68,0x94,0x7d,0x59,
719 0xdc,0xc9,0x12,0x04,0x23,0x51,0x37,0x7a,0xc5,0xfb,
723 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
724 0x01,0xF4,0xC8,0xF9,0x27,0xAE,0xD3,0xCA,0x75,0x22,
728 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
729 _EC_SECG_PRIME_160R2 = {
730 { NID_X9_62_prime_field,20,21,1 },
733 0xB9,0x9B,0x99,0xB0,0x99,0xB3,0x23,0xE0,0x27,0x09,
734 0xA4,0xD6,0x96,0xE6,0x76,0x87,0x56,0x15,0x17,0x51,
737 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
738 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xAC,
742 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
743 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xAC,
747 0x00,0xB4,0xE1,0x34,0xD3,0xFB,0x59,0xEB,0x8B,0xAB,
748 0x57,0x27,0x49,0x04,0x66,0x4D,0x5A,0xF5,0x03,0x88,
752 0x00,0x52,0xDC,0xB0,0x34,0x29,0x3A,0x11,0x7E,0x1F,
753 0x4F,0xF1,0x1B,0x30,0xF7,0x19,0x9D,0x31,0x44,0xCE,
757 0x00,0xfe,0xaf,0xfe,0xf2,0xe3,0x31,0xf2,0x96,0xe0,
758 0x71,0xfa,0x0d,0xf9,0x98,0x2c,0xfe,0xa7,0xd4,0x3f,
762 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
763 0x00,0x35,0x1E,0xE7,0x86,0xA8,0x18,0xF3,0xA1,0xA1,
767 static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
768 _EC_SECG_PRIME_192K1 = {
769 { NID_X9_62_prime_field,0,24,1 },
773 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
774 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
778 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
779 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
783 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
784 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
788 0xDB,0x4F,0xF1,0x0E,0xC0,0x57,0xE9,0xAE,0x26,0xB0,
789 0x7D,0x02,0x80,0xB7,0xF4,0x34,0x1D,0xA5,0xD1,0xB1,
793 0x9b,0x2f,0x2f,0x6d,0x9c,0x56,0x28,0xa7,0x84,0x41,
794 0x63,0xd0,0x15,0xbe,0x86,0x34,0x40,0x82,0xaa,0x88,
798 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
799 0xFF,0xFE,0x26,0xF2,0xFC,0x17,0x0F,0x69,0x46,0x6A,
800 0x74,0xDE,0xFD,0x8D }
803 static const struct { EC_CURVE_DATA h; unsigned char data[0+29*6]; }
804 _EC_SECG_PRIME_224K1 = {
805 { NID_X9_62_prime_field,0,29,1 },
809 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
810 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
811 0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xE5,0x6D,
814 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
815 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
816 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
819 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
820 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
821 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
824 0x00,0xA1,0x45,0x5B,0x33,0x4D,0xF0,0x99,0xDF,0x30,
825 0xFC,0x28,0xA1,0x69,0xA4,0x67,0xE9,0xE4,0x70,0x75,
826 0xA9,0x0F,0x7E,0x65,0x0E,0xB6,0xB7,0xA4,0x5C,
829 0x00,0x7e,0x08,0x9f,0xed,0x7f,0xba,0x34,0x42,0x82,
830 0xca,0xfb,0xd6,0xf7,0xe3,0x19,0xf7,0xc0,0xb0,0xbd,
831 0x59,0xe2,0xca,0x4b,0xdb,0x55,0x6d,0x61,0xa5,
834 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
835 0x00,0x00,0x00,0x00,0x01,0xDC,0xE8,0xD2,0xEC,0x61,
836 0x84,0xCA,0xF0,0xA9,0x71,0x76,0x9F,0xB1,0xF7 }
839 static const struct { EC_CURVE_DATA h; unsigned char data[0+32*6]; }
840 _EC_SECG_PRIME_256K1 = {
841 { NID_X9_62_prime_field,0,32,1 },
845 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
846 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
847 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,
851 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
852 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
853 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
857 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
858 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
859 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
863 0x79,0xBE,0x66,0x7E,0xF9,0xDC,0xBB,0xAC,0x55,0xA0,
864 0x62,0x95,0xCE,0x87,0x0B,0x07,0x02,0x9B,0xFC,0xDB,
865 0x2D,0xCE,0x28,0xD9,0x59,0xF2,0x81,0x5B,0x16,0xF8,
869 0x48,0x3a,0xda,0x77,0x26,0xa3,0xc4,0x65,0x5d,0xa4,
870 0xfb,0xfc,0x0e,0x11,0x08,0xa8,0xfd,0x17,0xb4,0x48,
871 0xa6,0x85,0x54,0x19,0x9c,0x47,0xd0,0x8f,0xfb,0x10,
875 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
876 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xBA,0xAE,0xDC,0xE6,
877 0xAF,0x48,0xA0,0x3B,0xBF,0xD2,0x5E,0x8C,0xD0,0x36,
881 /* some wap/wtls curves */
882 static const struct { EC_CURVE_DATA h; unsigned char data[0+15*6]; }
884 { NID_X9_62_prime_field,0,15,1 },
888 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
889 0xFF,0xFF,0xFF,0xFD,0xE7,
892 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
893 0x00,0x00,0x00,0x00,0x00,
896 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
897 0x00,0x00,0x00,0x00,0x03,
900 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
901 0x00,0x00,0x00,0x00,0x01,
904 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
905 0x00,0x00,0x00,0x00,0x02,
908 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xEC,0xEA,
909 0x55,0x1A,0xD8,0x37,0xE9 }
912 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
914 { NID_X9_62_prime_field,0,21,1 },
918 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
919 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x80,
923 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
924 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
928 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
929 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
933 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
934 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
938 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
939 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
943 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
944 0x01,0xCD,0xC9,0x8A,0xE0,0xE2,0xDE,0x57,0x4A,0xBF,
948 static const struct { EC_CURVE_DATA h; unsigned char data[0+28*6]; }
950 { NID_X9_62_prime_field,0,28,1 },
954 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
955 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
956 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
959 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
960 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
961 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
964 0xB4,0x05,0x0A,0x85,0x0C,0x04,0xB3,0xAB,0xF5,0x41,
965 0x32,0x56,0x50,0x44,0xB0,0xB7,0xD7,0xBF,0xD8,0xBA,
966 0x27,0x0B,0x39,0x43,0x23,0x55,0xFF,0xB4,
969 0xB7,0x0E,0x0C,0xBD,0x6B,0xB4,0xBF,0x7F,0x32,0x13,
970 0x90,0xB9,0x4A,0x03,0xC1,0xD3,0x56,0xC2,0x11,0x22,
971 0x34,0x32,0x80,0xD6,0x11,0x5C,0x1D,0x21,
974 0xbd,0x37,0x63,0x88,0xb5,0xf7,0x23,0xfb,0x4c,0x22,
975 0xdf,0xe6,0xcd,0x43,0x75,0xa0,0x5a,0x07,0x47,0x64,
976 0x44,0xd5,0x81,0x99,0x85,0x00,0x7e,0x34,
979 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
980 0xFF,0xFF,0xFF,0xFF,0x16,0xA2,0xE0,0xB8,0xF0,0x3E,
981 0x13,0xDD,0x29,0x45,0x5C,0x5C,0x2A,0x3D }
984 #ifndef OPENSSL_NO_EC2M
986 /* characteristic two curves */
987 static const struct { EC_CURVE_DATA h; unsigned char data[20+15*6]; }
988 _EC_SECG_CHAR2_113R1 = {
989 { NID_X9_62_characteristic_two_field,20,15,2 },
992 0x10,0xE7,0x23,0xAB,0x14,0xD6,0x96,0xE6,0x76,0x87,
993 0x56,0x15,0x17,0x56,0xFE,0xBF,0x8F,0xCB,0x49,0xA9,
996 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
997 0x00,0x00,0x00,0x02,0x01,
1000 0x00,0x30,0x88,0x25,0x0C,0xA6,0xE7,0xC7,0xFE,0x64,
1001 0x9C,0xE8,0x58,0x20,0xF7,
1004 0x00,0xE8,0xBE,0xE4,0xD3,0xE2,0x26,0x07,0x44,0x18,
1005 0x8B,0xE0,0xE9,0xC7,0x23,
1008 0x00,0x9D,0x73,0x61,0x6F,0x35,0xF4,0xAB,0x14,0x07,
1009 0xD7,0x35,0x62,0xC1,0x0F,
1012 0x00,0xA5,0x28,0x30,0x27,0x79,0x58,0xEE,0x84,0xD1,
1013 0x31,0x5E,0xD3,0x18,0x86,
1016 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD9,0xCC,
1017 0xEC,0x8A,0x39,0xE5,0x6F }
1020 static const struct { EC_CURVE_DATA h; unsigned char data[20+15*6]; }
1021 _EC_SECG_CHAR2_113R2 = {
1022 { NID_X9_62_characteristic_two_field,20,15,2 },
1025 0x10,0xC0,0xFB,0x15,0x76,0x08,0x60,0xDE,0xF1,0xEE,
1026 0xF4,0xD6,0x96,0xE6,0x76,0x87,0x56,0x15,0x17,0x5D,
1029 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1030 0x00,0x00,0x00,0x02,0x01,
1033 0x00,0x68,0x99,0x18,0xDB,0xEC,0x7E,0x5A,0x0D,0xD6,
1034 0xDF,0xC0,0xAA,0x55,0xC7,
1037 0x00,0x95,0xE9,0xA9,0xEC,0x9B,0x29,0x7B,0xD4,0xBF,
1038 0x36,0xE0,0x59,0x18,0x4F,
1041 0x01,0xA5,0x7A,0x6A,0x7B,0x26,0xCA,0x5E,0xF5,0x2F,
1042 0xCD,0xB8,0x16,0x47,0x97,
1045 0x00,0xB3,0xAD,0xC9,0x4E,0xD1,0xFE,0x67,0x4C,0x06,
1046 0xE6,0x95,0xBA,0xBA,0x1D,
1049 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x78,
1050 0x9B,0x24,0x96,0xAF,0x93 }
1053 static const struct { EC_CURVE_DATA h; unsigned char data[20+17*6]; }
1054 _EC_SECG_CHAR2_131R1 = {
1055 { NID_X9_62_characteristic_two_field,20,17,2 },
1058 0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,0x51,0x75,0x98,
1059 0x5B,0xD3,0xAD,0xBA,0xDA,0x21,0xB4,0x3A,0x97,0xE2,
1062 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1063 0x00,0x00,0x00,0x00,0x00,0x01,0x0D,
1066 0x07,0xA1,0x1B,0x09,0xA7,0x6B,0x56,0x21,0x44,0x41,
1067 0x8F,0xF3,0xFF,0x8C,0x25,0x70,0xB8,
1070 0x02,0x17,0xC0,0x56,0x10,0x88,0x4B,0x63,0xB9,0xC6,
1071 0xC7,0x29,0x16,0x78,0xF9,0xD3,0x41,
1074 0x00,0x81,0xBA,0xF9,0x1F,0xDF,0x98,0x33,0xC4,0x0F,
1075 0x9C,0x18,0x13,0x43,0x63,0x83,0x99,
1078 0x07,0x8C,0x6E,0x7E,0xA3,0x8C,0x00,0x1F,0x73,0xC8,
1079 0x13,0x4B,0x1B,0x4E,0xF9,0xE1,0x50,
1082 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x31,
1083 0x23,0x95,0x3A,0x94,0x64,0xB5,0x4D }
1086 static const struct { EC_CURVE_DATA h; unsigned char data[20+17*6]; }
1087 _EC_SECG_CHAR2_131R2 = {
1088 { NID_X9_62_characteristic_two_field,20,17,2 },
1091 0x98,0x5B,0xD3,0xAD,0xBA,0xD4,0xD6,0x96,0xE6,0x76,
1092 0x87,0x56,0x15,0x17,0x5A,0x21,0xB4,0x3A,0x97,0xE3,
1095 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1096 0x00,0x00,0x00,0x00,0x00,0x01,0x0D,
1099 0x03,0xE5,0xA8,0x89,0x19,0xD7,0xCA,0xFC,0xBF,0x41,
1100 0x5F,0x07,0xC2,0x17,0x65,0x73,0xB2,
1103 0x04,0xB8,0x26,0x6A,0x46,0xC5,0x56,0x57,0xAC,0x73,
1104 0x4C,0xE3,0x8F,0x01,0x8F,0x21,0x92,
1107 0x03,0x56,0xDC,0xD8,0xF2,0xF9,0x50,0x31,0xAD,0x65,
1108 0x2D,0x23,0x95,0x1B,0xB3,0x66,0xA8,
1111 0x06,0x48,0xF0,0x6D,0x86,0x79,0x40,0xA5,0x36,0x6D,
1112 0x9E,0x26,0x5D,0xE9,0xEB,0x24,0x0F,
1115 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x69,
1116 0x54,0xA2,0x33,0x04,0x9B,0xA9,0x8F }
1119 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
1120 _EC_NIST_CHAR2_163K = {
1121 { NID_X9_62_characteristic_two_field,0,21,2 },
1125 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1126 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1130 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1131 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1135 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1136 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1140 0x02,0xFE,0x13,0xC0,0x53,0x7B,0xBC,0x11,0xAC,0xAA,
1141 0x07,0xD7,0x93,0xDE,0x4E,0x6D,0x5E,0x5C,0x94,0xEE,
1145 0x02,0x89,0x07,0x0F,0xB0,0x5D,0x38,0xFF,0x58,0x32,
1146 0x1F,0x2E,0x80,0x05,0x36,0xD5,0x38,0xCC,0xDA,0xA3,
1150 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1151 0x02,0x01,0x08,0xA2,0xE0,0xCC,0x0D,0x99,0xF8,0xA5,
1155 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
1156 _EC_SECG_CHAR2_163R1 = {
1157 { NID_X9_62_characteristic_two_field,0,21,2 },
1161 /* The algorithm used to derive the curve parameters from
1162 * the seed used here is slightly different than the
1163 * algorithm described in X9.62 . */
1164 0x24,0xB7,0xB1,0x37,0xC8,0xA1,0x4D,0x69,0x6E,0x67,
1165 0x68,0x75,0x61,0x51,0x75,0x6F,0xD0,0xDA,0x2E,0x5C,
1168 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1169 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1173 0x07,0xB6,0x88,0x2C,0xAA,0xEF,0xA8,0x4F,0x95,0x54,
1174 0xFF,0x84,0x28,0xBD,0x88,0xE2,0x46,0xD2,0x78,0x2A,
1178 0x07,0x13,0x61,0x2D,0xCD,0xDC,0xB4,0x0A,0xAB,0x94,
1179 0x6B,0xDA,0x29,0xCA,0x91,0xF7,0x3A,0xF9,0x58,0xAF,
1183 0x03,0x69,0x97,0x96,0x97,0xAB,0x43,0x89,0x77,0x89,
1184 0x56,0x67,0x89,0x56,0x7F,0x78,0x7A,0x78,0x76,0xA6,
1188 0x00,0x43,0x5E,0xDB,0x42,0xEF,0xAF,0xB2,0x98,0x9D,
1189 0x51,0xFE,0xFC,0xE3,0xC8,0x09,0x88,0xF4,0x1F,0xF8,
1193 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1194 0xFF,0x48,0xAA,0xB6,0x89,0xC2,0x9C,0xA7,0x10,0x27,
1198 static const struct { EC_CURVE_DATA h; unsigned char data[0+21*6]; }
1199 _EC_NIST_CHAR2_163B = {
1200 { NID_X9_62_characteristic_two_field,0,21,2 },
1204 /* The seed here was used to created the curve parameters in normal
1205 * basis representation (and not the polynomial representation used here) */
1206 0x85,0xE2,0x5B,0xFE,0x5C,0x86,0x22,0x6C,0xDB,0x12,
1207 0x01,0x6F,0x75,0x53,0xF9,0xD0,0xE6,0x93,0xA2,0x68,
1210 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1211 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1215 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1216 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1220 0x02,0x0A,0x60,0x19,0x07,0xB8,0xC9,0x53,0xCA,0x14,
1221 0x81,0xEB,0x10,0x51,0x2F,0x78,0x74,0x4A,0x32,0x05,
1225 0x03,0xF0,0xEB,0xA1,0x62,0x86,0xA2,0xD5,0x7E,0xA0,
1226 0x99,0x11,0x68,0xD4,0x99,0x46,0x37,0xE8,0x34,0x3E,
1230 0x00,0xD5,0x1F,0xBC,0x6C,0x71,0xA0,0x09,0x4F,0xA2,
1231 0xCD,0xD5,0x45,0xB1,0x1C,0x5C,0x0C,0x79,0x73,0x24,
1235 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1236 0x02,0x92,0xFE,0x77,0xE7,0x0C,0x12,0xA4,0x23,0x4C,
1240 static const struct { EC_CURVE_DATA h; unsigned char data[20+25*6]; }
1241 _EC_SECG_CHAR2_193R1 = {
1242 { NID_X9_62_characteristic_two_field,20,25,2 },
1245 0x10,0x3F,0xAE,0xC7,0x4D,0x69,0x6E,0x67,0x68,0x75,
1246 0x61,0x51,0x75,0x77,0x7F,0xC5,0xB1,0x91,0xEF,0x30,
1249 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1250 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1251 0x00,0x00,0x00,0x80,0x01,
1254 0x00,0x17,0x85,0x8F,0xEB,0x7A,0x98,0x97,0x51,0x69,
1255 0xE1,0x71,0xF7,0x7B,0x40,0x87,0xDE,0x09,0x8A,0xC8,
1256 0xA9,0x11,0xDF,0x7B,0x01,
1259 0x00,0xFD,0xFB,0x49,0xBF,0xE6,0xC3,0xA8,0x9F,0xAC,
1260 0xAD,0xAA,0x7A,0x1E,0x5B,0xBC,0x7C,0xC1,0xC2,0xE5,
1261 0xD8,0x31,0x47,0x88,0x14,
1264 0x01,0xF4,0x81,0xBC,0x5F,0x0F,0xF8,0x4A,0x74,0xAD,
1265 0x6C,0xDF,0x6F,0xDE,0xF4,0xBF,0x61,0x79,0x62,0x53,
1266 0x72,0xD8,0xC0,0xC5,0xE1,
1269 0x00,0x25,0xE3,0x99,0xF2,0x90,0x37,0x12,0xCC,0xF3,
1270 0xEA,0x9E,0x3A,0x1A,0xD1,0x7F,0xB0,0xB3,0x20,0x1B,
1271 0x6A,0xF7,0xCE,0x1B,0x05,
1274 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1275 0x00,0x00,0x00,0xC7,0xF3,0x4A,0x77,0x8F,0x44,0x3A,
1276 0xCC,0x92,0x0E,0xBA,0x49 }
1279 static const struct { EC_CURVE_DATA h; unsigned char data[20+25*6]; }
1280 _EC_SECG_CHAR2_193R2 = {
1281 { NID_X9_62_characteristic_two_field,20,25,2 },
1284 0x10,0xB7,0xB4,0xD6,0x96,0xE6,0x76,0x87,0x56,0x15,
1285 0x17,0x51,0x37,0xC8,0xA1,0x6F,0xD0,0xDA,0x22,0x11,
1288 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1289 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1290 0x00,0x00,0x00,0x80,0x01,
1293 0x01,0x63,0xF3,0x5A,0x51,0x37,0xC2,0xCE,0x3E,0xA6,
1294 0xED,0x86,0x67,0x19,0x0B,0x0B,0xC4,0x3E,0xCD,0x69,
1295 0x97,0x77,0x02,0x70,0x9B,
1298 0x00,0xC9,0xBB,0x9E,0x89,0x27,0xD4,0xD6,0x4C,0x37,
1299 0x7E,0x2A,0xB2,0x85,0x6A,0x5B,0x16,0xE3,0xEF,0xB7,
1300 0xF6,0x1D,0x43,0x16,0xAE,
1303 0x00,0xD9,0xB6,0x7D,0x19,0x2E,0x03,0x67,0xC8,0x03,
1304 0xF3,0x9E,0x1A,0x7E,0x82,0xCA,0x14,0xA6,0x51,0x35,
1305 0x0A,0xAE,0x61,0x7E,0x8F,
1308 0x01,0xCE,0x94,0x33,0x56,0x07,0xC3,0x04,0xAC,0x29,
1309 0xE7,0xDE,0xFB,0xD9,0xCA,0x01,0xF5,0x96,0xF9,0x27,
1310 0x22,0x4C,0xDE,0xCF,0x6C,
1313 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1314 0x00,0x00,0x01,0x5A,0xAB,0x56,0x1B,0x00,0x54,0x13,
1315 0xCC,0xD4,0xEE,0x99,0xD5 }
1318 static const struct { EC_CURVE_DATA h; unsigned char data[0+30*6]; }
1319 _EC_NIST_CHAR2_233K = {
1320 { NID_X9_62_characteristic_two_field,0,30,4 },
1323 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1324 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1325 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1328 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1329 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1330 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1333 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1334 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1335 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1338 0x01,0x72,0x32,0xBA,0x85,0x3A,0x7E,0x73,0x1A,0xF1,
1339 0x29,0xF2,0x2F,0xF4,0x14,0x95,0x63,0xA4,0x19,0xC2,
1340 0x6B,0xF5,0x0A,0x4C,0x9D,0x6E,0xEF,0xAD,0x61,0x26,
1343 0x01,0xDB,0x53,0x7D,0xEC,0xE8,0x19,0xB7,0xF7,0x0F,
1344 0x55,0x5A,0x67,0xC4,0x27,0xA8,0xCD,0x9B,0xF1,0x8A,
1345 0xEB,0x9B,0x56,0xE0,0xC1,0x10,0x56,0xFA,0xE6,0xA3,
1348 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1349 0x00,0x00,0x00,0x00,0x00,0x06,0x9D,0x5B,0xB9,0x15,
1350 0xBC,0xD4,0x6E,0xFB,0x1A,0xD5,0xF1,0x73,0xAB,0xDF }
1353 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
1354 _EC_NIST_CHAR2_233B = {
1355 { NID_X9_62_characteristic_two_field,20,30,2 },
1358 0x74,0xD5,0x9F,0xF0,0x7F,0x6B,0x41,0x3D,0x0E,0xA1,
1359 0x4B,0x34,0x4B,0x20,0xA2,0xDB,0x04,0x9B,0x50,0xC3,
1362 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1363 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1364 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1367 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1368 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1369 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1372 0x00,0x66,0x64,0x7E,0xDE,0x6C,0x33,0x2C,0x7F,0x8C,
1373 0x09,0x23,0xBB,0x58,0x21,0x3B,0x33,0x3B,0x20,0xE9,
1374 0xCE,0x42,0x81,0xFE,0x11,0x5F,0x7D,0x8F,0x90,0xAD,
1377 0x00,0xFA,0xC9,0xDF,0xCB,0xAC,0x83,0x13,0xBB,0x21,
1378 0x39,0xF1,0xBB,0x75,0x5F,0xEF,0x65,0xBC,0x39,0x1F,
1379 0x8B,0x36,0xF8,0xF8,0xEB,0x73,0x71,0xFD,0x55,0x8B,
1382 0x01,0x00,0x6A,0x08,0xA4,0x19,0x03,0x35,0x06,0x78,
1383 0xE5,0x85,0x28,0xBE,0xBF,0x8A,0x0B,0xEF,0xF8,0x67,
1384 0xA7,0xCA,0x36,0x71,0x6F,0x7E,0x01,0xF8,0x10,0x52,
1387 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1388 0x00,0x00,0x00,0x00,0x00,0x13,0xE9,0x74,0xE7,0x2F,
1389 0x8A,0x69,0x22,0x03,0x1D,0x26,0x03,0xCF,0xE0,0xD7 }
1392 static const struct { EC_CURVE_DATA h; unsigned char data[0+30*6]; }
1393 _EC_SECG_CHAR2_239K1 = {
1394 { NID_X9_62_characteristic_two_field,0,30,4 },
1397 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1398 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1399 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1402 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1403 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1404 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1407 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1408 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1409 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1412 0x29,0xA0,0xB6,0xA8,0x87,0xA9,0x83,0xE9,0x73,0x09,
1413 0x88,0xA6,0x87,0x27,0xA8,0xB2,0xD1,0x26,0xC4,0x4C,
1414 0xC2,0xCC,0x7B,0x2A,0x65,0x55,0x19,0x30,0x35,0xDC,
1417 0x76,0x31,0x08,0x04,0xF1,0x2E,0x54,0x9B,0xDB,0x01,
1418 0x1C,0x10,0x30,0x89,0xE7,0x35,0x10,0xAC,0xB2,0x75,
1419 0xFC,0x31,0x2A,0x5D,0xC6,0xB7,0x65,0x53,0xF0,0xCA,
1422 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1423 0x00,0x00,0x00,0x00,0x00,0x5A,0x79,0xFE,0xC6,0x7C,
1424 0xB6,0xE9,0x1F,0x1C,0x1D,0xA8,0x00,0xE4,0x78,0xA5 }
1427 static const struct { EC_CURVE_DATA h; unsigned char data[0+36*6]; }
1428 _EC_NIST_CHAR2_283K = {
1429 { NID_X9_62_characteristic_two_field,0,36,4 },
1432 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1433 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1434 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1435 0x00,0x00,0x00,0x00,0x10,0xA1,
1438 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1439 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1440 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1441 0x00,0x00,0x00,0x00,0x00,0x00,
1444 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1445 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1446 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1447 0x00,0x00,0x00,0x00,0x00,0x01,
1450 0x05,0x03,0x21,0x3F,0x78,0xCA,0x44,0x88,0x3F,0x1A,
1451 0x3B,0x81,0x62,0xF1,0x88,0xE5,0x53,0xCD,0x26,0x5F,
1452 0x23,0xC1,0x56,0x7A,0x16,0x87,0x69,0x13,0xB0,0xC2,
1453 0xAC,0x24,0x58,0x49,0x28,0x36,
1456 0x01,0xCC,0xDA,0x38,0x0F,0x1C,0x9E,0x31,0x8D,0x90,
1457 0xF9,0x5D,0x07,0xE5,0x42,0x6F,0xE8,0x7E,0x45,0xC0,
1458 0xE8,0x18,0x46,0x98,0xE4,0x59,0x62,0x36,0x4E,0x34,
1459 0x11,0x61,0x77,0xDD,0x22,0x59,
1462 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1463 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE9,0xAE,
1464 0x2E,0xD0,0x75,0x77,0x26,0x5D,0xFF,0x7F,0x94,0x45,
1465 0x1E,0x06,0x1E,0x16,0x3C,0x61 }
1468 static const struct { EC_CURVE_DATA h; unsigned char data[20+36*6]; }
1469 _EC_NIST_CHAR2_283B = {
1470 { NID_X9_62_characteristic_two_field,20,36,2 },
1473 0x77,0xE2,0xB0,0x73,0x70,0xEB,0x0F,0x83,0x2A,0x6D,
1474 0xD5,0xB6,0x2D,0xFC,0x88,0xCD,0x06,0xBB,0x84,0xBE,
1477 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1478 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1479 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1480 0x00,0x00,0x00,0x00,0x10,0xA1,
1483 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1484 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1485 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1486 0x00,0x00,0x00,0x00,0x00,0x01,
1489 0x02,0x7B,0x68,0x0A,0xC8,0xB8,0x59,0x6D,0xA5,0xA4,
1490 0xAF,0x8A,0x19,0xA0,0x30,0x3F,0xCA,0x97,0xFD,0x76,
1491 0x45,0x30,0x9F,0xA2,0xA5,0x81,0x48,0x5A,0xF6,0x26,
1492 0x3E,0x31,0x3B,0x79,0xA2,0xF5,
1495 0x05,0xF9,0x39,0x25,0x8D,0xB7,0xDD,0x90,0xE1,0x93,
1496 0x4F,0x8C,0x70,0xB0,0xDF,0xEC,0x2E,0xED,0x25,0xB8,
1497 0x55,0x7E,0xAC,0x9C,0x80,0xE2,0xE1,0x98,0xF8,0xCD,
1498 0xBE,0xCD,0x86,0xB1,0x20,0x53,
1501 0x03,0x67,0x68,0x54,0xFE,0x24,0x14,0x1C,0xB9,0x8F,
1502 0xE6,0xD4,0xB2,0x0D,0x02,0xB4,0x51,0x6F,0xF7,0x02,
1503 0x35,0x0E,0xDD,0xB0,0x82,0x67,0x79,0xC8,0x13,0xF0,
1504 0xDF,0x45,0xBE,0x81,0x12,0xF4,
1507 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1508 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0x90,
1509 0x39,0x96,0x60,0xFC,0x93,0x8A,0x90,0x16,0x5B,0x04,
1510 0x2A,0x7C,0xEF,0xAD,0xB3,0x07 }
1513 static const struct { EC_CURVE_DATA h; unsigned char data[0+52*6]; }
1514 _EC_NIST_CHAR2_409K = {
1515 { NID_X9_62_characteristic_two_field,0,52,4 },
1519 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1520 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1521 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1522 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1523 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1527 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1528 0x00,0x00,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,
1535 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1536 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,
1543 0x00,0x60,0xF0,0x5F,0x65,0x8F,0x49,0xC1,0xAD,0x3A,
1544 0xB1,0x89,0x0F,0x71,0x84,0x21,0x0E,0xFD,0x09,0x87,
1545 0xE3,0x07,0xC8,0x4C,0x27,0xAC,0xCF,0xB8,0xF9,0xF6,
1546 0x7C,0xC2,0xC4,0x60,0x18,0x9E,0xB5,0xAA,0xAA,0x62,
1547 0xEE,0x22,0x2E,0xB1,0xB3,0x55,0x40,0xCF,0xE9,0x02,
1551 0x01,0xE3,0x69,0x05,0x0B,0x7C,0x4E,0x42,0xAC,0xBA,
1552 0x1D,0xAC,0xBF,0x04,0x29,0x9C,0x34,0x60,0x78,0x2F,
1553 0x91,0x8E,0xA4,0x27,0xE6,0x32,0x51,0x65,0xE9,0xEA,
1554 0x10,0xE3,0xDA,0x5F,0x6C,0x42,0xE9,0xC5,0x52,0x15,
1555 0xAA,0x9C,0xA2,0x7A,0x58,0x63,0xEC,0x48,0xD8,0xE0,
1559 0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1560 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1561 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x5F,0x83,0xB2,
1562 0xD4,0xEA,0x20,0x40,0x0E,0xC4,0x55,0x7D,0x5E,0xD3,
1563 0xE3,0xE7,0xCA,0x5B,0x4B,0x5C,0x83,0xB8,0xE0,0x1E,
1567 static const struct { EC_CURVE_DATA h; unsigned char data[20+52*6]; }
1568 _EC_NIST_CHAR2_409B = {
1569 { NID_X9_62_characteristic_two_field,20,52,2 },
1572 0x40,0x99,0xB5,0xA4,0x57,0xF9,0xD6,0x9F,0x79,0x21,
1573 0x3D,0x09,0x4C,0x4B,0xCD,0x4D,0x42,0x62,0x21,0x0B,
1576 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1577 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1578 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1579 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1580 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1584 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1585 0x00,0x00,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,
1592 0x00,0x21,0xA5,0xC2,0xC8,0xEE,0x9F,0xEB,0x5C,0x4B,
1593 0x9A,0x75,0x3B,0x7B,0x47,0x6B,0x7F,0xD6,0x42,0x2E,
1594 0xF1,0xF3,0xDD,0x67,0x47,0x61,0xFA,0x99,0xD6,0xAC,
1595 0x27,0xC8,0xA9,0xA1,0x97,0xB2,0x72,0x82,0x2F,0x6C,
1596 0xD5,0x7A,0x55,0xAA,0x4F,0x50,0xAE,0x31,0x7B,0x13,
1600 0x01,0x5D,0x48,0x60,0xD0,0x88,0xDD,0xB3,0x49,0x6B,
1601 0x0C,0x60,0x64,0x75,0x62,0x60,0x44,0x1C,0xDE,0x4A,
1602 0xF1,0x77,0x1D,0x4D,0xB0,0x1F,0xFE,0x5B,0x34,0xE5,
1603 0x97,0x03,0xDC,0x25,0x5A,0x86,0x8A,0x11,0x80,0x51,
1604 0x56,0x03,0xAE,0xAB,0x60,0x79,0x4E,0x54,0xBB,0x79,
1608 0x00,0x61,0xB1,0xCF,0xAB,0x6B,0xE5,0xF3,0x2B,0xBF,
1609 0xA7,0x83,0x24,0xED,0x10,0x6A,0x76,0x36,0xB9,0xC5,
1610 0xA7,0xBD,0x19,0x8D,0x01,0x58,0xAA,0x4F,0x54,0x88,
1611 0xD0,0x8F,0x38,0x51,0x4F,0x1F,0xDF,0x4B,0x4F,0x40,
1612 0xD2,0x18,0x1B,0x36,0x81,0xC3,0x64,0xBA,0x02,0x73,
1616 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1617 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1618 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE2,0xAA,0xD6,
1619 0xA6,0x12,0xF3,0x33,0x07,0xBE,0x5F,0xA4,0x7C,0x3C,
1620 0x9E,0x05,0x2F,0x83,0x81,0x64,0xCD,0x37,0xD9,0xA2,
1624 static const struct { EC_CURVE_DATA h; unsigned char data[0+72*6]; }
1625 _EC_NIST_CHAR2_571K = {
1626 { NID_X9_62_characteristic_two_field,0,72,4 },
1630 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1631 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1632 0x00,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,
1640 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1641 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,
1650 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1651 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,
1660 0x02,0x6E,0xB7,0xA8,0x59,0x92,0x3F,0xBC,0x82,0x18,
1661 0x96,0x31,0xF8,0x10,0x3F,0xE4,0xAC,0x9C,0xA2,0x97,
1662 0x00,0x12,0xD5,0xD4,0x60,0x24,0x80,0x48,0x01,0x84,
1663 0x1C,0xA4,0x43,0x70,0x95,0x84,0x93,0xB2,0x05,0xE6,
1664 0x47,0xDA,0x30,0x4D,0xB4,0xCE,0xB0,0x8C,0xBB,0xD1,
1665 0xBA,0x39,0x49,0x47,0x76,0xFB,0x98,0x8B,0x47,0x17,
1666 0x4D,0xCA,0x88,0xC7,0xE2,0x94,0x52,0x83,0xA0,0x1C,
1670 0x03,0x49,0xDC,0x80,0x7F,0x4F,0xBF,0x37,0x4F,0x4A,
1671 0xEA,0xDE,0x3B,0xCA,0x95,0x31,0x4D,0xD5,0x8C,0xEC,
1672 0x9F,0x30,0x7A,0x54,0xFF,0xC6,0x1E,0xFC,0x00,0x6D,
1673 0x8A,0x2C,0x9D,0x49,0x79,0xC0,0xAC,0x44,0xAE,0xA7,
1674 0x4F,0xBE,0xBB,0xB9,0xF7,0x72,0xAE,0xDC,0xB6,0x20,
1675 0xB0,0x1A,0x7B,0xA7,0xAF,0x1B,0x32,0x04,0x30,0xC8,
1676 0x59,0x19,0x84,0xF6,0x01,0xCD,0x4C,0x14,0x3E,0xF1,
1680 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1681 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1682 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1683 0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x18,0x50,0xE1,
1684 0xF1,0x9A,0x63,0xE4,0xB3,0x91,0xA8,0xDB,0x91,0x7F,
1685 0x41,0x38,0xB6,0x30,0xD8,0x4B,0xE5,0xD6,0x39,0x38,
1686 0x1E,0x91,0xDE,0xB4,0x5C,0xFE,0x77,0x8F,0x63,0x7C,
1690 static const struct { EC_CURVE_DATA h; unsigned char data[20+72*6]; }
1691 _EC_NIST_CHAR2_571B = {
1692 { NID_X9_62_characteristic_two_field,20,72,2 },
1695 0x2A,0xA0,0x58,0xF7,0x3A,0x0E,0x33,0xAB,0x48,0x6B,
1696 0x0F,0x61,0x04,0x10,0xC5,0x3A,0x7F,0x13,0x23,0x10,
1699 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1700 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1701 0x00,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,
1709 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1710 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,
1719 0x02,0xF4,0x0E,0x7E,0x22,0x21,0xF2,0x95,0xDE,0x29,
1720 0x71,0x17,0xB7,0xF3,0xD6,0x2F,0x5C,0x6A,0x97,0xFF,
1721 0xCB,0x8C,0xEF,0xF1,0xCD,0x6B,0xA8,0xCE,0x4A,0x9A,
1722 0x18,0xAD,0x84,0xFF,0xAB,0xBD,0x8E,0xFA,0x59,0x33,
1723 0x2B,0xE7,0xAD,0x67,0x56,0xA6,0x6E,0x29,0x4A,0xFD,
1724 0x18,0x5A,0x78,0xFF,0x12,0xAA,0x52,0x0E,0x4D,0xE7,
1725 0x39,0xBA,0xCA,0x0C,0x7F,0xFE,0xFF,0x7F,0x29,0x55,
1729 0x03,0x03,0x00,0x1D,0x34,0xB8,0x56,0x29,0x6C,0x16,
1730 0xC0,0xD4,0x0D,0x3C,0xD7,0x75,0x0A,0x93,0xD1,0xD2,
1731 0x95,0x5F,0xA8,0x0A,0xA5,0xF4,0x0F,0xC8,0xDB,0x7B,
1732 0x2A,0xBD,0xBD,0xE5,0x39,0x50,0xF4,0xC0,0xD2,0x93,
1733 0xCD,0xD7,0x11,0xA3,0x5B,0x67,0xFB,0x14,0x99,0xAE,
1734 0x60,0x03,0x86,0x14,0xF1,0x39,0x4A,0xBF,0xA3,0xB4,
1735 0xC8,0x50,0xD9,0x27,0xE1,0xE7,0x76,0x9C,0x8E,0xEC,
1739 0x03,0x7B,0xF2,0x73,0x42,0xDA,0x63,0x9B,0x6D,0xCC,
1740 0xFF,0xFE,0xB7,0x3D,0x69,0xD7,0x8C,0x6C,0x27,0xA6,
1741 0x00,0x9C,0xBB,0xCA,0x19,0x80,0xF8,0x53,0x39,0x21,
1742 0xE8,0xA6,0x84,0x42,0x3E,0x43,0xBA,0xB0,0x8A,0x57,
1743 0x62,0x91,0xAF,0x8F,0x46,0x1B,0xB2,0xA8,0xB3,0x53,
1744 0x1D,0x2F,0x04,0x85,0xC1,0x9B,0x16,0xE2,0xF1,0x51,
1745 0x6E,0x23,0xDD,0x3C,0x1A,0x48,0x27,0xAF,0x1B,0x8A,
1749 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1750 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1751 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1752 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE6,0x61,0xCE,0x18,
1753 0xFF,0x55,0x98,0x73,0x08,0x05,0x9B,0x18,0x68,0x23,
1754 0x85,0x1E,0xC7,0xDD,0x9C,0xA1,0x16,0x1D,0xE9,0x3D,
1755 0x51,0x74,0xD6,0x6E,0x83,0x82,0xE9,0xBB,0x2F,0xE8,
1759 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
1760 _EC_X9_62_CHAR2_163V1 = {
1761 { NID_X9_62_characteristic_two_field,20,21,2 },
1764 0xD2,0xC0,0xFB,0x15,0x76,0x08,0x60,0xDE,0xF1,0xEE,
1765 0xF4,0xD6,0x96,0xE6,0x76,0x87,0x56,0x15,0x17,0x54,
1768 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1769 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1773 0x07,0x25,0x46,0xB5,0x43,0x52,0x34,0xA4,0x22,0xE0,
1774 0x78,0x96,0x75,0xF4,0x32,0xC8,0x94,0x35,0xDE,0x52,
1778 0x00,0xC9,0x51,0x7D,0x06,0xD5,0x24,0x0D,0x3C,0xFF,
1779 0x38,0xC7,0x4B,0x20,0xB6,0xCD,0x4D,0x6F,0x9D,0xD4,
1783 0x07,0xAF,0x69,0x98,0x95,0x46,0x10,0x3D,0x79,0x32,
1784 0x9F,0xCC,0x3D,0x74,0x88,0x0F,0x33,0xBB,0xE8,0x03,
1788 0x01,0xEC,0x23,0x21,0x1B,0x59,0x66,0xAD,0xEA,0x1D,
1789 0x3F,0x87,0xF7,0xEA,0x58,0x48,0xAE,0xF0,0xB7,0xCA,
1793 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1794 0x01,0xE6,0x0F,0xC8,0x82,0x1C,0xC7,0x4D,0xAE,0xAF,
1798 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
1799 _EC_X9_62_CHAR2_163V2 = {
1800 { NID_X9_62_characteristic_two_field,20,21,2 },
1803 0x53,0x81,0x4C,0x05,0x0D,0x44,0xD6,0x96,0xE6,0x76,
1804 0x87,0x56,0x15,0x17,0x58,0x0C,0xA4,0xE2,0x9F,0xFD,
1807 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1808 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1812 0x01,0x08,0xB3,0x9E,0x77,0xC4,0xB1,0x08,0xBE,0xD9,
1813 0x81,0xED,0x0E,0x89,0x0E,0x11,0x7C,0x51,0x1C,0xF0,
1817 0x06,0x67,0xAC,0xEB,0x38,0xAF,0x4E,0x48,0x8C,0x40,
1818 0x74,0x33,0xFF,0xAE,0x4F,0x1C,0x81,0x16,0x38,0xDF,
1822 0x00,0x24,0x26,0x6E,0x4E,0xB5,0x10,0x6D,0x0A,0x96,
1823 0x4D,0x92,0xC4,0x86,0x0E,0x26,0x71,0xDB,0x9B,0x6C,
1827 0x07,0x9F,0x68,0x4D,0xDF,0x66,0x84,0xC5,0xCD,0x25,
1828 0x8B,0x38,0x90,0x02,0x1B,0x23,0x86,0xDF,0xD1,0x9F,
1832 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1833 0xFD,0xF6,0x4D,0xE1,0x15,0x1A,0xDB,0xB7,0x8F,0x10,
1837 static const struct { EC_CURVE_DATA h; unsigned char data[20+21*6]; }
1838 _EC_X9_62_CHAR2_163V3 = {
1839 { NID_X9_62_characteristic_two_field,20,21,2 },
1842 0x50,0xCB,0xF1,0xD9,0x5C,0xA9,0x4D,0x69,0x6E,0x67,
1843 0x68,0x75,0x61,0x51,0x75,0xF1,0x6A,0x36,0xA3,0xB8,
1846 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1847 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
1851 0x07,0xA5,0x26,0xC6,0x3D,0x3E,0x25,0xA2,0x56,0xA0,
1852 0x07,0x69,0x9F,0x54,0x47,0xE3,0x2A,0xE4,0x56,0xB5,
1856 0x03,0xF7,0x06,0x17,0x98,0xEB,0x99,0xE2,0x38,0xFD,
1857 0x6F,0x1B,0xF9,0x5B,0x48,0xFE,0xEB,0x48,0x54,0x25,
1861 0x02,0xF9,0xF8,0x7B,0x7C,0x57,0x4D,0x0B,0xDE,0xCF,
1862 0x8A,0x22,0xE6,0x52,0x47,0x75,0xF9,0x8C,0xDE,0xBD,
1866 0x05,0xB9,0x35,0x59,0x0C,0x15,0x5E,0x17,0xEA,0x48,
1867 0xEB,0x3F,0xF3,0x71,0x8B,0x89,0x3D,0xF5,0x9A,0x05,
1871 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
1872 0xFE,0x1A,0xEE,0x14,0x0F,0x11,0x0A,0xFF,0x96,0x13,
1876 static const struct { EC_CURVE_DATA h; unsigned char data[0+23*6]; }
1877 _EC_X9_62_CHAR2_176V1 = {
1878 { NID_X9_62_characteristic_two_field,0,23,0xFF6E },
1882 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1883 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,
1887 0x00,0xE4,0xE6,0xDB,0x29,0x95,0x06,0x5C,0x40,0x7D,
1888 0x9D,0x39,0xB8,0xD0,0x96,0x7B,0x96,0x70,0x4B,0xA8,
1892 0x00,0x5D,0xDA,0x47,0x0A,0xBE,0x64,0x14,0xDE,0x8E,
1893 0xC1,0x33,0xAE,0x28,0xE9,0xBB,0xD7,0xFC,0xEC,0x0A,
1897 0x00,0x8D,0x16,0xC2,0x86,0x67,0x98,0xB6,0x00,0xF9,
1898 0xF0,0x8B,0xB4,0xA8,0xE8,0x60,0xF3,0x29,0x8C,0xE0,
1902 0x00,0x6F,0xA4,0x53,0x9C,0x2D,0xAD,0xDD,0xD6,0xBA,
1903 0xB5,0x16,0x7D,0x61,0xB4,0x36,0xE1,0xD9,0x2B,0xB1,
1907 0x00,0x00,0x01,0x00,0x92,0x53,0x73,0x97,0xEC,0xA4,
1908 0xF6,0x14,0x57,0x99,0xD6,0x2B,0x0A,0x19,0xCE,0x06,
1912 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
1913 _EC_X9_62_CHAR2_191V1 = {
1914 { NID_X9_62_characteristic_two_field,20,24,2 },
1917 0x4E,0x13,0xCA,0x54,0x27,0x44,0xD6,0x96,0xE6,0x76,
1918 0x87,0x56,0x15,0x17,0x55,0x2F,0x27,0x9A,0x8C,0x84,
1921 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1922 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1923 0x00,0x00,0x02,0x01,
1926 0x28,0x66,0x53,0x7B,0x67,0x67,0x52,0x63,0x6A,0x68,
1927 0xF5,0x65,0x54,0xE1,0x26,0x40,0x27,0x6B,0x64,0x9E,
1928 0xF7,0x52,0x62,0x67,
1931 0x2E,0x45,0xEF,0x57,0x1F,0x00,0x78,0x6F,0x67,0xB0,
1932 0x08,0x1B,0x94,0x95,0xA3,0xD9,0x54,0x62,0xF5,0xDE,
1933 0x0A,0xA1,0x85,0xEC,
1936 0x36,0xB3,0xDA,0xF8,0xA2,0x32,0x06,0xF9,0xC4,0xF2,
1937 0x99,0xD7,0xB2,0x1A,0x9C,0x36,0x91,0x37,0xF2,0xC8,
1938 0x4A,0xE1,0xAA,0x0D,
1941 0x76,0x5B,0xE7,0x34,0x33,0xB3,0xF9,0x5E,0x33,0x29,
1942 0x32,0xE7,0x0E,0xA2,0x45,0xCA,0x24,0x18,0xEA,0x0E,
1943 0xF9,0x80,0x18,0xFB,
1946 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1947 0x00,0x00,0x04,0xA2,0x0E,0x90,0xC3,0x90,0x67,0xC8,
1948 0x93,0xBB,0xB9,0xA5 }
1951 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
1952 _EC_X9_62_CHAR2_191V2 = {
1953 { NID_X9_62_characteristic_two_field,20,24,4 },
1956 0x08,0x71,0xEF,0x2F,0xEF,0x24,0xD6,0x96,0xE6,0x76,
1957 0x87,0x56,0x15,0x17,0x58,0xBE,0xE0,0xD9,0x5C,0x15,
1960 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1961 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1962 0x00,0x00,0x02,0x01,
1965 0x40,0x10,0x28,0x77,0x4D,0x77,0x77,0xC7,0xB7,0x66,
1966 0x6D,0x13,0x66,0xEA,0x43,0x20,0x71,0x27,0x4F,0x89,
1967 0xFF,0x01,0xE7,0x18,
1970 0x06,0x20,0x04,0x8D,0x28,0xBC,0xBD,0x03,0xB6,0x24,
1971 0x9C,0x99,0x18,0x2B,0x7C,0x8C,0xD1,0x97,0x00,0xC3,
1972 0x62,0xC4,0x6A,0x01,
1975 0x38,0x09,0xB2,0xB7,0xCC,0x1B,0x28,0xCC,0x5A,0x87,
1976 0x92,0x6A,0xAD,0x83,0xFD,0x28,0x78,0x9E,0x81,0xE2,
1977 0xC9,0xE3,0xBF,0x10,
1980 0x17,0x43,0x43,0x86,0x62,0x6D,0x14,0xF3,0xDB,0xF0,
1981 0x17,0x60,0xD9,0x21,0x3A,0x3E,0x1C,0xF3,0x7A,0xEC,
1982 0x43,0x7D,0x66,0x8A,
1985 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1986 0x00,0x00,0x50,0x50,0x8C,0xB8,0x9F,0x65,0x28,0x24,
1987 0xE0,0x6B,0x81,0x73 }
1990 static const struct { EC_CURVE_DATA h; unsigned char data[20+24*6]; }
1991 _EC_X9_62_CHAR2_191V3 = {
1992 { NID_X9_62_characteristic_two_field,20,24,6 },
1995 0xE0,0x53,0x51,0x2D,0xC6,0x84,0xD6,0x96,0xE6,0x76,
1996 0x87,0x56,0x15,0x17,0x50,0x67,0xAE,0x78,0x6D,0x1F,
1999 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2000 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2001 0x00,0x00,0x02,0x01,
2004 0x6C,0x01,0x07,0x47,0x56,0x09,0x91,0x22,0x22,0x10,
2005 0x56,0x91,0x1C,0x77,0xD7,0x7E,0x77,0xA7,0x77,0xE7,
2006 0xE7,0xE7,0x7F,0xCB,
2009 0x71,0xFE,0x1A,0xF9,0x26,0xCF,0x84,0x79,0x89,0xEF,
2010 0xEF,0x8D,0xB4,0x59,0xF6,0x63,0x94,0xD9,0x0F,0x32,
2011 0xAD,0x3F,0x15,0xE8,
2014 0x37,0x5D,0x4C,0xE2,0x4F,0xDE,0x43,0x44,0x89,0xDE,
2015 0x87,0x46,0xE7,0x17,0x86,0x01,0x50,0x09,0xE6,0x6E,
2016 0x38,0xA9,0x26,0xDD,
2019 0x54,0x5A,0x39,0x17,0x61,0x96,0x57,0x5D,0x98,0x59,
2020 0x99,0x36,0x6E,0x6A,0xD3,0x4C,0xE0,0xA7,0x7C,0xD7,
2021 0x12,0x7B,0x06,0xBE,
2024 0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
2025 0x55,0x55,0x61,0x0C,0x0B,0x19,0x68,0x12,0xBF,0xB6,
2026 0x28,0x8A,0x3E,0xA3 }
2029 static const struct { EC_CURVE_DATA h; unsigned char data[0+27*6]; }
2030 _EC_X9_62_CHAR2_208W1 = {
2031 { NID_X9_62_characteristic_two_field,0,27,0xFE48 },
2035 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2036 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
2037 0x00,0x00,0x00,0x00,0x00,0x00,0x07,
2040 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2041 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2042 0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2045 0x00,0xC8,0x61,0x9E,0xD4,0x5A,0x62,0xE6,0x21,0x2E,
2046 0x11,0x60,0x34,0x9E,0x2B,0xFA,0x84,0x44,0x39,0xFA,
2047 0xFC,0x2A,0x3F,0xD1,0x63,0x8F,0x9E,
2050 0x00,0x89,0xFD,0xFB,0xE4,0xAB,0xE1,0x93,0xDF,0x95,
2051 0x59,0xEC,0xF0,0x7A,0xC0,0xCE,0x78,0x55,0x4E,0x27,
2052 0x84,0xEB,0x8C,0x1E,0xD1,0xA5,0x7A,
2055 0x00,0x0F,0x55,0xB5,0x1A,0x06,0xE7,0x8E,0x9A,0xC3,
2056 0x8A,0x03,0x5F,0xF5,0x20,0xD8,0xB0,0x17,0x81,0xBE,
2057 0xB1,0xA6,0xBB,0x08,0x61,0x7D,0xE3,
2060 0x00,0x00,0x01,0x01,0xBA,0xF9,0x5C,0x97,0x23,0xC5,
2061 0x7B,0x6C,0x21,0xDA,0x2E,0xFF,0x2D,0x5E,0xD5,0x88,
2062 0xBD,0xD5,0x71,0x7E,0x21,0x2F,0x9D }
2065 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
2066 _EC_X9_62_CHAR2_239V1 = {
2067 { NID_X9_62_characteristic_two_field,20,30,4 },
2070 0xD3,0x4B,0x9A,0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,
2071 0x51,0x75,0xCA,0x71,0xB9,0x20,0xBF,0xEF,0xB0,0x5D,
2074 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2075 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2076 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,
2079 0x32,0x01,0x08,0x57,0x07,0x7C,0x54,0x31,0x12,0x3A,
2080 0x46,0xB8,0x08,0x90,0x67,0x56,0xF5,0x43,0x42,0x3E,
2081 0x8D,0x27,0x87,0x75,0x78,0x12,0x57,0x78,0xAC,0x76,
2084 0x79,0x04,0x08,0xF2,0xEE,0xDA,0xF3,0x92,0xB0,0x12,
2085 0xED,0xEF,0xB3,0x39,0x2F,0x30,0xF4,0x32,0x7C,0x0C,
2086 0xA3,0xF3,0x1F,0xC3,0x83,0xC4,0x22,0xAA,0x8C,0x16,
2089 0x57,0x92,0x70,0x98,0xFA,0x93,0x2E,0x7C,0x0A,0x96,
2090 0xD3,0xFD,0x5B,0x70,0x6E,0xF7,0xE5,0xF5,0xC1,0x56,
2091 0xE1,0x6B,0x7E,0x7C,0x86,0x03,0x85,0x52,0xE9,0x1D,
2094 0x61,0xD8,0xEE,0x50,0x77,0xC3,0x3F,0xEC,0xF6,0xF1,
2095 0xA1,0x6B,0x26,0x8D,0xE4,0x69,0xC3,0xC7,0x74,0x4E,
2096 0xA9,0xA9,0x71,0x64,0x9F,0xC7,0xA9,0x61,0x63,0x05,
2099 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2100 0x00,0x00,0x00,0x00,0x00,0x0F,0x4D,0x42,0xFF,0xE1,
2101 0x49,0x2A,0x49,0x93,0xF1,0xCA,0xD6,0x66,0xE4,0x47 }
2104 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
2105 _EC_X9_62_CHAR2_239V2 = {
2106 { NID_X9_62_characteristic_two_field,20,30,6 },
2109 0x2A,0xA6,0x98,0x2F,0xDF,0xA4,0xD6,0x96,0xE6,0x76,
2110 0x87,0x56,0x15,0x17,0x5D,0x26,0x67,0x27,0x27,0x7D,
2113 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2114 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2115 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,
2118 0x42,0x30,0x01,0x77,0x57,0xA7,0x67,0xFA,0xE4,0x23,
2119 0x98,0x56,0x9B,0x74,0x63,0x25,0xD4,0x53,0x13,0xAF,
2120 0x07,0x66,0x26,0x64,0x79,0xB7,0x56,0x54,0xE6,0x5F,
2123 0x50,0x37,0xEA,0x65,0x41,0x96,0xCF,0xF0,0xCD,0x82,
2124 0xB2,0xC1,0x4A,0x2F,0xCF,0x2E,0x3F,0xF8,0x77,0x52,
2125 0x85,0xB5,0x45,0x72,0x2F,0x03,0xEA,0xCD,0xB7,0x4B,
2128 0x28,0xF9,0xD0,0x4E,0x90,0x00,0x69,0xC8,0xDC,0x47,
2129 0xA0,0x85,0x34,0xFE,0x76,0xD2,0xB9,0x00,0xB7,0xD7,
2130 0xEF,0x31,0xF5,0x70,0x9F,0x20,0x0C,0x4C,0xA2,0x05,
2133 0x56,0x67,0x33,0x4C,0x45,0xAF,0xF3,0xB5,0xA0,0x3B,
2134 0xAD,0x9D,0xD7,0x5E,0x2C,0x71,0xA9,0x93,0x62,0x56,
2135 0x7D,0x54,0x53,0xF7,0xFA,0x6E,0x22,0x7E,0xC8,0x33,
2138 0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
2139 0x55,0x55,0x55,0x55,0x55,0x3C,0x6F,0x28,0x85,0x25,
2140 0x9C,0x31,0xE3,0xFC,0xDF,0x15,0x46,0x24,0x52,0x2D }
2143 static const struct { EC_CURVE_DATA h; unsigned char data[20+30*6]; }
2144 _EC_X9_62_CHAR2_239V3 = {
2145 { NID_X9_62_characteristic_two_field,20,30,0xA },
2148 0x9E,0x07,0x6F,0x4D,0x69,0x6E,0x67,0x68,0x75,0x61,
2149 0x51,0x75,0xE1,0x1E,0x9F,0xDD,0x77,0xF9,0x20,0x41,
2152 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2153 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2154 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,
2157 0x01,0x23,0x87,0x74,0x66,0x6A,0x67,0x76,0x6D,0x66,
2158 0x76,0xF7,0x78,0xE6,0x76,0xB6,0x69,0x99,0x17,0x66,
2159 0x66,0xE6,0x87,0x66,0x6D,0x87,0x66,0xC6,0x6A,0x9F,
2162 0x6A,0x94,0x19,0x77,0xBA,0x9F,0x6A,0x43,0x51,0x99,
2163 0xAC,0xFC,0x51,0x06,0x7E,0xD5,0x87,0xF5,0x19,0xC5,
2164 0xEC,0xB5,0x41,0xB8,0xE4,0x41,0x11,0xDE,0x1D,0x40,
2167 0x70,0xF6,0xE9,0xD0,0x4D,0x28,0x9C,0x4E,0x89,0x91,
2168 0x3C,0xE3,0x53,0x0B,0xFD,0xE9,0x03,0x97,0x7D,0x42,
2169 0xB1,0x46,0xD5,0x39,0xBF,0x1B,0xDE,0x4E,0x9C,0x92,
2172 0x2E,0x5A,0x0E,0xAF,0x6E,0x5E,0x13,0x05,0xB9,0x00,
2173 0x4D,0xCE,0x5C,0x0E,0xD7,0xFE,0x59,0xA3,0x56,0x08,
2174 0xF3,0x38,0x37,0xC8,0x16,0xD8,0x0B,0x79,0xF4,0x61,
2177 0x0C,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,
2178 0xCC,0xCC,0xCC,0xCC,0xCC,0xAC,0x49,0x12,0xD2,0xD9,
2179 0xDF,0x90,0x3E,0xF9,0x88,0x8B,0x8A,0x0E,0x4C,0xFF }
2182 static const struct { EC_CURVE_DATA h; unsigned char data[0+35*6]; }
2183 _EC_X9_62_CHAR2_272W1 = {
2184 { NID_X9_62_characteristic_two_field,0,35,0xFF06 },
2188 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2189 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2190 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
2191 0x00,0x00,0x00,0x00,0x0B,
2194 0x00,0x91,0xA0,0x91,0xF0,0x3B,0x5F,0xBA,0x4A,0xB2,
2195 0xCC,0xF4,0x9C,0x4E,0xDD,0x22,0x0F,0xB0,0x28,0x71,
2196 0x2D,0x42,0xBE,0x75,0x2B,0x2C,0x40,0x09,0x4D,0xBA,
2197 0xCD,0xB5,0x86,0xFB,0x20,
2200 0x00,0x71,0x67,0xEF,0xC9,0x2B,0xB2,0xE3,0xCE,0x7C,
2201 0x8A,0xAA,0xFF,0x34,0xE1,0x2A,0x9C,0x55,0x70,0x03,
2202 0xD7,0xC7,0x3A,0x6F,0xAF,0x00,0x3F,0x99,0xF6,0xCC,
2203 0x84,0x82,0xE5,0x40,0xF7,
2206 0x00,0x61,0x08,0xBA,0xBB,0x2C,0xEE,0xBC,0xF7,0x87,
2207 0x05,0x8A,0x05,0x6C,0xBE,0x0C,0xFE,0x62,0x2D,0x77,
2208 0x23,0xA2,0x89,0xE0,0x8A,0x07,0xAE,0x13,0xEF,0x0D,
2209 0x10,0xD1,0x71,0xDD,0x8D,
2212 0x00,0x10,0xC7,0x69,0x57,0x16,0x85,0x1E,0xEF,0x6B,
2213 0xA7,0xF6,0x87,0x2E,0x61,0x42,0xFB,0xD2,0x41,0xB8,
2214 0x30,0xFF,0x5E,0xFC,0xAC,0xEC,0xCA,0xB0,0x5E,0x02,
2215 0x00,0x5D,0xDE,0x9D,0x23,
2218 0x00,0x00,0x01,0x00,0xFA,0xF5,0x13,0x54,0xE0,0xE3,
2219 0x9E,0x48,0x92,0xDF,0x6E,0x31,0x9C,0x72,0xC8,0x16,
2220 0x16,0x03,0xFA,0x45,0xAA,0x7B,0x99,0x8A,0x16,0x7B,
2221 0x8F,0x1E,0x62,0x95,0x21 }
2224 static const struct { EC_CURVE_DATA h; unsigned char data[0+39*6]; }
2225 _EC_X9_62_CHAR2_304W1 = {
2226 { NID_X9_62_characteristic_two_field,0,39,0xFE2E },
2230 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2231 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2232 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2233 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x07,
2235 0x00,0xFD,0x0D,0x69,0x31,0x49,0xA1,0x18,0xF6,0x51,
2236 0xE6,0xDC,0xE6,0x80,0x20,0x85,0x37,0x7E,0x5F,0x88,
2237 0x2D,0x1B,0x51,0x0B,0x44,0x16,0x00,0x74,0xC1,0x28,
2238 0x80,0x78,0x36,0x5A,0x03,0x96,0xC8,0xE6,0x81,
2240 0x00,0xBD,0xDB,0x97,0xE5,0x55,0xA5,0x0A,0x90,0x8E,
2241 0x43,0xB0,0x1C,0x79,0x8E,0xA5,0xDA,0xA6,0x78,0x8F,
2242 0x1E,0xA2,0x79,0x4E,0xFC,0xF5,0x71,0x66,0xB8,0xC1,
2243 0x40,0x39,0x60,0x1E,0x55,0x82,0x73,0x40,0xBE,
2245 0x00,0x19,0x7B,0x07,0x84,0x5E,0x9B,0xE2,0xD9,0x6A,
2246 0xDB,0x0F,0x5F,0x3C,0x7F,0x2C,0xFF,0xBD,0x7A,0x3E,
2247 0xB8,0xB6,0xFE,0xC3,0x5C,0x7F,0xD6,0x7F,0x26,0xDD,
2248 0xF6,0x28,0x5A,0x64,0x4F,0x74,0x0A,0x26,0x14,
2250 0x00,0xE1,0x9F,0xBE,0xB7,0x6E,0x0D,0xA1,0x71,0x51,
2251 0x7E,0xCF,0x40,0x1B,0x50,0x28,0x9B,0xF0,0x14,0x10,
2252 0x32,0x88,0x52,0x7A,0x9B,0x41,0x6A,0x10,0x5E,0x80,
2253 0x26,0x0B,0x54,0x9F,0xDC,0x1B,0x92,0xC0,0x3B,
2255 0x00,0x00,0x01,0x01,0xD5,0x56,0x57,0x2A,0xAB,0xAC,
2256 0x80,0x01,0x01,0xD5,0x56,0x57,0x2A,0xAB,0xAC,0x80,
2257 0x01,0x02,0x2D,0x5C,0x91,0xDD,0x17,0x3F,0x8F,0xB5,
2258 0x61,0xDA,0x68,0x99,0x16,0x44,0x43,0x05,0x1D }
2261 static const struct { EC_CURVE_DATA h; unsigned char data[20+45*6]; }
2262 _EC_X9_62_CHAR2_359V1 = {
2263 { NID_X9_62_characteristic_two_field,20,45,0x4C },
2266 0x2B,0x35,0x49,0x20,0xB7,0x24,0xD6,0x96,0xE6,0x76,
2267 0x87,0x56,0x15,0x17,0x58,0x5B,0xA1,0x33,0x2D,0xC6,
2270 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2271 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2272 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2273 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
2274 0x00,0x00,0x00,0x00,0x01,
2277 0x56,0x67,0x67,0x6A,0x65,0x4B,0x20,0x75,0x4F,0x35,
2278 0x6E,0xA9,0x20,0x17,0xD9,0x46,0x56,0x7C,0x46,0x67,
2279 0x55,0x56,0xF1,0x95,0x56,0xA0,0x46,0x16,0xB5,0x67,
2280 0xD2,0x23,0xA5,0xE0,0x56,0x56,0xFB,0x54,0x90,0x16,
2281 0xA9,0x66,0x56,0xA5,0x57,
2284 0x24,0x72,0xE2,0xD0,0x19,0x7C,0x49,0x36,0x3F,0x1F,
2285 0xE7,0xF5,0xB6,0xDB,0x07,0x5D,0x52,0xB6,0x94,0x7D,
2286 0x13,0x5D,0x8C,0xA4,0x45,0x80,0x5D,0x39,0xBC,0x34,
2287 0x56,0x26,0x08,0x96,0x87,0x74,0x2B,0x63,0x29,0xE7,
2288 0x06,0x80,0x23,0x19,0x88,
2291 0x3C,0x25,0x8E,0xF3,0x04,0x77,0x67,0xE7,0xED,0xE0,
2292 0xF1,0xFD,0xAA,0x79,0xDA,0xEE,0x38,0x41,0x36,0x6A,
2293 0x13,0x2E,0x16,0x3A,0xCE,0xD4,0xED,0x24,0x01,0xDF,
2294 0x9C,0x6B,0xDC,0xDE,0x98,0xE8,0xE7,0x07,0xC0,0x7A,
2295 0x22,0x39,0xB1,0xB0,0x97,
2298 0x53,0xD7,0xE0,0x85,0x29,0x54,0x70,0x48,0x12,0x1E,
2299 0x9C,0x95,0xF3,0x79,0x1D,0xD8,0x04,0x96,0x39,0x48,
2300 0xF3,0x4F,0xAE,0x7B,0xF4,0x4E,0xA8,0x23,0x65,0xDC,
2301 0x78,0x68,0xFE,0x57,0xE4,0xAE,0x2D,0xE2,0x11,0x30,
2302 0x5A,0x40,0x71,0x04,0xBD,
2305 0x01,0xAF,0x28,0x6B,0xCA,0x1A,0xF2,0x86,0xBC,0xA1,
2306 0xAF,0x28,0x6B,0xCA,0x1A,0xF2,0x86,0xBC,0xA1,0xAF,
2307 0x28,0x6B,0xC9,0xFB,0x8F,0x6B,0x85,0xC5,0x56,0x89,
2308 0x2C,0x20,0xA7,0xEB,0x96,0x4F,0xE7,0x71,0x9E,0x74,
2309 0xF4,0x90,0x75,0x8D,0x3B }
2312 static const struct { EC_CURVE_DATA h; unsigned char data[0+47*6]; }
2313 _EC_X9_62_CHAR2_368W1 = {
2314 { NID_X9_62_characteristic_two_field,0,47,0xFF70 },
2318 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2319 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2320 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2321 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
2322 0x00,0x00,0x00,0x00,0x00,0x00,0x07,
2325 0x00,0xE0,0xD2,0xEE,0x25,0x09,0x52,0x06,0xF5,0xE2,
2326 0xA4,0xF9,0xED,0x22,0x9F,0x1F,0x25,0x6E,0x79,0xA0,
2327 0xE2,0xB4,0x55,0x97,0x0D,0x8D,0x0D,0x86,0x5B,0xD9,
2328 0x47,0x78,0xC5,0x76,0xD6,0x2F,0x0A,0xB7,0x51,0x9C,
2329 0xCD,0x2A,0x1A,0x90,0x6A,0xE3,0x0D,
2332 0x00,0xFC,0x12,0x17,0xD4,0x32,0x0A,0x90,0x45,0x2C,
2333 0x76,0x0A,0x58,0xED,0xCD,0x30,0xC8,0xDD,0x06,0x9B,
2334 0x3C,0x34,0x45,0x38,0x37,0xA3,0x4E,0xD5,0x0C,0xB5,
2335 0x49,0x17,0xE1,0xC2,0x11,0x2D,0x84,0xD1,0x64,0xF4,
2336 0x44,0xF8,0xF7,0x47,0x86,0x04,0x6A,
2339 0x00,0x10,0x85,0xE2,0x75,0x53,0x81,0xDC,0xCC,0xE3,
2340 0xC1,0x55,0x7A,0xFA,0x10,0xC2,0xF0,0xC0,0xC2,0x82,
2341 0x56,0x46,0xC5,0xB3,0x4A,0x39,0x4C,0xBC,0xFA,0x8B,
2342 0xC1,0x6B,0x22,0xE7,0xE7,0x89,0xE9,0x27,0xBE,0x21,
2343 0x6F,0x02,0xE1,0xFB,0x13,0x6A,0x5F,
2346 0x00,0x7B,0x3E,0xB1,0xBD,0xDC,0xBA,0x62,0xD5,0xD8,
2347 0xB2,0x05,0x9B,0x52,0x57,0x97,0xFC,0x73,0x82,0x2C,
2348 0x59,0x05,0x9C,0x62,0x3A,0x45,0xFF,0x38,0x43,0xCE,
2349 0xE8,0xF8,0x7C,0xD1,0x85,0x5A,0xDA,0xA8,0x1E,0x2A,
2350 0x07,0x50,0xB8,0x0F,0xDA,0x23,0x10,
2353 0x00,0x00,0x01,0x00,0x90,0x51,0x2D,0xA9,0xAF,0x72,
2354 0xB0,0x83,0x49,0xD9,0x8A,0x5D,0xD4,0xC7,0xB0,0x53,
2355 0x2E,0xCA,0x51,0xCE,0x03,0xE2,0xD1,0x0F,0x3B,0x7A,
2356 0xC5,0x79,0xBD,0x87,0xE9,0x09,0xAE,0x40,0xA6,0xF1,
2357 0x31,0xE9,0xCF,0xCE,0x5B,0xD9,0x67 }
2360 static const struct { EC_CURVE_DATA h; unsigned char data[0+54*6]; }
2361 _EC_X9_62_CHAR2_431R1 = {
2362 { NID_X9_62_characteristic_two_field,0,54,0x2760 },
2366 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2367 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2368 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2369 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
2370 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2371 0x00,0x00,0x00,0x01,
2374 0x1A,0x82,0x7E,0xF0,0x0D,0xD6,0xFC,0x0E,0x23,0x4C,
2375 0xAF,0x04,0x6C,0x6A,0x5D,0x8A,0x85,0x39,0x5B,0x23,
2376 0x6C,0xC4,0xAD,0x2C,0xF3,0x2A,0x0C,0xAD,0xBD,0xC9,
2377 0xDD,0xF6,0x20,0xB0,0xEB,0x99,0x06,0xD0,0x95,0x7F,
2378 0x6C,0x6F,0xEA,0xCD,0x61,0x54,0x68,0xDF,0x10,0x4D,
2379 0xE2,0x96,0xCD,0x8F,
2382 0x10,0xD9,0xB4,0xA3,0xD9,0x04,0x7D,0x8B,0x15,0x43,
2383 0x59,0xAB,0xFB,0x1B,0x7F,0x54,0x85,0xB0,0x4C,0xEB,
2384 0x86,0x82,0x37,0xDD,0xC9,0xDE,0xDA,0x98,0x2A,0x67,
2385 0x9A,0x5A,0x91,0x9B,0x62,0x6D,0x4E,0x50,0xA8,0xDD,
2386 0x73,0x1B,0x10,0x7A,0x99,0x62,0x38,0x1F,0xB5,0xD8,
2387 0x07,0xBF,0x26,0x18,
2390 0x12,0x0F,0xC0,0x5D,0x3C,0x67,0xA9,0x9D,0xE1,0x61,
2391 0xD2,0xF4,0x09,0x26,0x22,0xFE,0xCA,0x70,0x1B,0xE4,
2392 0xF5,0x0F,0x47,0x58,0x71,0x4E,0x8A,0x87,0xBB,0xF2,
2393 0xA6,0x58,0xEF,0x8C,0x21,0xE7,0xC5,0xEF,0xE9,0x65,
2394 0x36,0x1F,0x6C,0x29,0x99,0xC0,0xC2,0x47,0xB0,0xDB,
2395 0xD7,0x0C,0xE6,0xB7,
2398 0x20,0xD0,0xAF,0x89,0x03,0xA9,0x6F,0x8D,0x5F,0xA2,
2399 0xC2,0x55,0x74,0x5D,0x3C,0x45,0x1B,0x30,0x2C,0x93,
2400 0x46,0xD9,0xB7,0xE4,0x85,0xE7,0xBC,0xE4,0x1F,0x6B,
2401 0x59,0x1F,0x3E,0x8F,0x6A,0xDD,0xCB,0xB0,0xBC,0x4C,
2402 0x2F,0x94,0x7A,0x7D,0xE1,0xA8,0x9B,0x62,0x5D,0x6A,
2403 0x59,0x8B,0x37,0x60,
2406 0x00,0x03,0x40,0x34,0x03,0x40,0x34,0x03,0x40,0x34,
2407 0x03,0x40,0x34,0x03,0x40,0x34,0x03,0x40,0x34,0x03,
2408 0x40,0x34,0x03,0x40,0x34,0x03,0x40,0x34,0x03,0x23,
2409 0xC3,0x13,0xFA,0xB5,0x05,0x89,0x70,0x3B,0x5E,0xC6,
2410 0x8D,0x35,0x87,0xFE,0xC6,0x0D,0x16,0x1C,0xC1,0x49,
2411 0xC1,0xAD,0x4A,0x91 }
2414 static const struct { EC_CURVE_DATA h; unsigned char data[0+15*6]; }
2416 { NID_X9_62_characteristic_two_field,0,15,2 },
2420 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2421 0x00,0x00,0x00,0x02,0x01,
2424 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2425 0x00,0x00,0x00,0x00,0x01,
2428 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2429 0x00,0x00,0x00,0x00,0x01,
2432 0x01,0x66,0x79,0x79,0xA4,0x0B,0xA4,0x97,0xE5,0xD5,
2433 0xC2,0x70,0x78,0x06,0x17,
2436 0x00,0xF4,0x4B,0x4A,0xF1,0xEC,0xC2,0x63,0x0E,0x08,
2437 0x78,0x5C,0xEB,0xCC,0x15,
2440 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xBF,
2441 0x91,0xAF,0x6D,0xEA,0x73 }
2445 /* NOTE: The of curves over a extension field of non prime degree
2446 * is not recommended (Weil-descent).
2447 * As the group order is not a prime this curve is not suitable
2450 static const struct { EC_CURVE_DATA h; unsigned char data[0+20*6]; }
2451 _EC_IPSEC_155_ID3 = {
2452 { NID_X9_62_characteristic_two_field,0,20,3 },
2456 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2457 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
2460 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2461 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2464 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2465 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x33,0x8f,
2468 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2469 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7b,
2472 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2473 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xc8,
2476 0x02,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
2477 0xC7,0xF3,0xC7,0x88,0x1B,0xD0,0x86,0x8F,0xA8,0x6C }
2480 /* NOTE: The of curves over a extension field of non prime degree
2481 * is not recommended (Weil-descent).
2482 * As the group order is not a prime this curve is not suitable
2485 static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
2486 _EC_IPSEC_185_ID4 = {
2487 { NID_X9_62_characteristic_two_field,0,24,2 },
2491 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2492 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
2493 0x00,0x00,0x00,0x01,
2496 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2497 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2498 0x00,0x00,0x00,0x00,
2501 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2502 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2503 0x00,0x00,0x1e,0xe9,
2506 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2507 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2508 0x00,0x00,0x00,0x18,
2511 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2512 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
2513 0x00,0x00,0x00,0x0d,
2516 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
2517 0xFF,0xFF,0xED,0xF9,0x7C,0x44,0xDB,0x9F,0x24,0x20,
2518 0xBA,0xFC,0xA7,0x5E }
2523 /* These curves were added by Annie Yousar <a.yousar@informatik.hu-berlin.de>
2524 * For the definition of RFC 5639 curves see
2525 * http://www.ietf.org/rfc/rfc5639.txt
2526 * These curves are generated verifiable at random, nevertheless the seed is
2527 * omitted as parameter because the generation mechanism is different from
2528 * those defined in ANSI X9.62.
2531 static const struct { EC_CURVE_DATA h; unsigned char data[0+20*6]; }
2532 _EC_brainpoolP160r1 = {
2533 { NID_X9_62_prime_field, 0,20,1 },
2537 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2538 0xC7,0xAD,0x95,0xB3,0xD8,0x13,0x95,0x15,0x62,0x0F,
2541 0x34,0x0E,0x7B,0xE2,0xA2,0x80,0xEB,0x74,0xE2,0xBE,
2542 0x61,0xBA,0xDA,0x74,0x5D,0x97,0xE8,0xF7,0xC3,0x00,
2545 0x1E,0x58,0x9A,0x85,0x95,0x42,0x34,0x12,0x13,0x4F,
2546 0xAA,0x2D,0xBD,0xEC,0x95,0xC8,0xD8,0x67,0x5E,0x58,
2549 0xBE,0xD5,0xAF,0x16,0xEA,0x3F,0x6A,0x4F,0x62,0x93,
2550 0x8C,0x46,0x31,0xEB,0x5A,0xF7,0xBD,0xBC,0xDB,0xC3,
2553 0x16,0x67,0xCB,0x47,0x7A,0x1A,0x8E,0xC3,0x38,0xF9,
2554 0x47,0x41,0x66,0x9C,0x97,0x63,0x16,0xDA,0x63,0x21,
2557 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2558 0x59,0x91,0xD4,0x50,0x29,0x40,0x9E,0x60,0xFC,0x09 }
2561 static const struct { EC_CURVE_DATA h; unsigned char data[0+20*6]; }
2562 _EC_brainpoolP160t1 = {
2563 { NID_X9_62_prime_field, 0,20,1 },
2567 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2568 0xC7,0xAD,0x95,0xB3,0xD8,0x13,0x95,0x15,0x62,0x0F,
2571 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2572 0xC7,0xAD,0x95,0xB3,0xD8,0x13,0x95,0x15,0x62,0x0C,
2575 0x7A,0x55,0x6B,0x6D,0xAE,0x53,0x5B,0x7B,0x51,0xED,
2576 0x2C,0x4D,0x7D,0xAA,0x7A,0x0B,0x5C,0x55,0xF3,0x80,
2579 0xB1,0x99,0xB1,0x3B,0x9B,0x34,0xEF,0xC1,0x39,0x7E,
2580 0x64,0xBA,0xEB,0x05,0xAC,0xC2,0x65,0xFF,0x23,0x78,
2583 0xAD,0xD6,0x71,0x8B,0x7C,0x7C,0x19,0x61,0xF0,0x99,
2584 0x1B,0x84,0x24,0x43,0x77,0x21,0x52,0xC9,0xE0,0xAD,
2587 0xE9,0x5E,0x4A,0x5F,0x73,0x70,0x59,0xDC,0x60,0xDF,
2588 0x59,0x91,0xD4,0x50,0x29,0x40,0x9E,0x60,0xFC,0x09 }
2591 static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
2592 _EC_brainpoolP192r1 = {
2593 { NID_X9_62_prime_field, 0,24,1 },
2597 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2598 0x46,0x30,0x93,0xD1,0x8D,0xB7,0x8F,0xCE,0x47,0x6D,
2599 0xE1,0xA8,0x62,0x97,
2602 0x6A,0x91,0x17,0x40,0x76,0xB1,0xE0,0xE1,0x9C,0x39,
2603 0xC0,0x31,0xFE,0x86,0x85,0xC1,0xCA,0xE0,0x40,0xE5,
2604 0xC6,0x9A,0x28,0xEF,
2607 0x46,0x9A,0x28,0xEF,0x7C,0x28,0xCC,0xA3,0xDC,0x72,
2608 0x1D,0x04,0x4F,0x44,0x96,0xBC,0xCA,0x7E,0xF4,0x14,
2609 0x6F,0xBF,0x25,0xC9,
2612 0xC0,0xA0,0x64,0x7E,0xAA,0xB6,0xA4,0x87,0x53,0xB0,
2613 0x33,0xC5,0x6C,0xB0,0xF0,0x90,0x0A,0x2F,0x5C,0x48,
2614 0x53,0x37,0x5F,0xD6,
2617 0x14,0xB6,0x90,0x86,0x6A,0xBD,0x5B,0xB8,0x8B,0x5F,
2618 0x48,0x28,0xC1,0x49,0x00,0x02,0xE6,0x77,0x3F,0xA2,
2619 0xFA,0x29,0x9B,0x8F,
2622 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2623 0x46,0x2F,0x9E,0x9E,0x91,0x6B,0x5B,0xE8,0xF1,0x02,
2624 0x9A,0xC4,0xAC,0xC1 }
2627 static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
2628 _EC_brainpoolP192t1 = {
2629 { NID_X9_62_prime_field, 0,24,1 },
2633 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2634 0x46,0x30,0x93,0xD1,0x8D,0xB7,0x8F,0xCE,0x47,0x6D,
2635 0xE1,0xA8,0x62,0x97,
2638 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2639 0x46,0x30,0x93,0xD1,0x8D,0xB7,0x8F,0xCE,0x47,0x6D,
2640 0xE1,0xA8,0x62,0x94,
2643 0x13,0xD5,0x6F,0xFA,0xEC,0x78,0x68,0x1E,0x68,0xF9,
2644 0xDE,0xB4,0x3B,0x35,0xBE,0xC2,0xFB,0x68,0x54,0x2E,
2645 0x27,0x89,0x7B,0x79,
2648 0x3A,0xE9,0xE5,0x8C,0x82,0xF6,0x3C,0x30,0x28,0x2E,
2649 0x1F,0xE7,0xBB,0xF4,0x3F,0xA7,0x2C,0x44,0x6A,0xF6,
2650 0xF4,0x61,0x81,0x29,
2653 0x09,0x7E,0x2C,0x56,0x67,0xC2,0x22,0x3A,0x90,0x2A,
2654 0xB5,0xCA,0x44,0x9D,0x00,0x84,0xB7,0xE5,0xB3,0xDE,
2655 0x7C,0xCC,0x01,0xC9,
2658 0xC3,0x02,0xF4,0x1D,0x93,0x2A,0x36,0xCD,0xA7,0xA3,
2659 0x46,0x2F,0x9E,0x9E,0x91,0x6B,0x5B,0xE8,0xF1,0x02,
2660 0x9A,0xC4,0xAC,0xC1 }
2663 static const struct { EC_CURVE_DATA h; unsigned char data[0+28*6]; }
2664 _EC_brainpoolP224r1 = {
2665 { NID_X9_62_prime_field, 0,28,1 },
2668 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2669 0x30,0x25,0x75,0xD1,0xD7,0x87,0xB0,0x9F,0x07,0x57,
2670 0x97,0xDA,0x89,0xF5,0x7E,0xC8,0xC0,0xFF,
2673 0x68,0xA5,0xE6,0x2C,0xA9,0xCE,0x6C,0x1C,0x29,0x98,
2674 0x03,0xA6,0xC1,0x53,0x0B,0x51,0x4E,0x18,0x2A,0xD8,
2675 0xB0,0x04,0x2A,0x59,0xCA,0xD2,0x9F,0x43,
2678 0x25,0x80,0xF6,0x3C,0xCF,0xE4,0x41,0x38,0x87,0x07,
2679 0x13,0xB1,0xA9,0x23,0x69,0xE3,0x3E,0x21,0x35,0xD2,
2680 0x66,0xDB,0xB3,0x72,0x38,0x6C,0x40,0x0B,
2683 0x0D,0x90,0x29,0xAD,0x2C,0x7E,0x5C,0xF4,0x34,0x08,
2684 0x23,0xB2,0xA8,0x7D,0xC6,0x8C,0x9E,0x4C,0xE3,0x17,
2685 0x4C,0x1E,0x6E,0xFD,0xEE,0x12,0xC0,0x7D,
2688 0x58,0xAA,0x56,0xF7,0x72,0xC0,0x72,0x6F,0x24,0xC6,
2689 0xB8,0x9E,0x4E,0xCD,0xAC,0x24,0x35,0x4B,0x9E,0x99,
2690 0xCA,0xA3,0xF6,0xD3,0x76,0x14,0x02,0xCD,
2693 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2694 0x30,0x25,0x75,0xD0,0xFB,0x98,0xD1,0x16,0xBC,0x4B,
2695 0x6D,0xDE,0xBC,0xA3,0xA5,0xA7,0x93,0x9F }
2698 static const struct { EC_CURVE_DATA h; unsigned char data[0+28*6]; }
2699 _EC_brainpoolP224t1 = {
2700 { NID_X9_62_prime_field, 0,28,1 },
2703 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2704 0x30,0x25,0x75,0xD1,0xD7,0x87,0xB0,0x9F,0x07,0x57,
2705 0x97,0xDA,0x89,0xF5,0x7E,0xC8,0xC0,0xFF,
2708 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2709 0x30,0x25,0x75,0xD1,0xD7,0x87,0xB0,0x9F,0x07,0x57,
2710 0x97,0xDA,0x89,0xF5,0x7E,0xC8,0xC0,0xFC,
2713 0x4B,0x33,0x7D,0x93,0x41,0x04,0xCD,0x7B,0xEF,0x27,
2714 0x1B,0xF6,0x0C,0xED,0x1E,0xD2,0x0D,0xA1,0x4C,0x08,
2715 0xB3,0xBB,0x64,0xF1,0x8A,0x60,0x88,0x8D,
2718 0x6A,0xB1,0xE3,0x44,0xCE,0x25,0xFF,0x38,0x96,0x42,
2719 0x4E,0x7F,0xFE,0x14,0x76,0x2E,0xCB,0x49,0xF8,0x92,
2720 0x8A,0xC0,0xC7,0x60,0x29,0xB4,0xD5,0x80,
2723 0x03,0x74,0xE9,0xF5,0x14,0x3E,0x56,0x8C,0xD2,0x3F,
2724 0x3F,0x4D,0x7C,0x0D,0x4B,0x1E,0x41,0xC8,0xCC,0x0D,
2725 0x1C,0x6A,0xBD,0x5F,0x1A,0x46,0xDB,0x4C,
2728 0xD7,0xC1,0x34,0xAA,0x26,0x43,0x66,0x86,0x2A,0x18,
2729 0x30,0x25,0x75,0xD0,0xFB,0x98,0xD1,0x16,0xBC,0x4B,
2730 0x6D,0xDE,0xBC,0xA3,0xA5,0xA7,0x93,0x9F }
2733 static const struct { EC_CURVE_DATA h; unsigned char data[0+32*6]; }
2734 _EC_brainpoolP256r1 = {
2735 { NID_X9_62_prime_field, 0,32,1 },
2738 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2739 0x0A,0x90,0x9D,0x83,0x8D,0x72,0x6E,0x3B,0xF6,0x23,
2740 0xD5,0x26,0x20,0x28,0x20,0x13,0x48,0x1D,0x1F,0x6E,
2744 0x7D,0x5A,0x09,0x75,0xFC,0x2C,0x30,0x57,0xEE,0xF6,
2745 0x75,0x30,0x41,0x7A,0xFF,0xE7,0xFB,0x80,0x55,0xC1,
2746 0x26,0xDC,0x5C,0x6C,0xE9,0x4A,0x4B,0x44,0xF3,0x30,
2750 0x26,0xDC,0x5C,0x6C,0xE9,0x4A,0x4B,0x44,0xF3,0x30,
2751 0xB5,0xD9,0xBB,0xD7,0x7C,0xBF,0x95,0x84,0x16,0x29,
2752 0x5C,0xF7,0xE1,0xCE,0x6B,0xCC,0xDC,0x18,0xFF,0x8C,
2756 0x8B,0xD2,0xAE,0xB9,0xCB,0x7E,0x57,0xCB,0x2C,0x4B,
2757 0x48,0x2F,0xFC,0x81,0xB7,0xAF,0xB9,0xDE,0x27,0xE1,
2758 0xE3,0xBD,0x23,0xC2,0x3A,0x44,0x53,0xBD,0x9A,0xCE,
2762 0x54,0x7E,0xF8,0x35,0xC3,0xDA,0xC4,0xFD,0x97,0xF8,
2763 0x46,0x1A,0x14,0x61,0x1D,0xC9,0xC2,0x77,0x45,0x13,
2764 0x2D,0xED,0x8E,0x54,0x5C,0x1D,0x54,0xC7,0x2F,0x04,
2768 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2769 0x0A,0x90,0x9D,0x83,0x8D,0x71,0x8C,0x39,0x7A,0xA3,
2770 0xB5,0x61,0xA6,0xF7,0x90,0x1E,0x0E,0x82,0x97,0x48,
2774 static const struct { EC_CURVE_DATA h; unsigned char data[0+32*6]; }
2775 _EC_brainpoolP256t1 = {
2776 { NID_X9_62_prime_field, 0,32,1 },
2779 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2780 0x0A,0x90,0x9D,0x83,0x8D,0x72,0x6E,0x3B,0xF6,0x23,
2781 0xD5,0x26,0x20,0x28,0x20,0x13,0x48,0x1D,0x1F,0x6E,
2785 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2786 0x0A,0x90,0x9D,0x83,0x8D,0x72,0x6E,0x3B,0xF6,0x23,
2787 0xD5,0x26,0x20,0x28,0x20,0x13,0x48,0x1D,0x1F,0x6E,
2791 0x66,0x2C,0x61,0xC4,0x30,0xD8,0x4E,0xA4,0xFE,0x66,
2792 0xA7,0x73,0x3D,0x0B,0x76,0xB7,0xBF,0x93,0xEB,0xC4,
2793 0xAF,0x2F,0x49,0x25,0x6A,0xE5,0x81,0x01,0xFE,0xE9,
2797 0xA3,0xE8,0xEB,0x3C,0xC1,0xCF,0xE7,0xB7,0x73,0x22,
2798 0x13,0xB2,0x3A,0x65,0x61,0x49,0xAF,0xA1,0x42,0xC4,
2799 0x7A,0xAF,0xBC,0x2B,0x79,0xA1,0x91,0x56,0x2E,0x13,
2803 0x2D,0x99,0x6C,0x82,0x34,0x39,0xC5,0x6D,0x7F,0x7B,
2804 0x22,0xE1,0x46,0x44,0x41,0x7E,0x69,0xBC,0xB6,0xDE,
2805 0x39,0xD0,0x27,0x00,0x1D,0xAB,0xE8,0xF3,0x5B,0x25,
2809 0xA9,0xFB,0x57,0xDB,0xA1,0xEE,0xA9,0xBC,0x3E,0x66,
2810 0x0A,0x90,0x9D,0x83,0x8D,0x71,0x8C,0x39,0x7A,0xA3,
2811 0xB5,0x61,0xA6,0xF7,0x90,0x1E,0x0E,0x82,0x97,0x48,
2815 static const struct { EC_CURVE_DATA h; unsigned char data[0+40*6]; }
2816 _EC_brainpoolP320r1 = {
2817 { NID_X9_62_prime_field, 0,40,1 },
2820 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2821 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA6,
2822 0xF6,0xF4,0x0D,0xEF,0x4F,0x92,0xB9,0xEC,0x78,0x93,
2823 0xEC,0x28,0xFC,0xD4,0x12,0xB1,0xF1,0xB3,0x2E,0x27,
2826 0x3E,0xE3,0x0B,0x56,0x8F,0xBA,0xB0,0xF8,0x83,0xCC,
2827 0xEB,0xD4,0x6D,0x3F,0x3B,0xB8,0xA2,0xA7,0x35,0x13,
2828 0xF5,0xEB,0x79,0xDA,0x66,0x19,0x0E,0xB0,0x85,0xFF,
2829 0xA9,0xF4,0x92,0xF3,0x75,0xA9,0x7D,0x86,0x0E,0xB4,
2832 0x52,0x08,0x83,0x94,0x9D,0xFD,0xBC,0x42,0xD3,0xAD,
2833 0x19,0x86,0x40,0x68,0x8A,0x6F,0xE1,0x3F,0x41,0x34,
2834 0x95,0x54,0xB4,0x9A,0xCC,0x31,0xDC,0xCD,0x88,0x45,
2835 0x39,0x81,0x6F,0x5E,0xB4,0xAC,0x8F,0xB1,0xF1,0xA6,
2838 0x43,0xBD,0x7E,0x9A,0xFB,0x53,0xD8,0xB8,0x52,0x89,
2839 0xBC,0xC4,0x8E,0xE5,0xBF,0xE6,0xF2,0x01,0x37,0xD1,
2840 0x0A,0x08,0x7E,0xB6,0xE7,0x87,0x1E,0x2A,0x10,0xA5,
2841 0x99,0xC7,0x10,0xAF,0x8D,0x0D,0x39,0xE2,0x06,0x11,
2844 0x14,0xFD,0xD0,0x55,0x45,0xEC,0x1C,0xC8,0xAB,0x40,
2845 0x93,0x24,0x7F,0x77,0x27,0x5E,0x07,0x43,0xFF,0xED,
2846 0x11,0x71,0x82,0xEA,0xA9,0xC7,0x78,0x77,0xAA,0xAC,
2847 0x6A,0xC7,0xD3,0x52,0x45,0xD1,0x69,0x2E,0x8E,0xE1,
2850 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2851 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA5,
2852 0xB6,0x8F,0x12,0xA3,0x2D,0x48,0x2E,0xC7,0xEE,0x86,
2853 0x58,0xE9,0x86,0x91,0x55,0x5B,0x44,0xC5,0x93,0x11 }
2856 static const struct { EC_CURVE_DATA h; unsigned char data[0+40*6]; }
2857 _EC_brainpoolP320t1 = {
2858 { NID_X9_62_prime_field, 0,40,1 },
2861 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2862 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA6,
2863 0xF6,0xF4,0x0D,0xEF,0x4F,0x92,0xB9,0xEC,0x78,0x93,
2864 0xEC,0x28,0xFC,0xD4,0x12,0xB1,0xF1,0xB3,0x2E,0x27,
2867 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2868 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA6,
2869 0xF6,0xF4,0x0D,0xEF,0x4F,0x92,0xB9,0xEC,0x78,0x93,
2870 0xEC,0x28,0xFC,0xD4,0x12,0xB1,0xF1,0xB3,0x2E,0x24,
2873 0xA7,0xF5,0x61,0xE0,0x38,0xEB,0x1E,0xD5,0x60,0xB3,
2874 0xD1,0x47,0xDB,0x78,0x20,0x13,0x06,0x4C,0x19,0xF2,
2875 0x7E,0xD2,0x7C,0x67,0x80,0xAA,0xF7,0x7F,0xB8,0xA5,
2876 0x47,0xCE,0xB5,0xB4,0xFE,0xF4,0x22,0x34,0x03,0x53,
2879 0x92,0x5B,0xE9,0xFB,0x01,0xAF,0xC6,0xFB,0x4D,0x3E,
2880 0x7D,0x49,0x90,0x01,0x0F,0x81,0x34,0x08,0xAB,0x10,
2881 0x6C,0x4F,0x09,0xCB,0x7E,0xE0,0x78,0x68,0xCC,0x13,
2882 0x6F,0xFF,0x33,0x57,0xF6,0x24,0xA2,0x1B,0xED,0x52,
2885 0x63,0xBA,0x3A,0x7A,0x27,0x48,0x3E,0xBF,0x66,0x71,
2886 0xDB,0xEF,0x7A,0xBB,0x30,0xEB,0xEE,0x08,0x4E,0x58,
2887 0xA0,0xB0,0x77,0xAD,0x42,0xA5,0xA0,0x98,0x9D,0x1E,
2888 0xE7,0x1B,0x1B,0x9B,0xC0,0x45,0x5F,0xB0,0xD2,0xC3,
2891 0xD3,0x5E,0x47,0x20,0x36,0xBC,0x4F,0xB7,0xE1,0x3C,
2892 0x78,0x5E,0xD2,0x01,0xE0,0x65,0xF9,0x8F,0xCF,0xA5,
2893 0xB6,0x8F,0x12,0xA3,0x2D,0x48,0x2E,0xC7,0xEE,0x86,
2894 0x58,0xE9,0x86,0x91,0x55,0x5B,0x44,0xC5,0x93,0x11 }
2897 static const struct { EC_CURVE_DATA h; unsigned char data[0+48*6]; }
2898 _EC_brainpoolP384r1 = {
2899 { NID_X9_62_prime_field, 0,48,1 },
2902 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2903 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2904 0xED,0x54,0x56,0xB4,0x12,0xB1,0xDA,0x19,0x7F,0xB7,
2905 0x11,0x23,0xAC,0xD3,0xA7,0x29,0x90,0x1D,0x1A,0x71,
2906 0x87,0x47,0x00,0x13,0x31,0x07,0xEC,0x53,
2909 0x7B,0xC3,0x82,0xC6,0x3D,0x8C,0x15,0x0C,0x3C,0x72,
2910 0x08,0x0A,0xCE,0x05,0xAF,0xA0,0xC2,0xBE,0xA2,0x8E,
2911 0x4F,0xB2,0x27,0x87,0x13,0x91,0x65,0xEF,0xBA,0x91,
2912 0xF9,0x0F,0x8A,0xA5,0x81,0x4A,0x50,0x3A,0xD4,0xEB,
2913 0x04,0xA8,0xC7,0xDD,0x22,0xCE,0x28,0x26,
2916 0x04,0xA8,0xC7,0xDD,0x22,0xCE,0x28,0x26,0x8B,0x39,
2917 0xB5,0x54,0x16,0xF0,0x44,0x7C,0x2F,0xB7,0x7D,0xE1,
2918 0x07,0xDC,0xD2,0xA6,0x2E,0x88,0x0E,0xA5,0x3E,0xEB,
2919 0x62,0xD5,0x7C,0xB4,0x39,0x02,0x95,0xDB,0xC9,0x94,
2920 0x3A,0xB7,0x86,0x96,0xFA,0x50,0x4C,0x11,
2923 0x1D,0x1C,0x64,0xF0,0x68,0xCF,0x45,0xFF,0xA2,0xA6,
2924 0x3A,0x81,0xB7,0xC1,0x3F,0x6B,0x88,0x47,0xA3,0xE7,
2925 0x7E,0xF1,0x4F,0xE3,0xDB,0x7F,0xCA,0xFE,0x0C,0xBD,
2926 0x10,0xE8,0xE8,0x26,0xE0,0x34,0x36,0xD6,0x46,0xAA,
2927 0xEF,0x87,0xB2,0xE2,0x47,0xD4,0xAF,0x1E,
2930 0x8A,0xBE,0x1D,0x75,0x20,0xF9,0xC2,0xA4,0x5C,0xB1,
2931 0xEB,0x8E,0x95,0xCF,0xD5,0x52,0x62,0xB7,0x0B,0x29,
2932 0xFE,0xEC,0x58,0x64,0xE1,0x9C,0x05,0x4F,0xF9,0x91,
2933 0x29,0x28,0x0E,0x46,0x46,0x21,0x77,0x91,0x81,0x11,
2934 0x42,0x82,0x03,0x41,0x26,0x3C,0x53,0x15,
2937 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2938 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2939 0xED,0x54,0x56,0xB3,0x1F,0x16,0x6E,0x6C,0xAC,0x04,
2940 0x25,0xA7,0xCF,0x3A,0xB6,0xAF,0x6B,0x7F,0xC3,0x10,
2941 0x3B,0x88,0x32,0x02,0xE9,0x04,0x65,0x65 }
2944 static const struct { EC_CURVE_DATA h; unsigned char data[0+48*6]; }
2945 _EC_brainpoolP384t1 = {
2946 { NID_X9_62_prime_field, 0,48,1 },
2949 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2950 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2951 0xED,0x54,0x56,0xB4,0x12,0xB1,0xDA,0x19,0x7F,0xB7,
2952 0x11,0x23,0xAC,0xD3,0xA7,0x29,0x90,0x1D,0x1A,0x71,
2953 0x87,0x47,0x00,0x13,0x31,0x07,0xEC,0x53,
2956 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2957 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2958 0xED,0x54,0x56,0xB4,0x12,0xB1,0xDA,0x19,0x7F,0xB7,
2959 0x11,0x23,0xAC,0xD3,0xA7,0x29,0x90,0x1D,0x1A,0x71,
2960 0x87,0x47,0x00,0x13,0x31,0x07,0xEC,0x50,
2963 0x7F,0x51,0x9E,0xAD,0xA7,0xBD,0xA8,0x1B,0xD8,0x26,
2964 0xDB,0xA6,0x47,0x91,0x0F,0x8C,0x4B,0x93,0x46,0xED,
2965 0x8C,0xCD,0xC6,0x4E,0x4B,0x1A,0xBD,0x11,0x75,0x6D,
2966 0xCE,0x1D,0x20,0x74,0xAA,0x26,0x3B,0x88,0x80,0x5C,
2967 0xED,0x70,0x35,0x5A,0x33,0xB4,0x71,0xEE,
2970 0x18,0xDE,0x98,0xB0,0x2D,0xB9,0xA3,0x06,0xF2,0xAF,
2971 0xCD,0x72,0x35,0xF7,0x2A,0x81,0x9B,0x80,0xAB,0x12,
2972 0xEB,0xD6,0x53,0x17,0x24,0x76,0xFE,0xCD,0x46,0x2A,
2973 0xAB,0xFF,0xC4,0xFF,0x19,0x1B,0x94,0x6A,0x5F,0x54,
2974 0xD8,0xD0,0xAA,0x2F,0x41,0x88,0x08,0xCC,
2977 0x25,0xAB,0x05,0x69,0x62,0xD3,0x06,0x51,0xA1,0x14,
2978 0xAF,0xD2,0x75,0x5A,0xD3,0x36,0x74,0x7F,0x93,0x47,
2979 0x5B,0x7A,0x1F,0xCA,0x3B,0x88,0xF2,0xB6,0xA2,0x08,
2980 0xCC,0xFE,0x46,0x94,0x08,0x58,0x4D,0xC2,0xB2,0x91,
2981 0x26,0x75,0xBF,0x5B,0x9E,0x58,0x29,0x28,
2984 0x8C,0xB9,0x1E,0x82,0xA3,0x38,0x6D,0x28,0x0F,0x5D,
2985 0x6F,0x7E,0x50,0xE6,0x41,0xDF,0x15,0x2F,0x71,0x09,
2986 0xED,0x54,0x56,0xB3,0x1F,0x16,0x6E,0x6C,0xAC,0x04,
2987 0x25,0xA7,0xCF,0x3A,0xB6,0xAF,0x6B,0x7F,0xC3,0x10,
2988 0x3B,0x88,0x32,0x02,0xE9,0x04,0x65,0x65 }
2991 static const struct { EC_CURVE_DATA h; unsigned char data[0+64*6]; }
2992 _EC_brainpoolP512r1 = {
2993 { NID_X9_62_prime_field, 0,64,1 },
2996 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
2997 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
2998 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
2999 0x08,0x71,0x7D,0x4D,0x9B,0x00,0x9B,0xC6,0x68,0x42,
3000 0xAE,0xCD,0xA1,0x2A,0xE6,0xA3,0x80,0xE6,0x28,0x81,
3001 0xFF,0x2F,0x2D,0x82,0xC6,0x85,0x28,0xAA,0x60,0x56,
3002 0x58,0x3A,0x48,0xF3,
3005 0x78,0x30,0xA3,0x31,0x8B,0x60,0x3B,0x89,0xE2,0x32,
3006 0x71,0x45,0xAC,0x23,0x4C,0xC5,0x94,0xCB,0xDD,0x8D,
3007 0x3D,0xF9,0x16,0x10,0xA8,0x34,0x41,0xCA,0xEA,0x98,
3008 0x63,0xBC,0x2D,0xED,0x5D,0x5A,0xA8,0x25,0x3A,0xA1,
3009 0x0A,0x2E,0xF1,0xC9,0x8B,0x9A,0xC8,0xB5,0x7F,0x11,
3010 0x17,0xA7,0x2B,0xF2,0xC7,0xB9,0xE7,0xC1,0xAC,0x4D,
3011 0x77,0xFC,0x94,0xCA,
3014 0x3D,0xF9,0x16,0x10,0xA8,0x34,0x41,0xCA,0xEA,0x98,
3015 0x63,0xBC,0x2D,0xED,0x5D,0x5A,0xA8,0x25,0x3A,0xA1,
3016 0x0A,0x2E,0xF1,0xC9,0x8B,0x9A,0xC8,0xB5,0x7F,0x11,
3017 0x17,0xA7,0x2B,0xF2,0xC7,0xB9,0xE7,0xC1,0xAC,0x4D,
3018 0x77,0xFC,0x94,0xCA,0xDC,0x08,0x3E,0x67,0x98,0x40,
3019 0x50,0xB7,0x5E,0xBA,0xE5,0xDD,0x28,0x09,0xBD,0x63,
3020 0x80,0x16,0xF7,0x23,
3023 0x81,0xAE,0xE4,0xBD,0xD8,0x2E,0xD9,0x64,0x5A,0x21,
3024 0x32,0x2E,0x9C,0x4C,0x6A,0x93,0x85,0xED,0x9F,0x70,
3025 0xB5,0xD9,0x16,0xC1,0xB4,0x3B,0x62,0xEE,0xF4,0xD0,
3026 0x09,0x8E,0xFF,0x3B,0x1F,0x78,0xE2,0xD0,0xD4,0x8D,
3027 0x50,0xD1,0x68,0x7B,0x93,0xB9,0x7D,0x5F,0x7C,0x6D,
3028 0x50,0x47,0x40,0x6A,0x5E,0x68,0x8B,0x35,0x22,0x09,
3029 0xBC,0xB9,0xF8,0x22,
3032 0x7D,0xDE,0x38,0x5D,0x56,0x63,0x32,0xEC,0xC0,0xEA,
3033 0xBF,0xA9,0xCF,0x78,0x22,0xFD,0xF2,0x09,0xF7,0x00,
3034 0x24,0xA5,0x7B,0x1A,0xA0,0x00,0xC5,0x5B,0x88,0x1F,
3035 0x81,0x11,0xB2,0xDC,0xDE,0x49,0x4A,0x5F,0x48,0x5E,
3036 0x5B,0xCA,0x4B,0xD8,0x8A,0x27,0x63,0xAE,0xD1,0xCA,
3037 0x2B,0x2F,0xA8,0xF0,0x54,0x06,0x78,0xCD,0x1E,0x0F,
3038 0x3A,0xD8,0x08,0x92,
3041 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
3042 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
3043 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
3044 0x08,0x70,0x55,0x3E,0x5C,0x41,0x4C,0xA9,0x26,0x19,
3045 0x41,0x86,0x61,0x19,0x7F,0xAC,0x10,0x47,0x1D,0xB1,
3046 0xD3,0x81,0x08,0x5D,0xDA,0xDD,0xB5,0x87,0x96,0x82,
3047 0x9C,0xA9,0x00,0x69 }
3050 static const struct { EC_CURVE_DATA h; unsigned char data[0+64*6]; }
3051 _EC_brainpoolP512t1 = {
3052 { NID_X9_62_prime_field, 0,64,1 },
3055 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
3056 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
3057 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
3058 0x08,0x71,0x7D,0x4D,0x9B,0x00,0x9B,0xC6,0x68,0x42,
3059 0xAE,0xCD,0xA1,0x2A,0xE6,0xA3,0x80,0xE6,0x28,0x81,
3060 0xFF,0x2F,0x2D,0x82,0xC6,0x85,0x28,0xAA,0x60,0x56,
3061 0x58,0x3A,0x48,0xF3,
3064 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
3065 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
3066 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
3067 0x08,0x71,0x7D,0x4D,0x9B,0x00,0x9B,0xC6,0x68,0x42,
3068 0xAE,0xCD,0xA1,0x2A,0xE6,0xA3,0x80,0xE6,0x28,0x81,
3069 0xFF,0x2F,0x2D,0x82,0xC6,0x85,0x28,0xAA,0x60,0x56,
3070 0x58,0x3A,0x48,0xF0,
3073 0x7C,0xBB,0xBC,0xF9,0x44,0x1C,0xFA,0xB7,0x6E,0x18,
3074 0x90,0xE4,0x68,0x84,0xEA,0xE3,0x21,0xF7,0x0C,0x0B,
3075 0xCB,0x49,0x81,0x52,0x78,0x97,0x50,0x4B,0xEC,0x3E,
3076 0x36,0xA6,0x2B,0xCD,0xFA,0x23,0x04,0x97,0x65,0x40,
3077 0xF6,0x45,0x00,0x85,0xF2,0xDA,0xE1,0x45,0xC2,0x25,
3078 0x53,0xB4,0x65,0x76,0x36,0x89,0x18,0x0E,0xA2,0x57,
3079 0x18,0x67,0x42,0x3E,
3082 0x64,0x0E,0xCE,0x5C,0x12,0x78,0x87,0x17,0xB9,0xC1,
3083 0xBA,0x06,0xCB,0xC2,0xA6,0xFE,0xBA,0x85,0x84,0x24,
3084 0x58,0xC5,0x6D,0xDE,0x9D,0xB1,0x75,0x8D,0x39,0xC0,
3085 0x31,0x3D,0x82,0xBA,0x51,0x73,0x5C,0xDB,0x3E,0xA4,
3086 0x99,0xAA,0x77,0xA7,0xD6,0x94,0x3A,0x64,0xF7,0xA3,
3087 0xF2,0x5F,0xE2,0x6F,0x06,0xB5,0x1B,0xAA,0x26,0x96,
3088 0xFA,0x90,0x35,0xDA,
3091 0x5B,0x53,0x4B,0xD5,0x95,0xF5,0xAF,0x0F,0xA2,0xC8,
3092 0x92,0x37,0x6C,0x84,0xAC,0xE1,0xBB,0x4E,0x30,0x19,
3093 0xB7,0x16,0x34,0xC0,0x11,0x31,0x15,0x9C,0xAE,0x03,
3094 0xCE,0xE9,0xD9,0x93,0x21,0x84,0xBE,0xEF,0x21,0x6B,
3095 0xD7,0x1D,0xF2,0xDA,0xDF,0x86,0xA6,0x27,0x30,0x6E,
3096 0xCF,0xF9,0x6D,0xBB,0x8B,0xAC,0xE1,0x98,0xB6,0x1E,
3097 0x00,0xF8,0xB3,0x32,
3100 0xAA,0xDD,0x9D,0xB8,0xDB,0xE9,0xC4,0x8B,0x3F,0xD4,
3101 0xE6,0xAE,0x33,0xC9,0xFC,0x07,0xCB,0x30,0x8D,0xB3,
3102 0xB3,0xC9,0xD2,0x0E,0xD6,0x63,0x9C,0xCA,0x70,0x33,
3103 0x08,0x70,0x55,0x3E,0x5C,0x41,0x4C,0xA9,0x26,0x19,
3104 0x41,0x86,0x61,0x19,0x7F,0xAC,0x10,0x47,0x1D,0xB1,
3105 0xD3,0x81,0x08,0x5D,0xDA,0xDD,0xB5,0x87,0x96,0x82,
3106 0x9C,0xA9,0x00,0x69 }
3109 typedef struct _ec_list_element_st {
3111 const EC_CURVE_DATA *data;
3112 const EC_METHOD *(*meth)(void);
3113 const char *comment;
3116 static const ec_list_element curve_list[] = {
3117 /* prime field curves */
3119 { NID_secp112r1, &_EC_SECG_PRIME_112R1.h, 0, "SECG/WTLS curve over a 112 bit prime field" },
3120 { NID_secp112r2, &_EC_SECG_PRIME_112R2.h, 0, "SECG curve over a 112 bit prime field" },
3121 { NID_secp128r1, &_EC_SECG_PRIME_128R1.h, 0, "SECG curve over a 128 bit prime field" },
3122 { NID_secp128r2, &_EC_SECG_PRIME_128R2.h, 0, "SECG curve over a 128 bit prime field" },
3123 { NID_secp160k1, &_EC_SECG_PRIME_160K1.h, 0, "SECG curve over a 160 bit prime field" },
3124 { NID_secp160r1, &_EC_SECG_PRIME_160R1.h, 0, "SECG curve over a 160 bit prime field" },
3125 { NID_secp160r2, &_EC_SECG_PRIME_160R2.h, 0, "SECG/WTLS curve over a 160 bit prime field" },
3126 /* SECG secp192r1 is the same as X9.62 prime192v1 and hence omitted */
3127 { NID_secp192k1, &_EC_SECG_PRIME_192K1.h, 0, "SECG curve over a 192 bit prime field" },
3128 { NID_secp224k1, &_EC_SECG_PRIME_224K1.h, 0, "SECG curve over a 224 bit prime field" },
3129 #ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
3130 { NID_secp224r1, &_EC_NIST_PRIME_224.h, EC_GFp_nistp224_method, "NIST/SECG curve over a 224 bit prime field" },
3132 { NID_secp224r1, &_EC_NIST_PRIME_224.h, 0, "NIST/SECG curve over a 224 bit prime field" },
3134 { NID_secp256k1, &_EC_SECG_PRIME_256K1.h, 0, "SECG curve over a 256 bit prime field" },
3135 /* SECG secp256r1 is the same as X9.62 prime256v1 and hence omitted */
3136 { NID_secp384r1, &_EC_NIST_PRIME_384.h, 0, "NIST/SECG curve over a 384 bit prime field" },
3137 #ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
3138 { NID_secp521r1, &_EC_NIST_PRIME_521.h, EC_GFp_nistp521_method, "NIST/SECG curve over a 521 bit prime field" },
3140 { NID_secp521r1, &_EC_NIST_PRIME_521.h, 0, "NIST/SECG curve over a 521 bit prime field" },
3143 { NID_X9_62_prime192v1, &_EC_NIST_PRIME_192.h, 0, "NIST/X9.62/SECG curve over a 192 bit prime field" },
3144 { NID_X9_62_prime192v2, &_EC_X9_62_PRIME_192V2.h, 0, "X9.62 curve over a 192 bit prime field" },
3145 { NID_X9_62_prime192v3, &_EC_X9_62_PRIME_192V3.h, 0, "X9.62 curve over a 192 bit prime field" },
3146 { NID_X9_62_prime239v1, &_EC_X9_62_PRIME_239V1.h, 0, "X9.62 curve over a 239 bit prime field" },
3147 { NID_X9_62_prime239v2, &_EC_X9_62_PRIME_239V2.h, 0, "X9.62 curve over a 239 bit prime field" },
3148 { NID_X9_62_prime239v3, &_EC_X9_62_PRIME_239V3.h, 0, "X9.62 curve over a 239 bit prime field" },
3149 { NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h,
3150 #if defined(ECP_NISTZ256_ASM)
3151 EC_GFp_nistz256_method,
3152 #elif !defined(OPENSSL_NO_EC_NISTP_64_GCC_128)
3153 EC_GFp_nistp256_method,
3157 "X9.62/SECG curve over a 256 bit prime field" },
3158 #ifndef OPENSSL_NO_EC2M
3159 /* characteristic two field curves */
3160 /* NIST/SECG curves */
3161 { NID_sect113r1, &_EC_SECG_CHAR2_113R1.h, 0, "SECG curve over a 113 bit binary field" },
3162 { NID_sect113r2, &_EC_SECG_CHAR2_113R2.h, 0, "SECG curve over a 113 bit binary field" },
3163 { NID_sect131r1, &_EC_SECG_CHAR2_131R1.h, 0, "SECG/WTLS curve over a 131 bit binary field" },
3164 { NID_sect131r2, &_EC_SECG_CHAR2_131R2.h, 0, "SECG curve over a 131 bit binary field" },
3165 { NID_sect163k1, &_EC_NIST_CHAR2_163K.h, 0, "NIST/SECG/WTLS curve over a 163 bit binary field" },
3166 { NID_sect163r1, &_EC_SECG_CHAR2_163R1.h, 0, "SECG curve over a 163 bit binary field" },
3167 { NID_sect163r2, &_EC_NIST_CHAR2_163B.h, 0, "NIST/SECG curve over a 163 bit binary field" },
3168 { NID_sect193r1, &_EC_SECG_CHAR2_193R1.h, 0, "SECG curve over a 193 bit binary field" },
3169 { NID_sect193r2, &_EC_SECG_CHAR2_193R2.h, 0, "SECG curve over a 193 bit binary field" },
3170 { NID_sect233k1, &_EC_NIST_CHAR2_233K.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
3171 { NID_sect233r1, &_EC_NIST_CHAR2_233B.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
3172 { NID_sect239k1, &_EC_SECG_CHAR2_239K1.h, 0, "SECG curve over a 239 bit binary field" },
3173 { NID_sect283k1, &_EC_NIST_CHAR2_283K.h, 0, "NIST/SECG curve over a 283 bit binary field" },
3174 { NID_sect283r1, &_EC_NIST_CHAR2_283B.h, 0, "NIST/SECG curve over a 283 bit binary field" },
3175 { NID_sect409k1, &_EC_NIST_CHAR2_409K.h, 0, "NIST/SECG curve over a 409 bit binary field" },
3176 { NID_sect409r1, &_EC_NIST_CHAR2_409B.h, 0, "NIST/SECG curve over a 409 bit binary field" },
3177 { NID_sect571k1, &_EC_NIST_CHAR2_571K.h, 0, "NIST/SECG curve over a 571 bit binary field" },
3178 { NID_sect571r1, &_EC_NIST_CHAR2_571B.h, 0, "NIST/SECG curve over a 571 bit binary field" },
3180 { NID_X9_62_c2pnb163v1, &_EC_X9_62_CHAR2_163V1.h, 0, "X9.62 curve over a 163 bit binary field" },
3181 { NID_X9_62_c2pnb163v2, &_EC_X9_62_CHAR2_163V2.h, 0, "X9.62 curve over a 163 bit binary field" },
3182 { NID_X9_62_c2pnb163v3, &_EC_X9_62_CHAR2_163V3.h, 0, "X9.62 curve over a 163 bit binary field" },
3183 { NID_X9_62_c2pnb176v1, &_EC_X9_62_CHAR2_176V1.h, 0, "X9.62 curve over a 176 bit binary field" },
3184 { NID_X9_62_c2tnb191v1, &_EC_X9_62_CHAR2_191V1.h, 0, "X9.62 curve over a 191 bit binary field" },
3185 { NID_X9_62_c2tnb191v2, &_EC_X9_62_CHAR2_191V2.h, 0, "X9.62 curve over a 191 bit binary field" },
3186 { NID_X9_62_c2tnb191v3, &_EC_X9_62_CHAR2_191V3.h, 0, "X9.62 curve over a 191 bit binary field" },
3187 { NID_X9_62_c2pnb208w1, &_EC_X9_62_CHAR2_208W1.h, 0, "X9.62 curve over a 208 bit binary field" },
3188 { NID_X9_62_c2tnb239v1, &_EC_X9_62_CHAR2_239V1.h, 0, "X9.62 curve over a 239 bit binary field" },
3189 { NID_X9_62_c2tnb239v2, &_EC_X9_62_CHAR2_239V2.h, 0, "X9.62 curve over a 239 bit binary field" },
3190 { NID_X9_62_c2tnb239v3, &_EC_X9_62_CHAR2_239V3.h, 0, "X9.62 curve over a 239 bit binary field" },
3191 { NID_X9_62_c2pnb272w1, &_EC_X9_62_CHAR2_272W1.h, 0, "X9.62 curve over a 272 bit binary field" },
3192 { NID_X9_62_c2pnb304w1, &_EC_X9_62_CHAR2_304W1.h, 0, "X9.62 curve over a 304 bit binary field" },
3193 { NID_X9_62_c2tnb359v1, &_EC_X9_62_CHAR2_359V1.h, 0, "X9.62 curve over a 359 bit binary field" },
3194 { NID_X9_62_c2pnb368w1, &_EC_X9_62_CHAR2_368W1.h, 0, "X9.62 curve over a 368 bit binary field" },
3195 { NID_X9_62_c2tnb431r1, &_EC_X9_62_CHAR2_431R1.h, 0, "X9.62 curve over a 431 bit binary field" },
3196 /* the WAP/WTLS curves
3197 * [unlike SECG, spec has its own OIDs for curves from X9.62] */
3198 { NID_wap_wsg_idm_ecid_wtls1, &_EC_WTLS_1.h, 0, "WTLS curve over a 113 bit binary field" },
3199 { NID_wap_wsg_idm_ecid_wtls3, &_EC_NIST_CHAR2_163K.h, 0, "NIST/SECG/WTLS curve over a 163 bit binary field" },
3200 { NID_wap_wsg_idm_ecid_wtls4, &_EC_SECG_CHAR2_113R1.h, 0, "SECG curve over a 113 bit binary field" },
3201 { NID_wap_wsg_idm_ecid_wtls5, &_EC_X9_62_CHAR2_163V1.h, 0, "X9.62 curve over a 163 bit binary field" },
3203 { NID_wap_wsg_idm_ecid_wtls6, &_EC_SECG_PRIME_112R1.h, 0, "SECG/WTLS curve over a 112 bit prime field" },
3204 { NID_wap_wsg_idm_ecid_wtls7, &_EC_SECG_PRIME_160R2.h, 0, "SECG/WTLS curve over a 160 bit prime field" },
3205 { NID_wap_wsg_idm_ecid_wtls8, &_EC_WTLS_8.h, 0, "WTLS curve over a 112 bit prime field" },
3206 { NID_wap_wsg_idm_ecid_wtls9, &_EC_WTLS_9.h, 0, "WTLS curve over a 160 bit prime field" },
3207 #ifndef OPENSSL_NO_EC2M
3208 { NID_wap_wsg_idm_ecid_wtls10, &_EC_NIST_CHAR2_233K.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
3209 { NID_wap_wsg_idm_ecid_wtls11, &_EC_NIST_CHAR2_233B.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
3211 { NID_wap_wsg_idm_ecid_wtls12, &_EC_WTLS_12.h, 0, "WTLS curvs over a 224 bit prime field" },
3212 #ifndef OPENSSL_NO_EC2M
3214 { NID_ipsec3, &_EC_IPSEC_155_ID3.h, 0, "\n\tIPSec/IKE/Oakley curve #3 over a 155 bit binary field.\n"
3215 "\tNot suitable for ECDSA.\n\tQuestionable extension field!" },
3216 { NID_ipsec4, &_EC_IPSEC_185_ID4.h, 0, "\n\tIPSec/IKE/Oakley curve #4 over a 185 bit binary field.\n"
3217 "\tNot suitable for ECDSA.\n\tQuestionable extension field!" },
3219 /* brainpool curves */
3220 { NID_brainpoolP160r1, &_EC_brainpoolP160r1.h, 0, "RFC 5639 curve over a 160 bit prime field"},
3221 { NID_brainpoolP160t1, &_EC_brainpoolP160t1.h, 0, "RFC 5639 curve over a 160 bit prime field"},
3222 { NID_brainpoolP192r1, &_EC_brainpoolP192r1.h, 0, "RFC 5639 curve over a 192 bit prime field"},
3223 { NID_brainpoolP192t1, &_EC_brainpoolP192t1.h, 0, "RFC 5639 curve over a 192 bit prime field"},
3224 { NID_brainpoolP224r1, &_EC_brainpoolP224r1.h, 0, "RFC 5639 curve over a 224 bit prime field"},
3225 { NID_brainpoolP224t1, &_EC_brainpoolP224t1.h, 0, "RFC 5639 curve over a 224 bit prime field"},
3226 { NID_brainpoolP256r1, &_EC_brainpoolP256r1.h, 0, "RFC 5639 curve over a 256 bit prime field"},
3227 { NID_brainpoolP256t1, &_EC_brainpoolP256t1.h, 0, "RFC 5639 curve over a 256 bit prime field"},
3228 { NID_brainpoolP320r1, &_EC_brainpoolP320r1.h, 0, "RFC 5639 curve over a 320 bit prime field"},
3229 { NID_brainpoolP320t1, &_EC_brainpoolP320t1.h, 0, "RFC 5639 curve over a 320 bit prime field"},
3230 { NID_brainpoolP384r1, &_EC_brainpoolP384r1.h, 0, "RFC 5639 curve over a 384 bit prime field"},
3231 { NID_brainpoolP384t1, &_EC_brainpoolP384t1.h, 0, "RFC 5639 curve over a 384 bit prime field"},
3232 { NID_brainpoolP512r1, &_EC_brainpoolP512r1.h, 0, "RFC 5639 curve over a 512 bit prime field"},
3233 { NID_brainpoolP512t1, &_EC_brainpoolP512t1.h, 0, "RFC 5639 curve over a 512 bit prime field"},
3236 #define curve_list_length (sizeof(curve_list)/sizeof(ec_list_element))
3238 static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
3240 EC_GROUP *group=NULL;
3243 BIGNUM *p=NULL, *a=NULL, *b=NULL, *x=NULL, *y=NULL, *order=NULL;
3245 int seed_len,param_len;
3246 const EC_METHOD *meth;
3247 const EC_CURVE_DATA *data;
3248 const unsigned char *params;
3250 if ((ctx = BN_CTX_new()) == NULL)
3252 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_MALLOC_FAILURE);
3257 seed_len = data->seed_len;
3258 param_len = data->param_len;
3259 params = (const unsigned char *)(data+1); /* skip header */
3260 params += seed_len; /* skip seed */
3262 if (!(p = BN_bin2bn(params+0*param_len, param_len, NULL))
3263 || !(a = BN_bin2bn(params+1*param_len, param_len, NULL))
3264 || !(b = BN_bin2bn(params+2*param_len, param_len, NULL)))
3266 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
3270 if (curve.meth != 0)
3272 meth = curve.meth();
3273 if (((group = EC_GROUP_new(meth)) == NULL) ||
3274 (!(group->meth->group_set_curve(group, p, a, b, ctx))))
3276 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3280 else if (data->field_type == NID_X9_62_prime_field)
3282 if ((group = EC_GROUP_new_curve_GFp(p, a, b, ctx)) == NULL)
3284 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3288 #ifndef OPENSSL_NO_EC2M
3289 else /* field_type == NID_X9_62_characteristic_two_field */
3291 if ((group = EC_GROUP_new_curve_GF2m(p, a, b, ctx)) == NULL)
3293 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3299 if ((P = EC_POINT_new(group)) == NULL)
3301 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3305 if (!(x = BN_bin2bn(params+3*param_len, param_len, NULL))
3306 || !(y = BN_bin2bn(params+4*param_len, param_len, NULL)))
3308 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
3311 if (!EC_POINT_set_affine_coordinates_GFp(group, P, x, y, ctx))
3313 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3316 if (!(order = BN_bin2bn(params+5*param_len, param_len, NULL))
3317 || !BN_set_word(x, (BN_ULONG)data->cofactor))
3319 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
3322 if (!EC_GROUP_set_generator(group, P, order, x))
3324 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3329 if (!EC_GROUP_set_seed(group, params-seed_len, seed_len))
3331 ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
3339 EC_GROUP_free(group);
3361 EC_GROUP *EC_GROUP_new_by_curve_name(int nid)
3364 EC_GROUP *ret = NULL;
3369 for (i=0; i<curve_list_length; i++)
3370 if (curve_list[i].nid == nid)
3372 ret = ec_group_new_from_data(curve_list[i]);
3378 ECerr(EC_F_EC_GROUP_NEW_BY_CURVE_NAME, EC_R_UNKNOWN_GROUP);
3382 EC_GROUP_set_curve_name(ret, nid);
3387 size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems)
3391 if (r == NULL || nitems == 0)
3392 return curve_list_length;
3394 min = nitems < curve_list_length ? nitems : curve_list_length;
3396 for (i = 0; i < min; i++)
3398 r[i].nid = curve_list[i].nid;
3399 r[i].comment = curve_list[i].comment;
3402 return curve_list_length;
3405 /* Functions to translate between common NIST curve names and NIDs */
3408 const char *name; /* NIST Name of curve */
3409 int nid; /* Curve NID */
3412 static EC_NIST_NAME nist_curves[] = {
3413 {"B-163", NID_sect163r2},
3414 {"B-233", NID_sect233r1},
3415 {"B-283", NID_sect283r1},
3416 {"B-409", NID_sect409r1},
3417 {"B-571", NID_sect571r1},
3418 {"K-163", NID_sect163k1},
3419 {"K-233", NID_sect233k1},
3420 {"K-283", NID_sect283k1},
3421 {"K-409", NID_sect409k1},
3422 {"K-571", NID_sect571k1},
3423 {"P-192", NID_X9_62_prime192v1},
3424 {"P-224", NID_secp224r1},
3425 {"P-256", NID_X9_62_prime256v1},
3426 {"P-384", NID_secp384r1},
3427 {"P-521", NID_secp521r1}
3430 const char *EC_curve_nid2nist(int nid)
3433 for (i = 0; i < sizeof(nist_curves)/sizeof(EC_NIST_NAME); i++)
3435 if (nist_curves[i].nid == nid)
3436 return nist_curves[i].name;
3441 int EC_curve_nist2nid(const char *name)
3444 for (i = 0; i < sizeof(nist_curves)/sizeof(EC_NIST_NAME); i++)
3446 if (!strcmp(nist_curves[i].name, name))
3447 return nist_curves[i].nid;