1*0884f548Stb /* $OpenBSD: ec_curve.c,v 1.43 2024/03/24 06:05:41 tb Exp $ */
25650a0e1Sdjm /*
35650a0e1Sdjm * Written by Nils Larsch for the OpenSSL project.
45650a0e1Sdjm */
55650a0e1Sdjm /* ====================================================================
6ec07fdf1Sdjm * Copyright (c) 1998-2010 The OpenSSL Project. All rights reserved.
75650a0e1Sdjm *
85650a0e1Sdjm * Redistribution and use in source and binary forms, with or without
95650a0e1Sdjm * modification, are permitted provided that the following conditions
105650a0e1Sdjm * are met:
115650a0e1Sdjm *
125650a0e1Sdjm * 1. Redistributions of source code must retain the above copyright
135650a0e1Sdjm * notice, this list of conditions and the following disclaimer.
145650a0e1Sdjm *
155650a0e1Sdjm * 2. Redistributions in binary form must reproduce the above copyright
165650a0e1Sdjm * notice, this list of conditions and the following disclaimer in
175650a0e1Sdjm * the documentation and/or other materials provided with the
185650a0e1Sdjm * distribution.
195650a0e1Sdjm *
205650a0e1Sdjm * 3. All advertising materials mentioning features or use of this
215650a0e1Sdjm * software must display the following acknowledgment:
225650a0e1Sdjm * "This product includes software developed by the OpenSSL Project
235650a0e1Sdjm * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
245650a0e1Sdjm *
255650a0e1Sdjm * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
265650a0e1Sdjm * endorse or promote products derived from this software without
275650a0e1Sdjm * prior written permission. For written permission, please contact
285650a0e1Sdjm * openssl-core@openssl.org.
295650a0e1Sdjm *
305650a0e1Sdjm * 5. Products derived from this software may not be called "OpenSSL"
315650a0e1Sdjm * nor may "OpenSSL" appear in their names without prior written
325650a0e1Sdjm * permission of the OpenSSL Project.
335650a0e1Sdjm *
345650a0e1Sdjm * 6. Redistributions of any form whatsoever must retain the following
355650a0e1Sdjm * acknowledgment:
365650a0e1Sdjm * "This product includes software developed by the OpenSSL Project
375650a0e1Sdjm * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
385650a0e1Sdjm *
395650a0e1Sdjm * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
405650a0e1Sdjm * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
415650a0e1Sdjm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
425650a0e1Sdjm * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
435650a0e1Sdjm * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
445650a0e1Sdjm * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
455650a0e1Sdjm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
465650a0e1Sdjm * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
475650a0e1Sdjm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
485650a0e1Sdjm * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
495650a0e1Sdjm * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
505650a0e1Sdjm * OF THE POSSIBILITY OF SUCH DAMAGE.
515650a0e1Sdjm * ====================================================================
525650a0e1Sdjm *
535650a0e1Sdjm * This product includes cryptographic software written by Eric Young
545650a0e1Sdjm * (eay@cryptsoft.com). This product includes software written by Tim
555650a0e1Sdjm * Hudson (tjh@cryptsoft.com).
565650a0e1Sdjm *
575650a0e1Sdjm */
585650a0e1Sdjm /* ====================================================================
595650a0e1Sdjm * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
605650a0e1Sdjm *
615650a0e1Sdjm * Portions of the attached software ("Contribution") are developed by
625650a0e1Sdjm * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
635650a0e1Sdjm *
645650a0e1Sdjm * The Contribution is licensed pursuant to the OpenSSL open source
655650a0e1Sdjm * license provided above.
665650a0e1Sdjm *
675650a0e1Sdjm * The elliptic curve binary polynomial software is originally written by
685650a0e1Sdjm * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
695650a0e1Sdjm *
705650a0e1Sdjm */
715650a0e1Sdjm
72bdb7dc21Sjsing #include <string.h>
73bdb7dc21Sjsing
748cf4d6a6Sjsing #include <openssl/opensslconf.h>
758cf4d6a6Sjsing
765650a0e1Sdjm #include <openssl/err.h>
779e45fc42Stb #include <openssl/objects.h>
789e45fc42Stb
79c9675a23Stb #include "ec_local.h"
805650a0e1Sdjm
815650a0e1Sdjm /* the nist prime curves */
82f67ac449Stedu static const struct {
8359919d1cStb uint8_t seed[20];
8459919d1cStb uint8_t p[24];
8559919d1cStb uint8_t a[24];
8659919d1cStb uint8_t b[24];
8759919d1cStb uint8_t x[24];
8859919d1cStb uint8_t y[24];
8959919d1cStb uint8_t order[24];
9059919d1cStb } _EC_NIST_PRIME_192 = {
9159919d1cStb .seed = {
92ecf6283eStb 0x30, 0x45, 0xae, 0x6f, 0xc8, 0x42, 0x2f, 0x64, 0xed, 0x57,
93ecf6283eStb 0x95, 0x28, 0xd3, 0x81, 0x20, 0xea, 0xe1, 0x21, 0x96, 0xd5,
9459919d1cStb },
9559919d1cStb .p = {
96ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
97ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
98ecf6283eStb 0xff, 0xff, 0xff, 0xff,
9959919d1cStb },
10059919d1cStb .a = {
101ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
102ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
103ecf6283eStb 0xff, 0xff, 0xff, 0xfc,
10459919d1cStb },
10559919d1cStb .b = {
106ecf6283eStb 0x64, 0x21, 0x05, 0x19, 0xe5, 0x9c, 0x80, 0xe7, 0x0f, 0xa7,
107ecf6283eStb 0xe9, 0xab, 0x72, 0x24, 0x30, 0x49, 0xfe, 0xb8, 0xde, 0xec,
108ecf6283eStb 0xc1, 0x46, 0xb9, 0xb1,
10959919d1cStb },
11059919d1cStb .x = {
111ecf6283eStb 0x18, 0x8d, 0xa8, 0x0e, 0xb0, 0x30, 0x90, 0xf6, 0x7c, 0xbf,
112ecf6283eStb 0x20, 0xeb, 0x43, 0xa1, 0x88, 0x00, 0xf4, 0xff, 0x0a, 0xfd,
113ecf6283eStb 0x82, 0xff, 0x10, 0x12,
11459919d1cStb },
11559919d1cStb .y = {
11601938560Stb 0x07, 0x19, 0x2b, 0x95, 0xff, 0xc8, 0xda, 0x78, 0x63, 0x10,
117f1535dc8Sdjm 0x11, 0xed, 0x6b, 0x24, 0xcd, 0xd5, 0x73, 0xf9, 0x77, 0xa1,
118f1535dc8Sdjm 0x1e, 0x79, 0x48, 0x11,
11959919d1cStb },
12059919d1cStb .order = {
121ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
122ecf6283eStb 0xff, 0xff, 0x99, 0xde, 0xf8, 0x36, 0x14, 0x6b, 0xc9, 0xb1,
123ecf6283eStb 0xb4, 0xd2, 0x28, 0x31,
12459919d1cStb },
1255650a0e1Sdjm };
1265650a0e1Sdjm
127f67ac449Stedu static const struct {
12859919d1cStb uint8_t seed[20];
12959919d1cStb uint8_t p[28];
13059919d1cStb uint8_t a[28];
13159919d1cStb uint8_t b[28];
13259919d1cStb uint8_t x[28];
13359919d1cStb uint8_t y[28];
13459919d1cStb uint8_t order[28];
13559919d1cStb } _EC_NIST_PRIME_224 = {
13659919d1cStb .seed = {
137ecf6283eStb 0xbd, 0x71, 0x34, 0x47, 0x99, 0xd5, 0xc7, 0xfc, 0xdc, 0x45,
138ecf6283eStb 0xb5, 0x9f, 0xa3, 0xb9, 0xab, 0x8f, 0x6a, 0x94, 0x8b, 0xc5,
13959919d1cStb },
14059919d1cStb .p = {
141ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
142ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
143f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
14459919d1cStb },
14559919d1cStb .a = {
146ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
147ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
148ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
14959919d1cStb },
15059919d1cStb .b = {
151ecf6283eStb 0xb4, 0x05, 0x0a, 0x85, 0x0c, 0x04, 0xb3, 0xab, 0xf5, 0x41,
152ecf6283eStb 0x32, 0x56, 0x50, 0x44, 0xb0, 0xb7, 0xd7, 0xbf, 0xd8, 0xba,
153ecf6283eStb 0x27, 0x0b, 0x39, 0x43, 0x23, 0x55, 0xff, 0xb4,
15459919d1cStb },
15559919d1cStb .x = {
156ecf6283eStb 0xb7, 0x0e, 0x0c, 0xbd, 0x6b, 0xb4, 0xbf, 0x7f, 0x32, 0x13,
157ecf6283eStb 0x90, 0xb9, 0x4a, 0x03, 0xc1, 0xd3, 0x56, 0xc2, 0x11, 0x22,
158ecf6283eStb 0x34, 0x32, 0x80, 0xd6, 0x11, 0x5c, 0x1d, 0x21,
15959919d1cStb },
16059919d1cStb .y = {
16101938560Stb 0xbd, 0x37, 0x63, 0x88, 0xb5, 0xf7, 0x23, 0xfb, 0x4c, 0x22,
162f1535dc8Sdjm 0xdf, 0xe6, 0xcd, 0x43, 0x75, 0xa0, 0x5a, 0x07, 0x47, 0x64,
163f1535dc8Sdjm 0x44, 0xd5, 0x81, 0x99, 0x85, 0x00, 0x7e, 0x34,
16459919d1cStb },
16559919d1cStb .order = {
166ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
167ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0x16, 0xa2, 0xe0, 0xb8, 0xf0, 0x3e,
168ecf6283eStb 0x13, 0xdd, 0x29, 0x45, 0x5c, 0x5c, 0x2a, 0x3d,
16959919d1cStb },
1705650a0e1Sdjm };
1715650a0e1Sdjm
172f67ac449Stedu static const struct {
17359919d1cStb uint8_t seed[20];
17459919d1cStb uint8_t p[48];
17559919d1cStb uint8_t a[48];
17659919d1cStb uint8_t b[48];
17759919d1cStb uint8_t x[48];
17859919d1cStb uint8_t y[48];
17959919d1cStb uint8_t order[48];
18059919d1cStb } _EC_NIST_PRIME_384 = {
18159919d1cStb .seed = {
182ecf6283eStb 0xa3, 0x35, 0x92, 0x6a, 0xa3, 0x19, 0xa2, 0x7a, 0x1d, 0x00,
183ecf6283eStb 0x89, 0x6a, 0x67, 0x73, 0xa4, 0x82, 0x7a, 0xcd, 0xac, 0x73,
18459919d1cStb },
18559919d1cStb .p = {
186ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
187ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
188ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
189ecf6283eStb 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
190ecf6283eStb 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
19159919d1cStb },
19259919d1cStb .a = {
193ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
194ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
195ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
196ecf6283eStb 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
197ecf6283eStb 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfc,
19859919d1cStb },
19959919d1cStb .b = {
200ecf6283eStb 0xb3, 0x31, 0x2f, 0xa7, 0xe2, 0x3e, 0xe7, 0xe4, 0x98, 0x8e,
201ecf6283eStb 0x05, 0x6b, 0xe3, 0xf8, 0x2d, 0x19, 0x18, 0x1d, 0x9c, 0x6e,
202ecf6283eStb 0xfe, 0x81, 0x41, 0x12, 0x03, 0x14, 0x08, 0x8f, 0x50, 0x13,
203ecf6283eStb 0x87, 0x5a, 0xc6, 0x56, 0x39, 0x8d, 0x8a, 0x2e, 0xd1, 0x9d,
204ecf6283eStb 0x2a, 0x85, 0xc8, 0xed, 0xd3, 0xec, 0x2a, 0xef,
20559919d1cStb },
20659919d1cStb .x = {
207ecf6283eStb 0xaa, 0x87, 0xca, 0x22, 0xbe, 0x8b, 0x05, 0x37, 0x8e, 0xb1,
208ecf6283eStb 0xc7, 0x1e, 0xf3, 0x20, 0xad, 0x74, 0x6e, 0x1d, 0x3b, 0x62,
209ecf6283eStb 0x8b, 0xa7, 0x9b, 0x98, 0x59, 0xf7, 0x41, 0xe0, 0x82, 0x54,
210ecf6283eStb 0x2a, 0x38, 0x55, 0x02, 0xf2, 0x5d, 0xbf, 0x55, 0x29, 0x6c,
211ecf6283eStb 0x3a, 0x54, 0x5e, 0x38, 0x72, 0x76, 0x0a, 0xb7,
21259919d1cStb },
21359919d1cStb .y = {
21401938560Stb 0x36, 0x17, 0xde, 0x4a, 0x96, 0x26, 0x2c, 0x6f, 0x5d, 0x9e,
215f1535dc8Sdjm 0x98, 0xbf, 0x92, 0x92, 0xdc, 0x29, 0xf8, 0xf4, 0x1d, 0xbd,
216f1535dc8Sdjm 0x28, 0x9a, 0x14, 0x7c, 0xe9, 0xda, 0x31, 0x13, 0xb5, 0xf0,
217f1535dc8Sdjm 0xb8, 0xc0, 0x0a, 0x60, 0xb1, 0xce, 0x1d, 0x7e, 0x81, 0x9d,
218f1535dc8Sdjm 0x7a, 0x43, 0x1d, 0x7c, 0x90, 0xea, 0x0e, 0x5f,
21959919d1cStb },
22059919d1cStb .order = {
221ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
222ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
223ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xc7, 0x63, 0x4d, 0x81, 0xf4, 0x37,
224ecf6283eStb 0x2d, 0xdf, 0x58, 0x1a, 0x0d, 0xb2, 0x48, 0xb0, 0xa7, 0x7a,
225ecf6283eStb 0xec, 0xec, 0x19, 0x6a, 0xcc, 0xc5, 0x29, 0x73,
22659919d1cStb },
2275650a0e1Sdjm };
2285650a0e1Sdjm
229f67ac449Stedu static const struct {
23059919d1cStb uint8_t seed[20];
23159919d1cStb uint8_t p[66];
23259919d1cStb uint8_t a[66];
23359919d1cStb uint8_t b[66];
23459919d1cStb uint8_t x[66];
23559919d1cStb uint8_t y[66];
23659919d1cStb uint8_t order[66];
23759919d1cStb } _EC_NIST_PRIME_521 = {
23859919d1cStb .seed = {
239ecf6283eStb 0xd0, 0x9e, 0x88, 0x00, 0x29, 0x1c, 0xb8, 0x53, 0x96, 0xcc,
240ecf6283eStb 0x67, 0x17, 0x39, 0x32, 0x84, 0xaa, 0xa0, 0xda, 0x64, 0xba,
24159919d1cStb },
24259919d1cStb .p = {
243ecf6283eStb 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
244ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
245ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
246ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
247ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
248ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
249ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
25059919d1cStb },
25159919d1cStb .a = {
252ecf6283eStb 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
253ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
254ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
255ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
256ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
257ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
258ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
25959919d1cStb },
26059919d1cStb .b = {
261ecf6283eStb 0x00, 0x51, 0x95, 0x3e, 0xb9, 0x61, 0x8e, 0x1c, 0x9a, 0x1f,
262ecf6283eStb 0x92, 0x9a, 0x21, 0xa0, 0xb6, 0x85, 0x40, 0xee, 0xa2, 0xda,
263ecf6283eStb 0x72, 0x5b, 0x99, 0xb3, 0x15, 0xf3, 0xb8, 0xb4, 0x89, 0x91,
264ecf6283eStb 0x8e, 0xf1, 0x09, 0xe1, 0x56, 0x19, 0x39, 0x51, 0xec, 0x7e,
265ecf6283eStb 0x93, 0x7b, 0x16, 0x52, 0xc0, 0xbd, 0x3b, 0xb1, 0xbf, 0x07,
266ecf6283eStb 0x35, 0x73, 0xdf, 0x88, 0x3d, 0x2c, 0x34, 0xf1, 0xef, 0x45,
267ecf6283eStb 0x1f, 0xd4, 0x6b, 0x50, 0x3f, 0x00,
26859919d1cStb },
26959919d1cStb .x = {
270ecf6283eStb 0x00, 0xc6, 0x85, 0x8e, 0x06, 0xb7, 0x04, 0x04, 0xe9, 0xcd,
271ecf6283eStb 0x9e, 0x3e, 0xcb, 0x66, 0x23, 0x95, 0xb4, 0x42, 0x9c, 0x64,
272ecf6283eStb 0x81, 0x39, 0x05, 0x3f, 0xb5, 0x21, 0xf8, 0x28, 0xaf, 0x60,
273ecf6283eStb 0x6b, 0x4d, 0x3d, 0xba, 0xa1, 0x4b, 0x5e, 0x77, 0xef, 0xe7,
274ecf6283eStb 0x59, 0x28, 0xfe, 0x1d, 0xc1, 0x27, 0xa2, 0xff, 0xa8, 0xde,
275ecf6283eStb 0x33, 0x48, 0xb3, 0xc1, 0x85, 0x6a, 0x42, 0x9b, 0xf9, 0x7e,
276ecf6283eStb 0x7e, 0x31, 0xc2, 0xe5, 0xbd, 0x66,
27759919d1cStb },
27859919d1cStb .y = {
27901938560Stb 0x01, 0x18, 0x39, 0x29, 0x6a, 0x78, 0x9a, 0x3b, 0xc0, 0x04,
280f1535dc8Sdjm 0x5c, 0x8a, 0x5f, 0xb4, 0x2c, 0x7d, 0x1b, 0xd9, 0x98, 0xf5,
281f1535dc8Sdjm 0x44, 0x49, 0x57, 0x9b, 0x44, 0x68, 0x17, 0xaf, 0xbd, 0x17,
282f1535dc8Sdjm 0x27, 0x3e, 0x66, 0x2c, 0x97, 0xee, 0x72, 0x99, 0x5e, 0xf4,
283f1535dc8Sdjm 0x26, 0x40, 0xc5, 0x50, 0xb9, 0x01, 0x3f, 0xad, 0x07, 0x61,
284f1535dc8Sdjm 0x35, 0x3c, 0x70, 0x86, 0xa2, 0x72, 0xc2, 0x40, 0x88, 0xbe,
285f1535dc8Sdjm 0x94, 0x76, 0x9f, 0xd1, 0x66, 0x50,
28659919d1cStb },
28759919d1cStb .order = {
288ecf6283eStb 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
289ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
290ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
291ecf6283eStb 0xff, 0xff, 0xff, 0xfa, 0x51, 0x86, 0x87, 0x83, 0xbf, 0x2f,
292ecf6283eStb 0x96, 0x6b, 0x7f, 0xcc, 0x01, 0x48, 0xf7, 0x09, 0xa5, 0xd0,
293ecf6283eStb 0x3b, 0xb5, 0xc9, 0xb8, 0x89, 0x9c, 0x47, 0xae, 0xbb, 0x6f,
294ecf6283eStb 0xb7, 0x1e, 0x91, 0x38, 0x64, 0x09,
29559919d1cStb },
2965650a0e1Sdjm };
297f1535dc8Sdjm
2985650a0e1Sdjm /* the x9.62 prime curves (minus the nist prime curves) */
299f67ac449Stedu static const struct {
30059919d1cStb uint8_t seed[20];
30159919d1cStb uint8_t p[24];
30259919d1cStb uint8_t a[24];
30359919d1cStb uint8_t b[24];
30459919d1cStb uint8_t x[24];
30559919d1cStb uint8_t y[24];
30659919d1cStb uint8_t order[24];
30759919d1cStb } _EC_X9_62_PRIME_192V2 = {
30859919d1cStb .seed = {
309ecf6283eStb 0x31, 0xa9, 0x2e, 0xe2, 0x02, 0x9f, 0xd1, 0x0d, 0x90, 0x1b,
310ecf6283eStb 0x11, 0x3e, 0x99, 0x07, 0x10, 0xf0, 0xd2, 0x1a, 0xc6, 0xb6,
31159919d1cStb },
31259919d1cStb .p = {
313ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
314ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
315ecf6283eStb 0xff, 0xff, 0xff, 0xff,
31659919d1cStb },
31759919d1cStb .a = {
318ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
319ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
320ecf6283eStb 0xff, 0xff, 0xff, 0xfc,
32159919d1cStb },
32259919d1cStb .b = {
323ecf6283eStb 0xcc, 0x22, 0xd6, 0xdf, 0xb9, 0x5c, 0x6b, 0x25, 0xe4, 0x9c,
324ecf6283eStb 0x0d, 0x63, 0x64, 0xa4, 0xe5, 0x98, 0x0c, 0x39, 0x3a, 0xa2,
325ecf6283eStb 0x16, 0x68, 0xd9, 0x53,
32659919d1cStb },
32759919d1cStb .x = {
328ecf6283eStb 0xee, 0xa2, 0xba, 0xe7, 0xe1, 0x49, 0x78, 0x42, 0xf2, 0xde,
329ecf6283eStb 0x77, 0x69, 0xcf, 0xe9, 0xc9, 0x89, 0xc0, 0x72, 0xad, 0x69,
330ecf6283eStb 0x6f, 0x48, 0x03, 0x4a,
33159919d1cStb },
33259919d1cStb .y = {
33301938560Stb 0x65, 0x74, 0xd1, 0x1d, 0x69, 0xb6, 0xec, 0x7a, 0x67, 0x2b,
334f1535dc8Sdjm 0xb8, 0x2a, 0x08, 0x3d, 0xf2, 0xf2, 0xb0, 0x84, 0x7d, 0xe9,
335f1535dc8Sdjm 0x70, 0xb2, 0xde, 0x15,
33659919d1cStb },
33759919d1cStb .order = {
338ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
339ecf6283eStb 0xff, 0xfe, 0x5f, 0xb1, 0xa7, 0x24, 0xdc, 0x80, 0x41, 0x86,
340ecf6283eStb 0x48, 0xd8, 0xdd, 0x31,
34159919d1cStb },
3425650a0e1Sdjm };
3435650a0e1Sdjm
344f67ac449Stedu static const struct {
34559919d1cStb uint8_t seed[20];
34659919d1cStb uint8_t p[24];
34759919d1cStb uint8_t a[24];
34859919d1cStb uint8_t b[24];
34959919d1cStb uint8_t x[24];
35059919d1cStb uint8_t y[24];
35159919d1cStb uint8_t order[24];
35259919d1cStb } _EC_X9_62_PRIME_192V3 = {
35359919d1cStb .seed = {
354ecf6283eStb 0xc4, 0x69, 0x68, 0x44, 0x35, 0xde, 0xb3, 0x78, 0xc4, 0xb6,
355ecf6283eStb 0x5c, 0xa9, 0x59, 0x1e, 0x2a, 0x57, 0x63, 0x05, 0x9a, 0x2e,
35659919d1cStb },
35759919d1cStb .p = {
358ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
359ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
360ecf6283eStb 0xff, 0xff, 0xff, 0xff,
36159919d1cStb },
36259919d1cStb .a = {
363ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
364ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
365ecf6283eStb 0xff, 0xff, 0xff, 0xfc,
36659919d1cStb },
36759919d1cStb .b = {
368ecf6283eStb 0x22, 0x12, 0x3d, 0xc2, 0x39, 0x5a, 0x05, 0xca, 0xa7, 0x42,
369ecf6283eStb 0x3d, 0xae, 0xcc, 0xc9, 0x47, 0x60, 0xa7, 0xd4, 0x62, 0x25,
370ecf6283eStb 0x6b, 0xd5, 0x69, 0x16,
37159919d1cStb },
37259919d1cStb .x = {
373ecf6283eStb 0x7d, 0x29, 0x77, 0x81, 0x00, 0xc6, 0x5a, 0x1d, 0xa1, 0x78,
374ecf6283eStb 0x37, 0x16, 0x58, 0x8d, 0xce, 0x2b, 0x8b, 0x4a, 0xee, 0x8e,
375ecf6283eStb 0x22, 0x8f, 0x18, 0x96,
37659919d1cStb },
37759919d1cStb .y = {
37801938560Stb 0x38, 0xa9, 0x0f, 0x22, 0x63, 0x73, 0x37, 0x33, 0x4b, 0x49,
379f1535dc8Sdjm 0xdc, 0xb6, 0x6a, 0x6d, 0xc8, 0xf9, 0x97, 0x8a, 0xca, 0x76,
380f1535dc8Sdjm 0x48, 0xa9, 0x43, 0xb0,
38159919d1cStb },
38259919d1cStb .order = {
383ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
384ecf6283eStb 0xff, 0xff, 0x7a, 0x62, 0xd0, 0x31, 0xc8, 0x3f, 0x42, 0x94,
385ecf6283eStb 0xf6, 0x40, 0xec, 0x13,
38659919d1cStb },
3875650a0e1Sdjm };
3885650a0e1Sdjm
389f67ac449Stedu static const struct {
39059919d1cStb uint8_t seed[20];
39159919d1cStb uint8_t p[30];
39259919d1cStb uint8_t a[30];
39359919d1cStb uint8_t b[30];
39459919d1cStb uint8_t x[30];
39559919d1cStb uint8_t y[30];
39659919d1cStb uint8_t order[30];
39759919d1cStb } _EC_X9_62_PRIME_239V1 = {
39859919d1cStb .seed = {
399ecf6283eStb 0xe4, 0x3b, 0xb4, 0x60, 0xf0, 0xb8, 0x0c, 0xc0, 0xc0, 0xb0,
400ecf6283eStb 0x75, 0x79, 0x8e, 0x94, 0x80, 0x60, 0xf8, 0x32, 0x1b, 0x7d,
40159919d1cStb },
40259919d1cStb .p = {
403ecf6283eStb 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
404ecf6283eStb 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
405ecf6283eStb 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
40659919d1cStb },
40759919d1cStb .a = {
408ecf6283eStb 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
409ecf6283eStb 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
410ecf6283eStb 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfc,
41159919d1cStb },
41259919d1cStb .b = {
413ecf6283eStb 0x6b, 0x01, 0x6c, 0x3b, 0xdc, 0xf1, 0x89, 0x41, 0xd0, 0xd6,
414ecf6283eStb 0x54, 0x92, 0x14, 0x75, 0xca, 0x71, 0xa9, 0xdb, 0x2f, 0xb2,
415ecf6283eStb 0x7d, 0x1d, 0x37, 0x79, 0x61, 0x85, 0xc2, 0x94, 0x2c, 0x0a,
41659919d1cStb },
41759919d1cStb .x = {
418ecf6283eStb 0x0f, 0xfa, 0x96, 0x3c, 0xdc, 0xa8, 0x81, 0x6c, 0xcc, 0x33,
419ecf6283eStb 0xb8, 0x64, 0x2b, 0xed, 0xf9, 0x05, 0xc3, 0xd3, 0x58, 0x57,
420ecf6283eStb 0x3d, 0x3f, 0x27, 0xfb, 0xbd, 0x3b, 0x3c, 0xb9, 0xaa, 0xaf,
42159919d1cStb },
42259919d1cStb .y = {
42301938560Stb 0x7d, 0xeb, 0xe8, 0xe4, 0xe9, 0x0a, 0x5d, 0xae, 0x6e, 0x40,
424f1535dc8Sdjm 0x54, 0xca, 0x53, 0x0b, 0xa0, 0x46, 0x54, 0xb3, 0x68, 0x18,
425f1535dc8Sdjm 0xce, 0x22, 0x6b, 0x39, 0xfc, 0xcb, 0x7b, 0x02, 0xf1, 0xae,
42659919d1cStb },
42759919d1cStb .order = {
428ecf6283eStb 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
429ecf6283eStb 0xff, 0xff, 0x7f, 0xff, 0xff, 0x9e, 0x5e, 0x9a, 0x9f, 0x5d,
430ecf6283eStb 0x90, 0x71, 0xfb, 0xd1, 0x52, 0x26, 0x88, 0x90, 0x9d, 0x0b,
43159919d1cStb },
4325650a0e1Sdjm };
4335650a0e1Sdjm
434f67ac449Stedu static const struct {
43559919d1cStb uint8_t seed[20];
43659919d1cStb uint8_t p[30];
43759919d1cStb uint8_t a[30];
43859919d1cStb uint8_t b[30];
43959919d1cStb uint8_t x[30];
44059919d1cStb uint8_t y[30];
44159919d1cStb uint8_t order[30];
44259919d1cStb } _EC_X9_62_PRIME_239V2 = {
44359919d1cStb .seed = {
444ecf6283eStb 0xe8, 0xb4, 0x01, 0x16, 0x04, 0x09, 0x53, 0x03, 0xca, 0x3b,
445ecf6283eStb 0x80, 0x99, 0x98, 0x2b, 0xe0, 0x9f, 0xcb, 0x9a, 0xe6, 0x16,
44659919d1cStb },
44759919d1cStb .p = {
448ecf6283eStb 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
449ecf6283eStb 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
450ecf6283eStb 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
45159919d1cStb },
45259919d1cStb .a = {
453ecf6283eStb 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
454ecf6283eStb 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
455ecf6283eStb 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfc,
45659919d1cStb },
45759919d1cStb .b = {
458ecf6283eStb 0x61, 0x7f, 0xab, 0x68, 0x32, 0x57, 0x6c, 0xbb, 0xfe, 0xd5,
459ecf6283eStb 0x0d, 0x99, 0xf0, 0x24, 0x9c, 0x3f, 0xee, 0x58, 0xb9, 0x4b,
460ecf6283eStb 0xa0, 0x03, 0x8c, 0x7a, 0xe8, 0x4c, 0x8c, 0x83, 0x2f, 0x2c,
46159919d1cStb },
46259919d1cStb .x = {
463ecf6283eStb 0x38, 0xaf, 0x09, 0xd9, 0x87, 0x27, 0x70, 0x51, 0x20, 0xc9,
464ecf6283eStb 0x21, 0xbb, 0x5e, 0x9e, 0x26, 0x29, 0x6a, 0x3c, 0xdc, 0xf2,
465ecf6283eStb 0xf3, 0x57, 0x57, 0xa0, 0xea, 0xfd, 0x87, 0xb8, 0x30, 0xe7,
46659919d1cStb },
46759919d1cStb .y = {
46801938560Stb 0x5b, 0x01, 0x25, 0xe4, 0xdb, 0xea, 0x0e, 0xc7, 0x20, 0x6d,
469f1535dc8Sdjm 0xa0, 0xfc, 0x01, 0xd9, 0xb0, 0x81, 0x32, 0x9f, 0xb5, 0x55,
470f1535dc8Sdjm 0xde, 0x6e, 0xf4, 0x60, 0x23, 0x7d, 0xff, 0x8b, 0xe4, 0xba,
47159919d1cStb },
47259919d1cStb .order = {
473ecf6283eStb 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
474ecf6283eStb 0xff, 0xff, 0x80, 0x00, 0x00, 0xcf, 0xa7, 0xe8, 0x59, 0x43,
475ecf6283eStb 0x77, 0xd4, 0x14, 0xc0, 0x38, 0x21, 0xbc, 0x58, 0x20, 0x63,
47659919d1cStb },
4775650a0e1Sdjm };
4785650a0e1Sdjm
479f67ac449Stedu static const struct {
48059919d1cStb uint8_t seed[20];
48159919d1cStb uint8_t p[30];
48259919d1cStb uint8_t a[30];
48359919d1cStb uint8_t b[30];
48459919d1cStb uint8_t x[30];
48559919d1cStb uint8_t y[30];
48659919d1cStb uint8_t order[30];
48759919d1cStb } _EC_X9_62_PRIME_239V3 = {
48859919d1cStb .seed = {
489ecf6283eStb 0x7d, 0x73, 0x74, 0x16, 0x8f, 0xfe, 0x34, 0x71, 0xb6, 0x0a,
490ecf6283eStb 0x85, 0x76, 0x86, 0xa1, 0x94, 0x75, 0xd3, 0xbf, 0xa2, 0xff,
49159919d1cStb },
49259919d1cStb .p = {
493ecf6283eStb 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
494ecf6283eStb 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
495ecf6283eStb 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
49659919d1cStb },
49759919d1cStb .a = {
498ecf6283eStb 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
499ecf6283eStb 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
500ecf6283eStb 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfc,
50159919d1cStb },
50259919d1cStb .b = {
503ecf6283eStb 0x25, 0x57, 0x05, 0xfa, 0x2a, 0x30, 0x66, 0x54, 0xb1, 0xf4,
504ecf6283eStb 0xcb, 0x03, 0xd6, 0xa7, 0x50, 0xa3, 0x0c, 0x25, 0x01, 0x02,
505ecf6283eStb 0xd4, 0x98, 0x87, 0x17, 0xd9, 0xba, 0x15, 0xab, 0x6d, 0x3e,
50659919d1cStb },
50759919d1cStb .x = {
508ecf6283eStb 0x67, 0x68, 0xae, 0x8e, 0x18, 0xbb, 0x92, 0xcf, 0xcf, 0x00,
509ecf6283eStb 0x5c, 0x94, 0x9a, 0xa2, 0xc6, 0xd9, 0x48, 0x53, 0xd0, 0xe6,
510ecf6283eStb 0x60, 0xbb, 0xf8, 0x54, 0xb1, 0xc9, 0x50, 0x5f, 0xe9, 0x5a,
51159919d1cStb },
51259919d1cStb .y = {
51301938560Stb 0x16, 0x07, 0xe6, 0x89, 0x8f, 0x39, 0x0c, 0x06, 0xbc, 0x1d,
514f1535dc8Sdjm 0x55, 0x2b, 0xad, 0x22, 0x6f, 0x3b, 0x6f, 0xcf, 0xe4, 0x8b,
515f1535dc8Sdjm 0x6e, 0x81, 0x84, 0x99, 0xaf, 0x18, 0xe3, 0xed, 0x6c, 0xf3,
51659919d1cStb },
51759919d1cStb .order = {
518ecf6283eStb 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
519ecf6283eStb 0xff, 0xff, 0x7f, 0xff, 0xff, 0x97, 0x5d, 0xeb, 0x41, 0xb3,
520ecf6283eStb 0xa6, 0x05, 0x7c, 0x3c, 0x43, 0x21, 0x46, 0x52, 0x65, 0x51,
52159919d1cStb },
5225650a0e1Sdjm };
5235650a0e1Sdjm
524f67ac449Stedu static const struct {
52559919d1cStb uint8_t seed[20];
52659919d1cStb uint8_t p[32];
52759919d1cStb uint8_t a[32];
52859919d1cStb uint8_t b[32];
52959919d1cStb uint8_t x[32];
53059919d1cStb uint8_t y[32];
53159919d1cStb uint8_t order[32];
53259919d1cStb } _EC_X9_62_PRIME_256V1 = {
53359919d1cStb .seed = {
534ecf6283eStb 0xc4, 0x9d, 0x36, 0x08, 0x86, 0xe7, 0x04, 0x93, 0x6a, 0x66,
535ecf6283eStb 0x78, 0xe1, 0x13, 0x9d, 0x26, 0xb7, 0x81, 0x9f, 0x7e, 0x90,
53659919d1cStb },
53759919d1cStb .p = {
538ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
539f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
540ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
541ecf6283eStb 0xff, 0xff,
54259919d1cStb },
54359919d1cStb .a = {
544ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
545f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
546ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
547ecf6283eStb 0xff, 0xfc,
54859919d1cStb },
54959919d1cStb .b = {
550ecf6283eStb 0x5a, 0xc6, 0x35, 0xd8, 0xaa, 0x3a, 0x93, 0xe7, 0xb3, 0xeb,
551ecf6283eStb 0xbd, 0x55, 0x76, 0x98, 0x86, 0xbc, 0x65, 0x1d, 0x06, 0xb0,
552ecf6283eStb 0xcc, 0x53, 0xb0, 0xf6, 0x3b, 0xce, 0x3c, 0x3e, 0x27, 0xd2,
553ecf6283eStb 0x60, 0x4b,
55459919d1cStb },
55559919d1cStb .x = {
556ecf6283eStb 0x6b, 0x17, 0xd1, 0xf2, 0xe1, 0x2c, 0x42, 0x47, 0xf8, 0xbc,
557ecf6283eStb 0xe6, 0xe5, 0x63, 0xa4, 0x40, 0xf2, 0x77, 0x03, 0x7d, 0x81,
558ecf6283eStb 0x2d, 0xeb, 0x33, 0xa0, 0xf4, 0xa1, 0x39, 0x45, 0xd8, 0x98,
559ecf6283eStb 0xc2, 0x96,
56059919d1cStb },
56159919d1cStb .y = {
56201938560Stb 0x4f, 0xe3, 0x42, 0xe2, 0xfe, 0x1a, 0x7f, 0x9b, 0x8e, 0xe7,
563f1535dc8Sdjm 0xeb, 0x4a, 0x7c, 0x0f, 0x9e, 0x16, 0x2b, 0xce, 0x33, 0x57,
564f1535dc8Sdjm 0x6b, 0x31, 0x5e, 0xce, 0xcb, 0xb6, 0x40, 0x68, 0x37, 0xbf,
565f1535dc8Sdjm 0x51, 0xf5,
56659919d1cStb },
56759919d1cStb .order = {
568ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
569ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0xe6, 0xfa, 0xad,
570ecf6283eStb 0xa7, 0x17, 0x9e, 0x84, 0xf3, 0xb9, 0xca, 0xc2, 0xfc, 0x63,
57159919d1cStb 0x25, 0x51,
57259919d1cStb },
5735650a0e1Sdjm };
574f1535dc8Sdjm
5755650a0e1Sdjm /* the secg prime curves (minus the nist and x9.62 prime curves) */
576f67ac449Stedu static const struct {
57759919d1cStb uint8_t seed[20];
57859919d1cStb uint8_t p[14];
57959919d1cStb uint8_t a[14];
58059919d1cStb uint8_t b[14];
58159919d1cStb uint8_t x[14];
58259919d1cStb uint8_t y[14];
58359919d1cStb uint8_t order[14];
58459919d1cStb } _EC_SECG_PRIME_112R1 = {
58559919d1cStb .seed = {
586ecf6283eStb 0x00, 0xf5, 0x0b, 0x02, 0x8e, 0x4d, 0x69, 0x6e, 0x67, 0x68,
587ecf6283eStb 0x75, 0x61, 0x51, 0x75, 0x29, 0x04, 0x72, 0x78, 0x3f, 0xb1,
58859919d1cStb },
58959919d1cStb .p = {
590ecf6283eStb 0xdb, 0x7c, 0x2a, 0xbf, 0x62, 0xe3, 0x5e, 0x66, 0x80, 0x76,
591ecf6283eStb 0xbe, 0xad, 0x20, 0x8b,
59259919d1cStb },
59359919d1cStb .a = {
594ecf6283eStb 0xdb, 0x7c, 0x2a, 0xbf, 0x62, 0xe3, 0x5e, 0x66, 0x80, 0x76,
595ecf6283eStb 0xbe, 0xad, 0x20, 0x88,
59659919d1cStb },
59759919d1cStb .b = {
598ecf6283eStb 0x65, 0x9e, 0xf8, 0xba, 0x04, 0x39, 0x16, 0xee, 0xde, 0x89,
599ecf6283eStb 0x11, 0x70, 0x2b, 0x22,
60059919d1cStb },
60159919d1cStb .x = {
602ecf6283eStb 0x09, 0x48, 0x72, 0x39, 0x99, 0x5a, 0x5e, 0xe7, 0x6b, 0x55,
603ecf6283eStb 0xf9, 0xc2, 0xf0, 0x98,
60459919d1cStb },
60559919d1cStb .y = {
60601938560Stb 0xa8, 0x9c, 0xe5, 0xaf, 0x87, 0x24, 0xc0, 0xa2, 0x3e, 0x0e,
607f1535dc8Sdjm 0x0f, 0xf7, 0x75, 0x00,
60859919d1cStb },
60959919d1cStb .order = {
610ecf6283eStb 0xdb, 0x7c, 0x2a, 0xbf, 0x62, 0xe3, 0x5e, 0x76, 0x28, 0xdf,
611ecf6283eStb 0xac, 0x65, 0x61, 0xc5,
61259919d1cStb },
6135650a0e1Sdjm };
6145650a0e1Sdjm
615f67ac449Stedu static const struct {
61659919d1cStb uint8_t seed[20];
61759919d1cStb uint8_t p[14];
61859919d1cStb uint8_t a[14];
61959919d1cStb uint8_t b[14];
62059919d1cStb uint8_t x[14];
62159919d1cStb uint8_t y[14];
62259919d1cStb uint8_t order[14];
62359919d1cStb } _EC_SECG_PRIME_112R2 = {
62459919d1cStb .seed = {
625ecf6283eStb 0x00, 0x27, 0x57, 0xa1, 0x11, 0x4d, 0x69, 0x6e, 0x67, 0x68,
626ecf6283eStb 0x75, 0x61, 0x51, 0x75, 0x53, 0x16, 0xc0, 0x5e, 0x0b, 0xd4,
62759919d1cStb },
62859919d1cStb .p = {
629ecf6283eStb 0xdb, 0x7c, 0x2a, 0xbf, 0x62, 0xe3, 0x5e, 0x66, 0x80, 0x76,
630ecf6283eStb 0xbe, 0xad, 0x20, 0x8b,
63159919d1cStb },
63259919d1cStb .a = {
633ecf6283eStb 0x61, 0x27, 0xc2, 0x4c, 0x05, 0xf3, 0x8a, 0x0a, 0xaa, 0xf6,
634ecf6283eStb 0x5c, 0x0e, 0xf0, 0x2c,
63559919d1cStb },
63659919d1cStb .b = {
637ecf6283eStb 0x51, 0xde, 0xf1, 0x81, 0x5d, 0xb5, 0xed, 0x74, 0xfc, 0xc3,
638ecf6283eStb 0x4c, 0x85, 0xd7, 0x09,
63959919d1cStb },
64059919d1cStb .x = {
641ecf6283eStb 0x4b, 0xa3, 0x0a, 0xb5, 0xe8, 0x92, 0xb4, 0xe1, 0x64, 0x9d,
642ecf6283eStb 0xd0, 0x92, 0x86, 0x43,
64359919d1cStb },
64459919d1cStb .y = {
64501938560Stb 0xad, 0xcd, 0x46, 0xf5, 0x88, 0x2e, 0x37, 0x47, 0xde, 0xf3,
646f1535dc8Sdjm 0x6e, 0x95, 0x6e, 0x97,
64759919d1cStb },
64859919d1cStb .order = {
649ecf6283eStb 0x36, 0xdf, 0x0a, 0xaf, 0xd8, 0xb8, 0xd7, 0x59, 0x7c, 0xa1,
650ecf6283eStb 0x05, 0x20, 0xd0, 0x4b,
65159919d1cStb },
6525650a0e1Sdjm };
6535650a0e1Sdjm
654f67ac449Stedu static const struct {
65559919d1cStb uint8_t seed[20];
65659919d1cStb uint8_t p[16];
65759919d1cStb uint8_t a[16];
65859919d1cStb uint8_t b[16];
65959919d1cStb uint8_t x[16];
66059919d1cStb uint8_t y[16];
66159919d1cStb uint8_t order[16];
66259919d1cStb } _EC_SECG_PRIME_128R1 = {
66359919d1cStb .seed = {
664ecf6283eStb 0x00, 0x0e, 0x0d, 0x4d, 0x69, 0x6e, 0x67, 0x68, 0x75, 0x61,
665ecf6283eStb 0x51, 0x75, 0x0c, 0xc0, 0x3a, 0x44, 0x73, 0xd0, 0x36, 0x79,
66659919d1cStb },
66759919d1cStb .p = {
668ecf6283eStb 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
669ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
67059919d1cStb },
67159919d1cStb .a = {
672ecf6283eStb 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
673ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
67459919d1cStb },
67559919d1cStb .b = {
676ecf6283eStb 0xe8, 0x75, 0x79, 0xc1, 0x10, 0x79, 0xf4, 0x3d, 0xd8, 0x24,
677ecf6283eStb 0x99, 0x3c, 0x2c, 0xee, 0x5e, 0xd3,
67859919d1cStb },
67959919d1cStb .x = {
680ecf6283eStb 0x16, 0x1f, 0xf7, 0x52, 0x8b, 0x89, 0x9b, 0x2d, 0x0c, 0x28,
681ecf6283eStb 0x60, 0x7c, 0xa5, 0x2c, 0x5b, 0x86,
68259919d1cStb },
68359919d1cStb .y = {
68401938560Stb 0xcf, 0x5a, 0xc8, 0x39, 0x5b, 0xaf, 0xeb, 0x13, 0xc0, 0x2d,
685f1535dc8Sdjm 0xa2, 0x92, 0xdd, 0xed, 0x7a, 0x83,
68659919d1cStb },
68759919d1cStb .order = {
688ecf6283eStb 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x75, 0xa3,
689ecf6283eStb 0x0d, 0x1b, 0x90, 0x38, 0xa1, 0x15,
69059919d1cStb },
6915650a0e1Sdjm };
6925650a0e1Sdjm
693f67ac449Stedu static const struct {
69459919d1cStb uint8_t seed[20];
69559919d1cStb uint8_t p[16];
69659919d1cStb uint8_t a[16];
69759919d1cStb uint8_t b[16];
69859919d1cStb uint8_t x[16];
69959919d1cStb uint8_t y[16];
70059919d1cStb uint8_t order[16];
70159919d1cStb } _EC_SECG_PRIME_128R2 = {
70259919d1cStb .seed = {
703ecf6283eStb 0x00, 0x4d, 0x69, 0x6e, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75,
704ecf6283eStb 0x12, 0xd8, 0xf0, 0x34, 0x31, 0xfc, 0xe6, 0x3b, 0x88, 0xf4,
70559919d1cStb },
70659919d1cStb .p = {
707ecf6283eStb 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
708ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
70959919d1cStb },
71059919d1cStb .a = {
711ecf6283eStb 0xd6, 0x03, 0x19, 0x98, 0xd1, 0xb3, 0xbb, 0xfe, 0xbf, 0x59,
712ecf6283eStb 0xcc, 0x9b, 0xbf, 0xf9, 0xae, 0xe1,
71359919d1cStb },
71459919d1cStb .b = {
715ecf6283eStb 0x5e, 0xee, 0xfc, 0xa3, 0x80, 0xd0, 0x29, 0x19, 0xdc, 0x2c,
716ecf6283eStb 0x65, 0x58, 0xbb, 0x6d, 0x8a, 0x5d,
71759919d1cStb },
71859919d1cStb .x = {
719ecf6283eStb 0x7b, 0x6a, 0xa5, 0xd8, 0x5e, 0x57, 0x29, 0x83, 0xe6, 0xfb,
720ecf6283eStb 0x32, 0xa7, 0xcd, 0xeb, 0xc1, 0x40,
72159919d1cStb },
72259919d1cStb .y = {
72301938560Stb 0x27, 0xb6, 0x91, 0x6a, 0x89, 0x4d, 0x3a, 0xee, 0x71, 0x06,
724f1535dc8Sdjm 0xfe, 0x80, 0x5f, 0xc3, 0x4b, 0x44,
72559919d1cStb },
72659919d1cStb .order = {
727ecf6283eStb 0x3f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xbe, 0x00,
728ecf6283eStb 0x24, 0x72, 0x06, 0x13, 0xb5, 0xa3,
72959919d1cStb },
7305650a0e1Sdjm };
7315650a0e1Sdjm
732f67ac449Stedu static const struct {
73359919d1cStb uint8_t p[21];
73459919d1cStb uint8_t a[21];
73559919d1cStb uint8_t b[21];
73659919d1cStb uint8_t x[21];
73759919d1cStb uint8_t y[21];
73859919d1cStb uint8_t order[21];
73959919d1cStb } _EC_SECG_PRIME_160K1 = {
74059919d1cStb .p = {
741ecf6283eStb 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
742ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xac,
743f1535dc8Sdjm 0x73,
74459919d1cStb },
74559919d1cStb .a = {
74601938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
747f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
748f1535dc8Sdjm 0x00,
74959919d1cStb },
75059919d1cStb .b = {
75101938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
752f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
753f1535dc8Sdjm 0x07,
75459919d1cStb },
75559919d1cStb .x = {
756ecf6283eStb 0x00, 0x3b, 0x4c, 0x38, 0x2c, 0xe3, 0x7a, 0xa1, 0x92, 0xa4,
757ecf6283eStb 0x01, 0x9e, 0x76, 0x30, 0x36, 0xf4, 0xf5, 0xdd, 0x4d, 0x7e,
758ecf6283eStb 0xbb,
75959919d1cStb },
76059919d1cStb .y = {
76101938560Stb 0x00, 0x93, 0x8c, 0xf9, 0x35, 0x31, 0x8f, 0xdc, 0xed, 0x6b,
762f1535dc8Sdjm 0xc2, 0x82, 0x86, 0x53, 0x17, 0x33, 0xc3, 0xf0, 0x3c, 0x4f,
763f1535dc8Sdjm 0xee,
76459919d1cStb },
76559919d1cStb .order = {
76601938560Stb 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
767ecf6283eStb 0x01, 0xb8, 0xfa, 0x16, 0xdf, 0xab, 0x9a, 0xca, 0x16, 0xb6,
768ecf6283eStb 0xb3,
76959919d1cStb },
7705650a0e1Sdjm };
7715650a0e1Sdjm
772f67ac449Stedu static const struct {
77359919d1cStb uint8_t seed[20];
77459919d1cStb uint8_t p[21];
77559919d1cStb uint8_t a[21];
77659919d1cStb uint8_t b[21];
77759919d1cStb uint8_t x[21];
77859919d1cStb uint8_t y[21];
77959919d1cStb uint8_t order[21];
78059919d1cStb } _EC_SECG_PRIME_160R1 = {
78159919d1cStb .seed = {
782ecf6283eStb 0x10, 0x53, 0xcd, 0xe4, 0x2c, 0x14, 0xd6, 0x96, 0xe6, 0x76,
783ecf6283eStb 0x87, 0x56, 0x15, 0x17, 0x53, 0x3b, 0xf3, 0xf8, 0x33, 0x45,
78459919d1cStb },
78559919d1cStb .p = {
786ecf6283eStb 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
787ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff,
788ecf6283eStb 0xff,
78959919d1cStb },
79059919d1cStb .a = {
791ecf6283eStb 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
792ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff,
793ecf6283eStb 0xfc,
79459919d1cStb },
79559919d1cStb .b = {
796ecf6283eStb 0x00, 0x1c, 0x97, 0xbe, 0xfc, 0x54, 0xbd, 0x7a, 0x8b, 0x65,
797ecf6283eStb 0xac, 0xf8, 0x9f, 0x81, 0xd4, 0xd4, 0xad, 0xc5, 0x65, 0xfa,
798f1535dc8Sdjm 0x45,
79959919d1cStb },
80059919d1cStb .x = {
801ecf6283eStb 0x00, 0x4a, 0x96, 0xb5, 0x68, 0x8e, 0xf5, 0x73, 0x28, 0x46,
802ecf6283eStb 0x64, 0x69, 0x89, 0x68, 0xc3, 0x8b, 0xb9, 0x13, 0xcb, 0xfc,
803f1535dc8Sdjm 0x82,
80459919d1cStb },
80559919d1cStb .y = {
80601938560Stb 0x00, 0x23, 0xa6, 0x28, 0x55, 0x31, 0x68, 0x94, 0x7d, 0x59,
807f1535dc8Sdjm 0xdc, 0xc9, 0x12, 0x04, 0x23, 0x51, 0x37, 0x7a, 0xc5, 0xfb,
808f1535dc8Sdjm 0x32,
80959919d1cStb },
81059919d1cStb .order = {
81101938560Stb 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
812ecf6283eStb 0x01, 0xf4, 0xc8, 0xf9, 0x27, 0xae, 0xd3, 0xca, 0x75, 0x22,
81359919d1cStb 0x57,
81459919d1cStb },
8155650a0e1Sdjm };
8165650a0e1Sdjm
817f67ac449Stedu static const struct {
81859919d1cStb uint8_t seed[20];
81959919d1cStb uint8_t p[21];
82059919d1cStb uint8_t a[21];
82159919d1cStb uint8_t b[21];
82259919d1cStb uint8_t x[21];
82359919d1cStb uint8_t y[21];
82459919d1cStb uint8_t order[21];
82559919d1cStb } _EC_SECG_PRIME_160R2 = {
82659919d1cStb .seed = {
827ecf6283eStb 0xb9, 0x9b, 0x99, 0xb0, 0x99, 0xb3, 0x23, 0xe0, 0x27, 0x09,
828ecf6283eStb 0xa4, 0xd6, 0x96, 0xe6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x51,
82959919d1cStb },
83059919d1cStb .p = {
831ecf6283eStb 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
832ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xac,
833f1535dc8Sdjm 0x73,
83459919d1cStb },
83559919d1cStb .a = {
836ecf6283eStb 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
837ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xac,
838f1535dc8Sdjm 0x70,
83959919d1cStb },
84059919d1cStb .b = {
841ecf6283eStb 0x00, 0xb4, 0xe1, 0x34, 0xd3, 0xfb, 0x59, 0xeb, 0x8b, 0xab,
842ecf6283eStb 0x57, 0x27, 0x49, 0x04, 0x66, 0x4d, 0x5a, 0xf5, 0x03, 0x88,
843ecf6283eStb 0xba,
84459919d1cStb },
84559919d1cStb .x = {
846ecf6283eStb 0x00, 0x52, 0xdc, 0xb0, 0x34, 0x29, 0x3a, 0x11, 0x7e, 0x1f,
847ecf6283eStb 0x4f, 0xf1, 0x1b, 0x30, 0xf7, 0x19, 0x9d, 0x31, 0x44, 0xce,
848ecf6283eStb 0x6d,
84959919d1cStb },
85059919d1cStb .y = {
85101938560Stb 0x00, 0xfe, 0xaf, 0xfe, 0xf2, 0xe3, 0x31, 0xf2, 0x96, 0xe0,
852f1535dc8Sdjm 0x71, 0xfa, 0x0d, 0xf9, 0x98, 0x2c, 0xfe, 0xa7, 0xd4, 0x3f,
853f1535dc8Sdjm 0x2e,
85459919d1cStb },
85559919d1cStb .order = {
85601938560Stb 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
857ecf6283eStb 0x00, 0x35, 0x1e, 0xe7, 0x86, 0xa8, 0x18, 0xf3, 0xa1, 0xa1,
858ecf6283eStb 0x6b,
85959919d1cStb },
8605650a0e1Sdjm };
8615650a0e1Sdjm
862f67ac449Stedu static const struct {
86359919d1cStb uint8_t p[24];
86459919d1cStb uint8_t a[24];
86559919d1cStb uint8_t b[24];
86659919d1cStb uint8_t x[24];
86759919d1cStb uint8_t y[24];
86859919d1cStb uint8_t order[24];
86959919d1cStb } _EC_SECG_PRIME_192K1 = {
87059919d1cStb .p = {
871ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
872ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
873ecf6283eStb 0xff, 0xff, 0xee, 0x37,
87459919d1cStb },
87559919d1cStb .a = {
87601938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
877f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
878f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00,
87959919d1cStb },
88059919d1cStb .b = {
88101938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
882f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
883f1535dc8Sdjm 0x00, 0x00, 0x00, 0x03,
88459919d1cStb },
88559919d1cStb .x = {
886ecf6283eStb 0xdb, 0x4f, 0xf1, 0x0e, 0xc0, 0x57, 0xe9, 0xae, 0x26, 0xb0,
887ecf6283eStb 0x7d, 0x02, 0x80, 0xb7, 0xf4, 0x34, 0x1d, 0xa5, 0xd1, 0xb1,
888ecf6283eStb 0xea, 0xe0, 0x6c, 0x7d,
88959919d1cStb },
89059919d1cStb .y = {
89101938560Stb 0x9b, 0x2f, 0x2f, 0x6d, 0x9c, 0x56, 0x28, 0xa7, 0x84, 0x41,
892f1535dc8Sdjm 0x63, 0xd0, 0x15, 0xbe, 0x86, 0x34, 0x40, 0x82, 0xaa, 0x88,
893f1535dc8Sdjm 0xd9, 0x5e, 0x2f, 0x9d,
89459919d1cStb },
89559919d1cStb .order = {
896ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
897ecf6283eStb 0xff, 0xfe, 0x26, 0xf2, 0xfc, 0x17, 0x0f, 0x69, 0x46, 0x6a,
898ecf6283eStb 0x74, 0xde, 0xfd, 0x8d,
89959919d1cStb },
9005650a0e1Sdjm };
9015650a0e1Sdjm
902f67ac449Stedu static const struct {
90359919d1cStb uint8_t p[29];
90459919d1cStb uint8_t a[29];
90559919d1cStb uint8_t b[29];
90659919d1cStb uint8_t x[29];
90759919d1cStb uint8_t y[29];
90859919d1cStb uint8_t order[29];
90959919d1cStb } _EC_SECG_PRIME_224K1 = {
91059919d1cStb .p = {
911ecf6283eStb 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
912ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
913ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xe5, 0x6d,
91459919d1cStb },
91559919d1cStb .a = {
91601938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
917f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
918f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91959919d1cStb },
92059919d1cStb .b = {
92101938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
922f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
923f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
92459919d1cStb },
92559919d1cStb .x = {
926ecf6283eStb 0x00, 0xa1, 0x45, 0x5b, 0x33, 0x4d, 0xf0, 0x99, 0xdf, 0x30,
927ecf6283eStb 0xfc, 0x28, 0xa1, 0x69, 0xa4, 0x67, 0xe9, 0xe4, 0x70, 0x75,
928ecf6283eStb 0xa9, 0x0f, 0x7e, 0x65, 0x0e, 0xb6, 0xb7, 0xa4, 0x5c,
92959919d1cStb },
93059919d1cStb .y = {
93101938560Stb 0x00, 0x7e, 0x08, 0x9f, 0xed, 0x7f, 0xba, 0x34, 0x42, 0x82,
932f1535dc8Sdjm 0xca, 0xfb, 0xd6, 0xf7, 0xe3, 0x19, 0xf7, 0xc0, 0xb0, 0xbd,
933f1535dc8Sdjm 0x59, 0xe2, 0xca, 0x4b, 0xdb, 0x55, 0x6d, 0x61, 0xa5,
93459919d1cStb },
93559919d1cStb .order = {
93601938560Stb 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
937ecf6283eStb 0x00, 0x00, 0x00, 0x00, 0x01, 0xdc, 0xe8, 0xd2, 0xec, 0x61,
938ecf6283eStb 0x84, 0xca, 0xf0, 0xa9, 0x71, 0x76, 0x9f, 0xb1, 0xf7,
93959919d1cStb },
9405650a0e1Sdjm };
9415650a0e1Sdjm
942f67ac449Stedu static const struct {
94359919d1cStb uint8_t p[32];
94459919d1cStb uint8_t a[32];
94559919d1cStb uint8_t b[32];
94659919d1cStb uint8_t x[32];
94759919d1cStb uint8_t y[32];
94859919d1cStb uint8_t order[32];
94959919d1cStb } _EC_SECG_PRIME_256K1 = {
95059919d1cStb .p = {
951ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
952ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
953ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
954ecf6283eStb 0xfc, 0x2f,
95559919d1cStb },
95659919d1cStb .a = {
95701938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
958f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
959f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
960f1535dc8Sdjm 0x00, 0x00,
96159919d1cStb },
96259919d1cStb .b = {
96301938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
964f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
965f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
966f1535dc8Sdjm 0x00, 0x07,
96759919d1cStb },
96859919d1cStb .x = {
969ecf6283eStb 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0,
970ecf6283eStb 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb,
971ecf6283eStb 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
972f1535dc8Sdjm 0x17, 0x98,
97359919d1cStb },
97459919d1cStb .y = {
97501938560Stb 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4,
976f1535dc8Sdjm 0xfb, 0xfc, 0x0e, 0x11, 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48,
977f1535dc8Sdjm 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
978f1535dc8Sdjm 0xd4, 0xb8,
97959919d1cStb },
98059919d1cStb .order = {
981ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
982ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6,
983ecf6283eStb 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36,
98459919d1cStb 0x41, 0x41,
98559919d1cStb },
9865650a0e1Sdjm };
9875650a0e1Sdjm
9885650a0e1Sdjm /* some wap/wtls curves */
989f67ac449Stedu static const struct {
99059919d1cStb uint8_t p[15];
99159919d1cStb uint8_t a[15];
99259919d1cStb uint8_t b[15];
99359919d1cStb uint8_t x[15];
99459919d1cStb uint8_t y[15];
99559919d1cStb uint8_t order[15];
99659919d1cStb } _EC_WTLS_8 = {
99759919d1cStb .p = {
998ecf6283eStb 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
999ecf6283eStb 0xff, 0xff, 0xff, 0xfd, 0xe7,
100059919d1cStb },
100159919d1cStb .a = {
100201938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1003f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00,
100459919d1cStb },
100559919d1cStb .b = {
100601938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1007f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x03,
100859919d1cStb },
100959919d1cStb .x = {
101001938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1011f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x01,
101259919d1cStb },
101359919d1cStb .y = {
101401938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1015f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x02,
101659919d1cStb },
101759919d1cStb .order = {
1018ecf6283eStb 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xec, 0xea,
1019ecf6283eStb 0x55, 0x1a, 0xd8, 0x37, 0xe9,
102059919d1cStb },
10215650a0e1Sdjm };
10225650a0e1Sdjm
1023f67ac449Stedu static const struct {
102459919d1cStb uint8_t p[21];
102559919d1cStb uint8_t a[21];
102659919d1cStb uint8_t b[21];
102759919d1cStb uint8_t x[21];
102859919d1cStb uint8_t y[21];
102959919d1cStb uint8_t order[21];
103059919d1cStb } _EC_WTLS_9 = {
103159919d1cStb .p = {
1032ecf6283eStb 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1033ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x80,
1034ecf6283eStb 0x8f,
103559919d1cStb },
103659919d1cStb .a = {
103701938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1038f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1039f1535dc8Sdjm 0x00,
104059919d1cStb },
104159919d1cStb .b = {
104201938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1043f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1044f1535dc8Sdjm 0x03,
104559919d1cStb },
104659919d1cStb .x = {
104701938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1048f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1049f1535dc8Sdjm 0x01,
105059919d1cStb },
105159919d1cStb .y = {
105201938560Stb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1053f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1054f1535dc8Sdjm 0x02,
105559919d1cStb },
105659919d1cStb .order = {
105701938560Stb 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1058ecf6283eStb 0x01, 0xcd, 0xc9, 0x8a, 0xe0, 0xe2, 0xde, 0x57, 0x4a, 0xbf,
105959919d1cStb 0x33,
106059919d1cStb },
10615650a0e1Sdjm };
10625650a0e1Sdjm
1063f67ac449Stedu static const struct {
106459919d1cStb uint8_t p[28];
106559919d1cStb uint8_t a[28];
106659919d1cStb uint8_t b[28];
106759919d1cStb uint8_t x[28];
106859919d1cStb uint8_t y[28];
106959919d1cStb uint8_t order[28];
107059919d1cStb } _EC_WTLS_12 = {
107159919d1cStb .p = {
1072ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1073ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
1074f1535dc8Sdjm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
107559919d1cStb },
107659919d1cStb .a = {
1077ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1078ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
1079ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
108059919d1cStb },
108159919d1cStb .b = {
1082ecf6283eStb 0xb4, 0x05, 0x0a, 0x85, 0x0c, 0x04, 0xb3, 0xab, 0xf5, 0x41,
1083ecf6283eStb 0x32, 0x56, 0x50, 0x44, 0xb0, 0xb7, 0xd7, 0xbf, 0xd8, 0xba,
1084ecf6283eStb 0x27, 0x0b, 0x39, 0x43, 0x23, 0x55, 0xff, 0xb4,
108559919d1cStb },
108659919d1cStb .x = {
1087ecf6283eStb 0xb7, 0x0e, 0x0c, 0xbd, 0x6b, 0xb4, 0xbf, 0x7f, 0x32, 0x13,
1088ecf6283eStb 0x90, 0xb9, 0x4a, 0x03, 0xc1, 0xd3, 0x56, 0xc2, 0x11, 0x22,
1089ecf6283eStb 0x34, 0x32, 0x80, 0xd6, 0x11, 0x5c, 0x1d, 0x21,
109059919d1cStb },
109159919d1cStb .y = {
109201938560Stb 0xbd, 0x37, 0x63, 0x88, 0xb5, 0xf7, 0x23, 0xfb, 0x4c, 0x22,
1093f1535dc8Sdjm 0xdf, 0xe6, 0xcd, 0x43, 0x75, 0xa0, 0x5a, 0x07, 0x47, 0x64,
1094f1535dc8Sdjm 0x44, 0xd5, 0x81, 0x99, 0x85, 0x00, 0x7e, 0x34,
109559919d1cStb },
109659919d1cStb .order = {
1097ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1098ecf6283eStb 0xff, 0xff, 0xff, 0xff, 0x16, 0xa2, 0xe0, 0xb8, 0xf0, 0x3e,
1099ecf6283eStb 0x13, 0xdd, 0x29, 0x45, 0x5c, 0x5c, 0x2a, 0x3d,
110059919d1cStb },
11015650a0e1Sdjm };
11025650a0e1Sdjm
1103f67ac449Stedu static const struct {
110459919d1cStb uint8_t p[20];
110559919d1cStb uint8_t a[20];
110659919d1cStb uint8_t b[20];
110759919d1cStb uint8_t x[20];
110859919d1cStb uint8_t y[20];
110959919d1cStb uint8_t order[20];
111059919d1cStb } _EC_brainpoolP160r1 = {
111159919d1cStb .p = {
1112ecf6283eStb 0xe9, 0x5e, 0x4a, 0x5f, 0x73, 0x70, 0x59, 0xdc, 0x60, 0xdf,
1113ecf6283eStb 0xc7, 0xad, 0x95, 0xb3, 0xd8, 0x13, 0x95, 0x15, 0x62, 0x0f,
111459919d1cStb },
111559919d1cStb .a = {
1116ecf6283eStb 0x34, 0x0e, 0x7b, 0xe2, 0xa2, 0x80, 0xeb, 0x74, 0xe2, 0xbe,
1117ecf6283eStb 0x61, 0xba, 0xda, 0x74, 0x5d, 0x97, 0xe8, 0xf7, 0xc3, 0x00,
111859919d1cStb },
111959919d1cStb .b = {
1120ecf6283eStb 0x1e, 0x58, 0x9a, 0x85, 0x95, 0x42, 0x34, 0x12, 0x13, 0x4f,
1121ecf6283eStb 0xaa, 0x2d, 0xbd, 0xec, 0x95, 0xc8, 0xd8, 0x67, 0x5e, 0x58,
112259919d1cStb },
112359919d1cStb .x = {
1124ecf6283eStb 0xbe, 0xd5, 0xaf, 0x16, 0xea, 0x3f, 0x6a, 0x4f, 0x62, 0x93,
1125ecf6283eStb 0x8c, 0x46, 0x31, 0xeb, 0x5a, 0xf7, 0xbd, 0xbc, 0xdb, 0xc3,
112659919d1cStb },
112759919d1cStb .y = {
1128ecf6283eStb 0x16, 0x67, 0xcb, 0x47, 0x7a, 0x1a, 0x8e, 0xc3, 0x38, 0xf9,
1129ecf6283eStb 0x47, 0x41, 0x66, 0x9c, 0x97, 0x63, 0x16, 0xda, 0x63, 0x21,
113059919d1cStb },
113159919d1cStb .order = {
1132ecf6283eStb 0xe9, 0x5e, 0x4a, 0x5f, 0x73, 0x70, 0x59, 0xdc, 0x60, 0xdf,
1133ecf6283eStb 0x59, 0x91, 0xd4, 0x50, 0x29, 0x40, 0x9e, 0x60, 0xfc, 0x09,
113459919d1cStb },
11359caf19c3Smiod };
11369caf19c3Smiod
1137f67ac449Stedu static const struct {
113859919d1cStb uint8_t p[20];
113959919d1cStb uint8_t a[20];
114059919d1cStb uint8_t b[20];
114159919d1cStb uint8_t x[20];
114259919d1cStb uint8_t y[20];
114359919d1cStb uint8_t order[20];
114459919d1cStb } _EC_brainpoolP160t1 = {
114559919d1cStb .p = {
1146ecf6283eStb 0xe9, 0x5e, 0x4a, 0x5f, 0x73, 0x70, 0x59, 0xdc, 0x60, 0xdf,
1147ecf6283eStb 0xc7, 0xad, 0x95, 0xb3, 0xd8, 0x13, 0x95, 0x15, 0x62, 0x0f,
114859919d1cStb },
114959919d1cStb .a = {
1150ecf6283eStb 0xe9, 0x5e, 0x4a, 0x5f, 0x73, 0x70, 0x59, 0xdc, 0x60, 0xdf,
1151ecf6283eStb 0xc7, 0xad, 0x95, 0xb3, 0xd8, 0x13, 0x95, 0x15, 0x62, 0x0c,
115259919d1cStb },
115359919d1cStb .b = {
1154ecf6283eStb 0x7a, 0x55, 0x6b, 0x6d, 0xae, 0x53, 0x5b, 0x7b, 0x51, 0xed,
1155ecf6283eStb 0x2c, 0x4d, 0x7d, 0xaa, 0x7a, 0x0b, 0x5c, 0x55, 0xf3, 0x80,
115659919d1cStb },
115759919d1cStb .x = {
1158ecf6283eStb 0xb1, 0x99, 0xb1, 0x3b, 0x9b, 0x34, 0xef, 0xc1, 0x39, 0x7e,
1159ecf6283eStb 0x64, 0xba, 0xeb, 0x05, 0xac, 0xc2, 0x65, 0xff, 0x23, 0x78,
116059919d1cStb },
116159919d1cStb .y = {
1162ecf6283eStb 0xad, 0xd6, 0x71, 0x8b, 0x7c, 0x7c, 0x19, 0x61, 0xf0, 0x99,
1163ecf6283eStb 0x1b, 0x84, 0x24, 0x43, 0x77, 0x21, 0x52, 0xc9, 0xe0, 0xad,
116459919d1cStb },
116559919d1cStb .order = {
1166ecf6283eStb 0xe9, 0x5e, 0x4a, 0x5f, 0x73, 0x70, 0x59, 0xdc, 0x60, 0xdf,
1167ecf6283eStb 0x59, 0x91, 0xd4, 0x50, 0x29, 0x40, 0x9e, 0x60, 0xfc, 0x09,
116859919d1cStb },
11699caf19c3Smiod };
11709caf19c3Smiod
1171f67ac449Stedu static const struct {
117259919d1cStb uint8_t p[24];
117359919d1cStb uint8_t a[24];
117459919d1cStb uint8_t b[24];
117559919d1cStb uint8_t x[24];
117659919d1cStb uint8_t y[24];
117759919d1cStb uint8_t order[24];
117859919d1cStb } _EC_brainpoolP192r1 = {
117959919d1cStb .p = {
1180ecf6283eStb 0xc3, 0x02, 0xf4, 0x1d, 0x93, 0x2a, 0x36, 0xcd, 0xa7, 0xa3,
1181ecf6283eStb 0x46, 0x30, 0x93, 0xd1, 0x8d, 0xb7, 0x8f, 0xce, 0x47, 0x6d,
1182ecf6283eStb 0xe1, 0xa8, 0x62, 0x97,
118359919d1cStb },
118459919d1cStb .a = {
1185ecf6283eStb 0x6a, 0x91, 0x17, 0x40, 0x76, 0xb1, 0xe0, 0xe1, 0x9c, 0x39,
1186ecf6283eStb 0xc0, 0x31, 0xfe, 0x86, 0x85, 0xc1, 0xca, 0xe0, 0x40, 0xe5,
1187ecf6283eStb 0xc6, 0x9a, 0x28, 0xef,
118859919d1cStb },
118959919d1cStb .b = {
1190ecf6283eStb 0x46, 0x9a, 0x28, 0xef, 0x7c, 0x28, 0xcc, 0xa3, 0xdc, 0x72,
1191ecf6283eStb 0x1d, 0x04, 0x4f, 0x44, 0x96, 0xbc, 0xca, 0x7e, 0xf4, 0x14,
1192ecf6283eStb 0x6f, 0xbf, 0x25, 0xc9,
119359919d1cStb },
119459919d1cStb .x = {
1195ecf6283eStb 0xc0, 0xa0, 0x64, 0x7e, 0xaa, 0xb6, 0xa4, 0x87, 0x53, 0xb0,
1196ecf6283eStb 0x33, 0xc5, 0x6c, 0xb0, 0xf0, 0x90, 0x0a, 0x2f, 0x5c, 0x48,
1197ecf6283eStb 0x53, 0x37, 0x5f, 0xd6,
119859919d1cStb },
119959919d1cStb .y = {
1200ecf6283eStb 0x14, 0xb6, 0x90, 0x86, 0x6a, 0xbd, 0x5b, 0xb8, 0x8b, 0x5f,
1201ecf6283eStb 0x48, 0x28, 0xc1, 0x49, 0x00, 0x02, 0xe6, 0x77, 0x3f, 0xa2,
1202ecf6283eStb 0xfa, 0x29, 0x9b, 0x8f,
120359919d1cStb },
120459919d1cStb .order = {
1205ecf6283eStb 0xc3, 0x02, 0xf4, 0x1d, 0x93, 0x2a, 0x36, 0xcd, 0xa7, 0xa3,
1206ecf6283eStb 0x46, 0x2f, 0x9e, 0x9e, 0x91, 0x6b, 0x5b, 0xe8, 0xf1, 0x02,
1207ecf6283eStb 0x9a, 0xc4, 0xac, 0xc1,
120859919d1cStb },
12099caf19c3Smiod };
12109caf19c3Smiod
1211f67ac449Stedu static const struct {
121259919d1cStb uint8_t p[24];
121359919d1cStb uint8_t a[24];
121459919d1cStb uint8_t b[24];
121559919d1cStb uint8_t x[24];
121659919d1cStb uint8_t y[24];
121759919d1cStb uint8_t order[24];
121859919d1cStb } _EC_brainpoolP192t1 = {
121959919d1cStb .p = {
1220ecf6283eStb 0xc3, 0x02, 0xf4, 0x1d, 0x93, 0x2a, 0x36, 0xcd, 0xa7, 0xa3,
1221ecf6283eStb 0x46, 0x30, 0x93, 0xd1, 0x8d, 0xb7, 0x8f, 0xce, 0x47, 0x6d,
1222ecf6283eStb 0xe1, 0xa8, 0x62, 0x97,
122359919d1cStb },
122459919d1cStb .a = {
1225ecf6283eStb 0xc3, 0x02, 0xf4, 0x1d, 0x93, 0x2a, 0x36, 0xcd, 0xa7, 0xa3,
1226ecf6283eStb 0x46, 0x30, 0x93, 0xd1, 0x8d, 0xb7, 0x8f, 0xce, 0x47, 0x6d,
1227ecf6283eStb 0xe1, 0xa8, 0x62, 0x94,
122859919d1cStb },
122959919d1cStb .b = {
1230ecf6283eStb 0x13, 0xd5, 0x6f, 0xfa, 0xec, 0x78, 0x68, 0x1e, 0x68, 0xf9,
1231ecf6283eStb 0xde, 0xb4, 0x3b, 0x35, 0xbe, 0xc2, 0xfb, 0x68, 0x54, 0x2e,
1232ecf6283eStb 0x27, 0x89, 0x7b, 0x79,
123359919d1cStb },
123459919d1cStb .x = {
1235ecf6283eStb 0x3a, 0xe9, 0xe5, 0x8c, 0x82, 0xf6, 0x3c, 0x30, 0x28, 0x2e,
1236ecf6283eStb 0x1f, 0xe7, 0xbb, 0xf4, 0x3f, 0xa7, 0x2c, 0x44, 0x6a, 0xf6,
1237ecf6283eStb 0xf4, 0x61, 0x81, 0x29,
123859919d1cStb },
123959919d1cStb .y = {
1240ecf6283eStb 0x09, 0x7e, 0x2c, 0x56, 0x67, 0xc2, 0x22, 0x3a, 0x90, 0x2a,
1241ecf6283eStb 0xb5, 0xca, 0x44, 0x9d, 0x00, 0x84, 0xb7, 0xe5, 0xb3, 0xde,
1242ecf6283eStb 0x7c, 0xcc, 0x01, 0xc9,
124359919d1cStb },
124459919d1cStb .order = {
1245ecf6283eStb 0xc3, 0x02, 0xf4, 0x1d, 0x93, 0x2a, 0x36, 0xcd, 0xa7, 0xa3,
1246ecf6283eStb 0x46, 0x2f, 0x9e, 0x9e, 0x91, 0x6b, 0x5b, 0xe8, 0xf1, 0x02,
1247ecf6283eStb 0x9a, 0xc4, 0xac, 0xc1,
124859919d1cStb },
12499caf19c3Smiod };
12509caf19c3Smiod
1251f67ac449Stedu static const struct {
125259919d1cStb uint8_t p[28];
125359919d1cStb uint8_t a[28];
125459919d1cStb uint8_t b[28];
125559919d1cStb uint8_t x[28];
125659919d1cStb uint8_t y[28];
125759919d1cStb uint8_t order[28];
125859919d1cStb } _EC_brainpoolP224r1 = {
125959919d1cStb .p = {
1260ecf6283eStb 0xd7, 0xc1, 0x34, 0xaa, 0x26, 0x43, 0x66, 0x86, 0x2a, 0x18,
1261ecf6283eStb 0x30, 0x25, 0x75, 0xd1, 0xd7, 0x87, 0xb0, 0x9f, 0x07, 0x57,
1262ecf6283eStb 0x97, 0xda, 0x89, 0xf5, 0x7e, 0xc8, 0xc0, 0xff,
126359919d1cStb },
126459919d1cStb .a = {
1265ecf6283eStb 0x68, 0xa5, 0xe6, 0x2c, 0xa9, 0xce, 0x6c, 0x1c, 0x29, 0x98,
1266ecf6283eStb 0x03, 0xa6, 0xc1, 0x53, 0x0b, 0x51, 0x4e, 0x18, 0x2a, 0xd8,
1267ecf6283eStb 0xb0, 0x04, 0x2a, 0x59, 0xca, 0xd2, 0x9f, 0x43,
126859919d1cStb },
126959919d1cStb .b = {
1270ecf6283eStb 0x25, 0x80, 0xf6, 0x3c, 0xcf, 0xe4, 0x41, 0x38, 0x87, 0x07,
1271ecf6283eStb 0x13, 0xb1, 0xa9, 0x23, 0x69, 0xe3, 0x3e, 0x21, 0x35, 0xd2,
1272ecf6283eStb 0x66, 0xdb, 0xb3, 0x72, 0x38, 0x6c, 0x40, 0x0b,
127359919d1cStb },
127459919d1cStb .x = {
1275ecf6283eStb 0x0d, 0x90, 0x29, 0xad, 0x2c, 0x7e, 0x5c, 0xf4, 0x34, 0x08,
1276ecf6283eStb 0x23, 0xb2, 0xa8, 0x7d, 0xc6, 0x8c, 0x9e, 0x4c, 0xe3, 0x17,
1277ecf6283eStb 0x4c, 0x1e, 0x6e, 0xfd, 0xee, 0x12, 0xc0, 0x7d,
127859919d1cStb },
127959919d1cStb .y = {
1280ecf6283eStb 0x58, 0xaa, 0x56, 0xf7, 0x72, 0xc0, 0x72, 0x6f, 0x24, 0xc6,
1281ecf6283eStb 0xb8, 0x9e, 0x4e, 0xcd, 0xac, 0x24, 0x35, 0x4b, 0x9e, 0x99,
1282ecf6283eStb 0xca, 0xa3, 0xf6, 0xd3, 0x76, 0x14, 0x02, 0xcd,
128359919d1cStb },
128459919d1cStb .order = {
1285ecf6283eStb 0xd7, 0xc1, 0x34, 0xaa, 0x26, 0x43, 0x66, 0x86, 0x2a, 0x18,
1286ecf6283eStb 0x30, 0x25, 0x75, 0xd0, 0xfb, 0x98, 0xd1, 0x16, 0xbc, 0x4b,
1287ecf6283eStb 0x6d, 0xde, 0xbc, 0xa3, 0xa5, 0xa7, 0x93, 0x9f,
128859919d1cStb },
12899caf19c3Smiod };
12909caf19c3Smiod
1291f67ac449Stedu static const struct {
129259919d1cStb uint8_t p[28];
129359919d1cStb uint8_t a[28];
129459919d1cStb uint8_t b[28];
129559919d1cStb uint8_t x[28];
129659919d1cStb uint8_t y[28];
129759919d1cStb uint8_t order[28];
129859919d1cStb } _EC_brainpoolP224t1 = {
129959919d1cStb .p = {
1300ecf6283eStb 0xd7, 0xc1, 0x34, 0xaa, 0x26, 0x43, 0x66, 0x86, 0x2a, 0x18,
1301ecf6283eStb 0x30, 0x25, 0x75, 0xd1, 0xd7, 0x87, 0xb0, 0x9f, 0x07, 0x57,
1302ecf6283eStb 0x97, 0xda, 0x89, 0xf5, 0x7e, 0xc8, 0xc0, 0xff,
130359919d1cStb },
130459919d1cStb .a = {
1305ecf6283eStb 0xd7, 0xc1, 0x34, 0xaa, 0x26, 0x43, 0x66, 0x86, 0x2a, 0x18,
1306ecf6283eStb 0x30, 0x25, 0x75, 0xd1, 0xd7, 0x87, 0xb0, 0x9f, 0x07, 0x57,
1307ecf6283eStb 0x97, 0xda, 0x89, 0xf5, 0x7e, 0xc8, 0xc0, 0xfc,
130859919d1cStb },
130959919d1cStb .b = {
1310ecf6283eStb 0x4b, 0x33, 0x7d, 0x93, 0x41, 0x04, 0xcd, 0x7b, 0xef, 0x27,
1311ecf6283eStb 0x1b, 0xf6, 0x0c, 0xed, 0x1e, 0xd2, 0x0d, 0xa1, 0x4c, 0x08,
1312ecf6283eStb 0xb3, 0xbb, 0x64, 0xf1, 0x8a, 0x60, 0x88, 0x8d,
131359919d1cStb },
131459919d1cStb .x = {
1315ecf6283eStb 0x6a, 0xb1, 0xe3, 0x44, 0xce, 0x25, 0xff, 0x38, 0x96, 0x42,
1316ecf6283eStb 0x4e, 0x7f, 0xfe, 0x14, 0x76, 0x2e, 0xcb, 0x49, 0xf8, 0x92,
1317ecf6283eStb 0x8a, 0xc0, 0xc7, 0x60, 0x29, 0xb4, 0xd5, 0x80,
131859919d1cStb },
131959919d1cStb .y = {
1320ecf6283eStb 0x03, 0x74, 0xe9, 0xf5, 0x14, 0x3e, 0x56, 0x8c, 0xd2, 0x3f,
1321ecf6283eStb 0x3f, 0x4d, 0x7c, 0x0d, 0x4b, 0x1e, 0x41, 0xc8, 0xcc, 0x0d,
1322ecf6283eStb 0x1c, 0x6a, 0xbd, 0x5f, 0x1a, 0x46, 0xdb, 0x4c,
132359919d1cStb },
132459919d1cStb .order = {
1325ecf6283eStb 0xd7, 0xc1, 0x34, 0xaa, 0x26, 0x43, 0x66, 0x86, 0x2a, 0x18,
1326ecf6283eStb 0x30, 0x25, 0x75, 0xd0, 0xfb, 0x98, 0xd1, 0x16, 0xbc, 0x4b,
1327ecf6283eStb 0x6d, 0xde, 0xbc, 0xa3, 0xa5, 0xa7, 0x93, 0x9f,
132859919d1cStb },
13299caf19c3Smiod };
13309caf19c3Smiod
1331f67ac449Stedu static const struct {
133259919d1cStb uint8_t p[32];
133359919d1cStb uint8_t a[32];
133459919d1cStb uint8_t b[32];
133559919d1cStb uint8_t x[32];
133659919d1cStb uint8_t y[32];
133759919d1cStb uint8_t order[32];
133859919d1cStb } _EC_brainpoolP256r1 = {
133959919d1cStb .p = {
1340ecf6283eStb 0xa9, 0xfb, 0x57, 0xdb, 0xa1, 0xee, 0xa9, 0xbc, 0x3e, 0x66,
1341ecf6283eStb 0x0a, 0x90, 0x9d, 0x83, 0x8d, 0x72, 0x6e, 0x3b, 0xf6, 0x23,
1342ecf6283eStb 0xd5, 0x26, 0x20, 0x28, 0x20, 0x13, 0x48, 0x1d, 0x1f, 0x6e,
13439caf19c3Smiod 0x53, 0x77,
134459919d1cStb },
134559919d1cStb .a = {
1346ecf6283eStb 0x7d, 0x5a, 0x09, 0x75, 0xfc, 0x2c, 0x30, 0x57, 0xee, 0xf6,
1347ecf6283eStb 0x75, 0x30, 0x41, 0x7a, 0xff, 0xe7, 0xfb, 0x80, 0x55, 0xc1,
1348ecf6283eStb 0x26, 0xdc, 0x5c, 0x6c, 0xe9, 0x4a, 0x4b, 0x44, 0xf3, 0x30,
1349ecf6283eStb 0xb5, 0xd9,
135059919d1cStb },
135159919d1cStb .b = {
1352ecf6283eStb 0x26, 0xdc, 0x5c, 0x6c, 0xe9, 0x4a, 0x4b, 0x44, 0xf3, 0x30,
1353ecf6283eStb 0xb5, 0xd9, 0xbb, 0xd7, 0x7c, 0xbf, 0x95, 0x84, 0x16, 0x29,
1354ecf6283eStb 0x5c, 0xf7, 0xe1, 0xce, 0x6b, 0xcc, 0xdc, 0x18, 0xff, 0x8c,
1355ecf6283eStb 0x07, 0xb6,
135659919d1cStb },
135759919d1cStb .x = {
1358ecf6283eStb 0x8b, 0xd2, 0xae, 0xb9, 0xcb, 0x7e, 0x57, 0xcb, 0x2c, 0x4b,
1359ecf6283eStb 0x48, 0x2f, 0xfc, 0x81, 0xb7, 0xaf, 0xb9, 0xde, 0x27, 0xe1,
1360ecf6283eStb 0xe3, 0xbd, 0x23, 0xc2, 0x3a, 0x44, 0x53, 0xbd, 0x9a, 0xce,
13619caf19c3Smiod 0x32, 0x62,
136259919d1cStb },
136359919d1cStb .y = {
1364ecf6283eStb 0x54, 0x7e, 0xf8, 0x35, 0xc3, 0xda, 0xc4, 0xfd, 0x97, 0xf8,
1365ecf6283eStb 0x46, 0x1a, 0x14, 0x61, 0x1d, 0xc9, 0xc2, 0x77, 0x45, 0x13,
1366ecf6283eStb 0x2d, 0xed, 0x8e, 0x54, 0x5c, 0x1d, 0x54, 0xc7, 0x2f, 0x04,
13679caf19c3Smiod 0x69, 0x97,
136859919d1cStb },
136959919d1cStb .order = {
1370ecf6283eStb 0xa9, 0xfb, 0x57, 0xdb, 0xa1, 0xee, 0xa9, 0xbc, 0x3e, 0x66,
1371ecf6283eStb 0x0a, 0x90, 0x9d, 0x83, 0x8d, 0x71, 0x8c, 0x39, 0x7a, 0xa3,
1372ecf6283eStb 0xb5, 0x61, 0xa6, 0xf7, 0x90, 0x1e, 0x0e, 0x82, 0x97, 0x48,
1373ecf6283eStb 0x56, 0xa7,
137459919d1cStb },
13759caf19c3Smiod };
13769caf19c3Smiod
1377f67ac449Stedu static const struct {
137859919d1cStb uint8_t p[32];
137959919d1cStb uint8_t a[32];
138059919d1cStb uint8_t b[32];
138159919d1cStb uint8_t x[32];
138259919d1cStb uint8_t y[32];
138359919d1cStb uint8_t order[32];
138459919d1cStb } _EC_brainpoolP256t1 = {
138559919d1cStb .p = {
1386ecf6283eStb 0xa9, 0xfb, 0x57, 0xdb, 0xa1, 0xee, 0xa9, 0xbc, 0x3e, 0x66,
1387ecf6283eStb 0x0a, 0x90, 0x9d, 0x83, 0x8d, 0x72, 0x6e, 0x3b, 0xf6, 0x23,
1388ecf6283eStb 0xd5, 0x26, 0x20, 0x28, 0x20, 0x13, 0x48, 0x1d, 0x1f, 0x6e,
13899caf19c3Smiod 0x53, 0x77,
139059919d1cStb },
139159919d1cStb .a = {
1392ecf6283eStb 0xa9, 0xfb, 0x57, 0xdb, 0xa1, 0xee, 0xa9, 0xbc, 0x3e, 0x66,
1393ecf6283eStb 0x0a, 0x90, 0x9d, 0x83, 0x8d, 0x72, 0x6e, 0x3b, 0xf6, 0x23,
1394ecf6283eStb 0xd5, 0x26, 0x20, 0x28, 0x20, 0x13, 0x48, 0x1d, 0x1f, 0x6e,
13959caf19c3Smiod 0x53, 0x74,
139659919d1cStb },
139759919d1cStb .b = {
1398ecf6283eStb 0x66, 0x2c, 0x61, 0xc4, 0x30, 0xd8, 0x4e, 0xa4, 0xfe, 0x66,
1399ecf6283eStb 0xa7, 0x73, 0x3d, 0x0b, 0x76, 0xb7, 0xbf, 0x93, 0xeb, 0xc4,
1400ecf6283eStb 0xaf, 0x2f, 0x49, 0x25, 0x6a, 0xe5, 0x81, 0x01, 0xfe, 0xe9,
1401ecf6283eStb 0x2b, 0x04,
140259919d1cStb },
140359919d1cStb .x = {
1404ecf6283eStb 0xa3, 0xe8, 0xeb, 0x3c, 0xc1, 0xcf, 0xe7, 0xb7, 0x73, 0x22,
1405ecf6283eStb 0x13, 0xb2, 0x3a, 0x65, 0x61, 0x49, 0xaf, 0xa1, 0x42, 0xc4,
1406ecf6283eStb 0x7a, 0xaf, 0xbc, 0x2b, 0x79, 0xa1, 0x91, 0x56, 0x2e, 0x13,
1407ecf6283eStb 0x05, 0xf4,
140859919d1cStb },
140959919d1cStb .y = {
1410ecf6283eStb 0x2d, 0x99, 0x6c, 0x82, 0x34, 0x39, 0xc5, 0x6d, 0x7f, 0x7b,
1411ecf6283eStb 0x22, 0xe1, 0x46, 0x44, 0x41, 0x7e, 0x69, 0xbc, 0xb6, 0xde,
1412ecf6283eStb 0x39, 0xd0, 0x27, 0x00, 0x1d, 0xab, 0xe8, 0xf3, 0x5b, 0x25,
1413ecf6283eStb 0xc9, 0xbe,
141459919d1cStb },
141559919d1cStb .order = {
1416ecf6283eStb 0xa9, 0xfb, 0x57, 0xdb, 0xa1, 0xee, 0xa9, 0xbc, 0x3e, 0x66,
1417ecf6283eStb 0x0a, 0x90, 0x9d, 0x83, 0x8d, 0x71, 0x8c, 0x39, 0x7a, 0xa3,
1418ecf6283eStb 0xb5, 0x61, 0xa6, 0xf7, 0x90, 0x1e, 0x0e, 0x82, 0x97, 0x48,
1419ecf6283eStb 0x56, 0xa7,
142059919d1cStb },
14219caf19c3Smiod };
14229caf19c3Smiod
1423f67ac449Stedu static const struct {
142459919d1cStb uint8_t p[40];
142559919d1cStb uint8_t a[40];
142659919d1cStb uint8_t b[40];
142759919d1cStb uint8_t x[40];
142859919d1cStb uint8_t y[40];
142959919d1cStb uint8_t order[40];
143059919d1cStb } _EC_brainpoolP320r1 = {
143159919d1cStb .p = {
1432ecf6283eStb 0xd3, 0x5e, 0x47, 0x20, 0x36, 0xbc, 0x4f, 0xb7, 0xe1, 0x3c,
1433ecf6283eStb 0x78, 0x5e, 0xd2, 0x01, 0xe0, 0x65, 0xf9, 0x8f, 0xcf, 0xa6,
1434ecf6283eStb 0xf6, 0xf4, 0x0d, 0xef, 0x4f, 0x92, 0xb9, 0xec, 0x78, 0x93,
1435ecf6283eStb 0xec, 0x28, 0xfc, 0xd4, 0x12, 0xb1, 0xf1, 0xb3, 0x2e, 0x27,
143659919d1cStb },
143759919d1cStb .a = {
1438ecf6283eStb 0x3e, 0xe3, 0x0b, 0x56, 0x8f, 0xba, 0xb0, 0xf8, 0x83, 0xcc,
1439ecf6283eStb 0xeb, 0xd4, 0x6d, 0x3f, 0x3b, 0xb8, 0xa2, 0xa7, 0x35, 0x13,
1440ecf6283eStb 0xf5, 0xeb, 0x79, 0xda, 0x66, 0x19, 0x0e, 0xb0, 0x85, 0xff,
1441ecf6283eStb 0xa9, 0xf4, 0x92, 0xf3, 0x75, 0xa9, 0x7d, 0x86, 0x0e, 0xb4,
144259919d1cStb },
144359919d1cStb .b = {
1444ecf6283eStb 0x52, 0x08, 0x83, 0x94, 0x9d, 0xfd, 0xbc, 0x42, 0xd3, 0xad,
1445ecf6283eStb 0x19, 0x86, 0x40, 0x68, 0x8a, 0x6f, 0xe1, 0x3f, 0x41, 0x34,
1446ecf6283eStb 0x95, 0x54, 0xb4, 0x9a, 0xcc, 0x31, 0xdc, 0xcd, 0x88, 0x45,
1447ecf6283eStb 0x39, 0x81, 0x6f, 0x5e, 0xb4, 0xac, 0x8f, 0xb1, 0xf1, 0xa6,
144859919d1cStb },
144959919d1cStb .x = {
1450ecf6283eStb 0x43, 0xbd, 0x7e, 0x9a, 0xfb, 0x53, 0xd8, 0xb8, 0x52, 0x89,
1451ecf6283eStb 0xbc, 0xc4, 0x8e, 0xe5, 0xbf, 0xe6, 0xf2, 0x01, 0x37, 0xd1,
1452ecf6283eStb 0x0a, 0x08, 0x7e, 0xb6, 0xe7, 0x87, 0x1e, 0x2a, 0x10, 0xa5,
1453ecf6283eStb 0x99, 0xc7, 0x10, 0xaf, 0x8d, 0x0d, 0x39, 0xe2, 0x06, 0x11,
145459919d1cStb },
145559919d1cStb .y = {
1456ecf6283eStb 0x14, 0xfd, 0xd0, 0x55, 0x45, 0xec, 0x1c, 0xc8, 0xab, 0x40,
1457ecf6283eStb 0x93, 0x24, 0x7f, 0x77, 0x27, 0x5e, 0x07, 0x43, 0xff, 0xed,
1458ecf6283eStb 0x11, 0x71, 0x82, 0xea, 0xa9, 0xc7, 0x78, 0x77, 0xaa, 0xac,
1459ecf6283eStb 0x6a, 0xc7, 0xd3, 0x52, 0x45, 0xd1, 0x69, 0x2e, 0x8e, 0xe1,
146059919d1cStb },
146159919d1cStb .order = {
1462ecf6283eStb 0xd3, 0x5e, 0x47, 0x20, 0x36, 0xbc, 0x4f, 0xb7, 0xe1, 0x3c,
1463ecf6283eStb 0x78, 0x5e, 0xd2, 0x01, 0xe0, 0x65, 0xf9, 0x8f, 0xcf, 0xa5,
1464ecf6283eStb 0xb6, 0x8f, 0x12, 0xa3, 0x2d, 0x48, 0x2e, 0xc7, 0xee, 0x86,
1465ecf6283eStb 0x58, 0xe9, 0x86, 0x91, 0x55, 0x5b, 0x44, 0xc5, 0x93, 0x11,
146659919d1cStb },
14679caf19c3Smiod };
14689caf19c3Smiod
1469f67ac449Stedu static const struct {
147059919d1cStb uint8_t p[40];
147159919d1cStb uint8_t a[40];
147259919d1cStb uint8_t b[40];
147359919d1cStb uint8_t x[40];
147459919d1cStb uint8_t y[40];
147559919d1cStb uint8_t order[40];
147659919d1cStb } _EC_brainpoolP320t1 = {
147759919d1cStb .p = {
1478ecf6283eStb 0xd3, 0x5e, 0x47, 0x20, 0x36, 0xbc, 0x4f, 0xb7, 0xe1, 0x3c,
1479ecf6283eStb 0x78, 0x5e, 0xd2, 0x01, 0xe0, 0x65, 0xf9, 0x8f, 0xcf, 0xa6,
1480ecf6283eStb 0xf6, 0xf4, 0x0d, 0xef, 0x4f, 0x92, 0xb9, 0xec, 0x78, 0x93,
1481ecf6283eStb 0xec, 0x28, 0xfc, 0xd4, 0x12, 0xb1, 0xf1, 0xb3, 0x2e, 0x27,
148259919d1cStb },
148359919d1cStb .a = {
1484ecf6283eStb 0xd3, 0x5e, 0x47, 0x20, 0x36, 0xbc, 0x4f, 0xb7, 0xe1, 0x3c,
1485ecf6283eStb 0x78, 0x5e, 0xd2, 0x01, 0xe0, 0x65, 0xf9, 0x8f, 0xcf, 0xa6,
1486ecf6283eStb 0xf6, 0xf4, 0x0d, 0xef, 0x4f, 0x92, 0xb9, 0xec, 0x78, 0x93,
1487ecf6283eStb 0xec, 0x28, 0xfc, 0xd4, 0x12, 0xb1, 0xf1, 0xb3, 0x2e, 0x24,
148859919d1cStb },
148959919d1cStb .b = {
1490ecf6283eStb 0xa7, 0xf5, 0x61, 0xe0, 0x38, 0xeb, 0x1e, 0xd5, 0x60, 0xb3,
1491ecf6283eStb 0xd1, 0x47, 0xdb, 0x78, 0x20, 0x13, 0x06, 0x4c, 0x19, 0xf2,
1492ecf6283eStb 0x7e, 0xd2, 0x7c, 0x67, 0x80, 0xaa, 0xf7, 0x7f, 0xb8, 0xa5,
1493ecf6283eStb 0x47, 0xce, 0xb5, 0xb4, 0xfe, 0xf4, 0x22, 0x34, 0x03, 0x53,
149459919d1cStb },
149559919d1cStb .x = {
1496ecf6283eStb 0x92, 0x5b, 0xe9, 0xfb, 0x01, 0xaf, 0xc6, 0xfb, 0x4d, 0x3e,
1497ecf6283eStb 0x7d, 0x49, 0x90, 0x01, 0x0f, 0x81, 0x34, 0x08, 0xab, 0x10,
1498ecf6283eStb 0x6c, 0x4f, 0x09, 0xcb, 0x7e, 0xe0, 0x78, 0x68, 0xcc, 0x13,
1499ecf6283eStb 0x6f, 0xff, 0x33, 0x57, 0xf6, 0x24, 0xa2, 0x1b, 0xed, 0x52,
150059919d1cStb },
150159919d1cStb .y = {
1502ecf6283eStb 0x63, 0xba, 0x3a, 0x7a, 0x27, 0x48, 0x3e, 0xbf, 0x66, 0x71,
1503ecf6283eStb 0xdb, 0xef, 0x7a, 0xbb, 0x30, 0xeb, 0xee, 0x08, 0x4e, 0x58,
1504ecf6283eStb 0xa0, 0xb0, 0x77, 0xad, 0x42, 0xa5, 0xa0, 0x98, 0x9d, 0x1e,
1505ecf6283eStb 0xe7, 0x1b, 0x1b, 0x9b, 0xc0, 0x45, 0x5f, 0xb0, 0xd2, 0xc3,
150659919d1cStb },
150759919d1cStb .order = {
1508ecf6283eStb 0xd3, 0x5e, 0x47, 0x20, 0x36, 0xbc, 0x4f, 0xb7, 0xe1, 0x3c,
1509ecf6283eStb 0x78, 0x5e, 0xd2, 0x01, 0xe0, 0x65, 0xf9, 0x8f, 0xcf, 0xa5,
1510ecf6283eStb 0xb6, 0x8f, 0x12, 0xa3, 0x2d, 0x48, 0x2e, 0xc7, 0xee, 0x86,
1511ecf6283eStb 0x58, 0xe9, 0x86, 0x91, 0x55, 0x5b, 0x44, 0xc5, 0x93, 0x11,
151259919d1cStb },
15139caf19c3Smiod };
15149caf19c3Smiod
1515f67ac449Stedu static const struct {
151659919d1cStb uint8_t p[48];
151759919d1cStb uint8_t a[48];
151859919d1cStb uint8_t b[48];
151959919d1cStb uint8_t x[48];
152059919d1cStb uint8_t y[48];
152159919d1cStb uint8_t order[48];
152259919d1cStb } _EC_brainpoolP384r1 = {
152359919d1cStb .p = {
1524ecf6283eStb 0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28, 0x0f, 0x5d,
1525ecf6283eStb 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf, 0x15, 0x2f, 0x71, 0x09,
1526ecf6283eStb 0xed, 0x54, 0x56, 0xb4, 0x12, 0xb1, 0xda, 0x19, 0x7f, 0xb7,
1527ecf6283eStb 0x11, 0x23, 0xac, 0xd3, 0xa7, 0x29, 0x90, 0x1d, 0x1a, 0x71,
1528ecf6283eStb 0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xec, 0x53,
152959919d1cStb },
153059919d1cStb .a = {
1531ecf6283eStb 0x7b, 0xc3, 0x82, 0xc6, 0x3d, 0x8c, 0x15, 0x0c, 0x3c, 0x72,
1532ecf6283eStb 0x08, 0x0a, 0xce, 0x05, 0xaf, 0xa0, 0xc2, 0xbe, 0xa2, 0x8e,
1533ecf6283eStb 0x4f, 0xb2, 0x27, 0x87, 0x13, 0x91, 0x65, 0xef, 0xba, 0x91,
1534ecf6283eStb 0xf9, 0x0f, 0x8a, 0xa5, 0x81, 0x4a, 0x50, 0x3a, 0xd4, 0xeb,
1535ecf6283eStb 0x04, 0xa8, 0xc7, 0xdd, 0x22, 0xce, 0x28, 0x26,
153659919d1cStb },
153759919d1cStb .b = {
1538ecf6283eStb 0x04, 0xa8, 0xc7, 0xdd, 0x22, 0xce, 0x28, 0x26, 0x8b, 0x39,
1539ecf6283eStb 0xb5, 0x54, 0x16, 0xf0, 0x44, 0x7c, 0x2f, 0xb7, 0x7d, 0xe1,
1540ecf6283eStb 0x07, 0xdc, 0xd2, 0xa6, 0x2e, 0x88, 0x0e, 0xa5, 0x3e, 0xeb,
1541ecf6283eStb 0x62, 0xd5, 0x7c, 0xb4, 0x39, 0x02, 0x95, 0xdb, 0xc9, 0x94,
1542ecf6283eStb 0x3a, 0xb7, 0x86, 0x96, 0xfa, 0x50, 0x4c, 0x11,
154359919d1cStb },
154459919d1cStb .x = {
1545ecf6283eStb 0x1d, 0x1c, 0x64, 0xf0, 0x68, 0xcf, 0x45, 0xff, 0xa2, 0xa6,
1546ecf6283eStb 0x3a, 0x81, 0xb7, 0xc1, 0x3f, 0x6b, 0x88, 0x47, 0xa3, 0xe7,
1547ecf6283eStb 0x7e, 0xf1, 0x4f, 0xe3, 0xdb, 0x7f, 0xca, 0xfe, 0x0c, 0xbd,
1548ecf6283eStb 0x10, 0xe8, 0xe8, 0x26, 0xe0, 0x34, 0x36, 0xd6, 0x46, 0xaa,
1549ecf6283eStb 0xef, 0x87, 0xb2, 0xe2, 0x47, 0xd4, 0xaf, 0x1e,
155059919d1cStb },
155159919d1cStb .y = {
1552ecf6283eStb 0x8a, 0xbe, 0x1d, 0x75, 0x20, 0xf9, 0xc2, 0xa4, 0x5c, 0xb1,
1553ecf6283eStb 0xeb, 0x8e, 0x95, 0xcf, 0xd5, 0x52, 0x62, 0xb7, 0x0b, 0x29,
1554ecf6283eStb 0xfe, 0xec, 0x58, 0x64, 0xe1, 0x9c, 0x05, 0x4f, 0xf9, 0x91,
1555ecf6283eStb 0x29, 0x28, 0x0e, 0x46, 0x46, 0x21, 0x77, 0x91, 0x81, 0x11,
1556ecf6283eStb 0x42, 0x82, 0x03, 0x41, 0x26, 0x3c, 0x53, 0x15,
155759919d1cStb },
155859919d1cStb .order = {
1559ecf6283eStb 0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28, 0x0f, 0x5d,
1560ecf6283eStb 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf, 0x15, 0x2f, 0x71, 0x09,
1561ecf6283eStb 0xed, 0x54, 0x56, 0xb3, 0x1f, 0x16, 0x6e, 0x6c, 0xac, 0x04,
1562ecf6283eStb 0x25, 0xa7, 0xcf, 0x3a, 0xb6, 0xaf, 0x6b, 0x7f, 0xc3, 0x10,
1563ecf6283eStb 0x3b, 0x88, 0x32, 0x02, 0xe9, 0x04, 0x65, 0x65,
156459919d1cStb },
15659caf19c3Smiod };
15669caf19c3Smiod
1567f67ac449Stedu static const struct {
156859919d1cStb uint8_t p[48];
156959919d1cStb uint8_t a[48];
157059919d1cStb uint8_t b[48];
157159919d1cStb uint8_t x[48];
157259919d1cStb uint8_t y[48];
157359919d1cStb uint8_t order[48];
157459919d1cStb } _EC_brainpoolP384t1 = {
157559919d1cStb .p = {
1576ecf6283eStb 0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28, 0x0f, 0x5d,
1577ecf6283eStb 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf, 0x15, 0x2f, 0x71, 0x09,
1578ecf6283eStb 0xed, 0x54, 0x56, 0xb4, 0x12, 0xb1, 0xda, 0x19, 0x7f, 0xb7,
1579ecf6283eStb 0x11, 0x23, 0xac, 0xd3, 0xa7, 0x29, 0x90, 0x1d, 0x1a, 0x71,
1580ecf6283eStb 0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xec, 0x53,
158159919d1cStb },
158259919d1cStb .a = {
1583ecf6283eStb 0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28, 0x0f, 0x5d,
1584ecf6283eStb 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf, 0x15, 0x2f, 0x71, 0x09,
1585ecf6283eStb 0xed, 0x54, 0x56, 0xb4, 0x12, 0xb1, 0xda, 0x19, 0x7f, 0xb7,
1586ecf6283eStb 0x11, 0x23, 0xac, 0xd3, 0xa7, 0x29, 0x90, 0x1d, 0x1a, 0x71,
1587ecf6283eStb 0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xec, 0x50,
158859919d1cStb },
158959919d1cStb .b = {
1590ecf6283eStb 0x7f, 0x51, 0x9e, 0xad, 0xa7, 0xbd, 0xa8, 0x1b, 0xd8, 0x26,
1591ecf6283eStb 0xdb, 0xa6, 0x47, 0x91, 0x0f, 0x8c, 0x4b, 0x93, 0x46, 0xed,
1592ecf6283eStb 0x8c, 0xcd, 0xc6, 0x4e, 0x4b, 0x1a, 0xbd, 0x11, 0x75, 0x6d,
1593ecf6283eStb 0xce, 0x1d, 0x20, 0x74, 0xaa, 0x26, 0x3b, 0x88, 0x80, 0x5c,
1594ecf6283eStb 0xed, 0x70, 0x35, 0x5a, 0x33, 0xb4, 0x71, 0xee,
159559919d1cStb },
159659919d1cStb .x = {
1597ecf6283eStb 0x18, 0xde, 0x98, 0xb0, 0x2d, 0xb9, 0xa3, 0x06, 0xf2, 0xaf,
1598ecf6283eStb 0xcd, 0x72, 0x35, 0xf7, 0x2a, 0x81, 0x9b, 0x80, 0xab, 0x12,
1599ecf6283eStb 0xeb, 0xd6, 0x53, 0x17, 0x24, 0x76, 0xfe, 0xcd, 0x46, 0x2a,
1600ecf6283eStb 0xab, 0xff, 0xc4, 0xff, 0x19, 0x1b, 0x94, 0x6a, 0x5f, 0x54,
1601ecf6283eStb 0xd8, 0xd0, 0xaa, 0x2f, 0x41, 0x88, 0x08, 0xcc,
160259919d1cStb },
160359919d1cStb .y = {
1604ecf6283eStb 0x25, 0xab, 0x05, 0x69, 0x62, 0xd3, 0x06, 0x51, 0xa1, 0x14,
1605ecf6283eStb 0xaf, 0xd2, 0x75, 0x5a, 0xd3, 0x36, 0x74, 0x7f, 0x93, 0x47,
1606ecf6283eStb 0x5b, 0x7a, 0x1f, 0xca, 0x3b, 0x88, 0xf2, 0xb6, 0xa2, 0x08,
1607ecf6283eStb 0xcc, 0xfe, 0x46, 0x94, 0x08, 0x58, 0x4d, 0xc2, 0xb2, 0x91,
1608ecf6283eStb 0x26, 0x75, 0xbf, 0x5b, 0x9e, 0x58, 0x29, 0x28,
160959919d1cStb },
161059919d1cStb .order = {
1611ecf6283eStb 0x8c, 0xb9, 0x1e, 0x82, 0xa3, 0x38, 0x6d, 0x28, 0x0f, 0x5d,
1612ecf6283eStb 0x6f, 0x7e, 0x50, 0xe6, 0x41, 0xdf, 0x15, 0x2f, 0x71, 0x09,
1613ecf6283eStb 0xed, 0x54, 0x56, 0xb3, 0x1f, 0x16, 0x6e, 0x6c, 0xac, 0x04,
1614ecf6283eStb 0x25, 0xa7, 0xcf, 0x3a, 0xb6, 0xaf, 0x6b, 0x7f, 0xc3, 0x10,
1615ecf6283eStb 0x3b, 0x88, 0x32, 0x02, 0xe9, 0x04, 0x65, 0x65,
161659919d1cStb },
16179caf19c3Smiod };
16189caf19c3Smiod
1619f67ac449Stedu static const struct {
162059919d1cStb uint8_t p[64];
162159919d1cStb uint8_t a[64];
162259919d1cStb uint8_t b[64];
162359919d1cStb uint8_t x[64];
162459919d1cStb uint8_t y[64];
162559919d1cStb uint8_t order[64];
162659919d1cStb } _EC_brainpoolP512r1 = {
162759919d1cStb .p = {
1628ecf6283eStb 0xaa, 0xdd, 0x9d, 0xb8, 0xdb, 0xe9, 0xc4, 0x8b, 0x3f, 0xd4,
1629ecf6283eStb 0xe6, 0xae, 0x33, 0xc9, 0xfc, 0x07, 0xcb, 0x30, 0x8d, 0xb3,
1630ecf6283eStb 0xb3, 0xc9, 0xd2, 0x0e, 0xd6, 0x63, 0x9c, 0xca, 0x70, 0x33,
1631ecf6283eStb 0x08, 0x71, 0x7d, 0x4d, 0x9b, 0x00, 0x9b, 0xc6, 0x68, 0x42,
1632ecf6283eStb 0xae, 0xcd, 0xa1, 0x2a, 0xe6, 0xa3, 0x80, 0xe6, 0x28, 0x81,
1633ecf6283eStb 0xff, 0x2f, 0x2d, 0x82, 0xc6, 0x85, 0x28, 0xaa, 0x60, 0x56,
1634ecf6283eStb 0x58, 0x3a, 0x48, 0xf3,
163559919d1cStb },
163659919d1cStb .a = {
1637ecf6283eStb 0x78, 0x30, 0xa3, 0x31, 0x8b, 0x60, 0x3b, 0x89, 0xe2, 0x32,
1638ecf6283eStb 0x71, 0x45, 0xac, 0x23, 0x4c, 0xc5, 0x94, 0xcb, 0xdd, 0x8d,
1639ecf6283eStb 0x3d, 0xf9, 0x16, 0x10, 0xa8, 0x34, 0x41, 0xca, 0xea, 0x98,
1640ecf6283eStb 0x63, 0xbc, 0x2d, 0xed, 0x5d, 0x5a, 0xa8, 0x25, 0x3a, 0xa1,
1641ecf6283eStb 0x0a, 0x2e, 0xf1, 0xc9, 0x8b, 0x9a, 0xc8, 0xb5, 0x7f, 0x11,
1642ecf6283eStb 0x17, 0xa7, 0x2b, 0xf2, 0xc7, 0xb9, 0xe7, 0xc1, 0xac, 0x4d,
1643ecf6283eStb 0x77, 0xfc, 0x94, 0xca,
164459919d1cStb },
164559919d1cStb .b = {
1646ecf6283eStb 0x3d, 0xf9, 0x16, 0x10, 0xa8, 0x34, 0x41, 0xca, 0xea, 0x98,
1647ecf6283eStb 0x63, 0xbc, 0x2d, 0xed, 0x5d, 0x5a, 0xa8, 0x25, 0x3a, 0xa1,
1648ecf6283eStb 0x0a, 0x2e, 0xf1, 0xc9, 0x8b, 0x9a, 0xc8, 0xb5, 0x7f, 0x11,
1649ecf6283eStb 0x17, 0xa7, 0x2b, 0xf2, 0xc7, 0xb9, 0xe7, 0xc1, 0xac, 0x4d,
1650ecf6283eStb 0x77, 0xfc, 0x94, 0xca, 0xdc, 0x08, 0x3e, 0x67, 0x98, 0x40,
1651ecf6283eStb 0x50, 0xb7, 0x5e, 0xba, 0xe5, 0xdd, 0x28, 0x09, 0xbd, 0x63,
1652ecf6283eStb 0x80, 0x16, 0xf7, 0x23,
165359919d1cStb },
165459919d1cStb .x = {
1655ecf6283eStb 0x81, 0xae, 0xe4, 0xbd, 0xd8, 0x2e, 0xd9, 0x64, 0x5a, 0x21,
1656ecf6283eStb 0x32, 0x2e, 0x9c, 0x4c, 0x6a, 0x93, 0x85, 0xed, 0x9f, 0x70,
1657ecf6283eStb 0xb5, 0xd9, 0x16, 0xc1, 0xb4, 0x3b, 0x62, 0xee, 0xf4, 0xd0,
1658ecf6283eStb 0x09, 0x8e, 0xff, 0x3b, 0x1f, 0x78, 0xe2, 0xd0, 0xd4, 0x8d,
1659ecf6283eStb 0x50, 0xd1, 0x68, 0x7b, 0x93, 0xb9, 0x7d, 0x5f, 0x7c, 0x6d,
1660ecf6283eStb 0x50, 0x47, 0x40, 0x6a, 0x5e, 0x68, 0x8b, 0x35, 0x22, 0x09,
1661ecf6283eStb 0xbc, 0xb9, 0xf8, 0x22,
166259919d1cStb },
166359919d1cStb .y = {
1664ecf6283eStb 0x7d, 0xde, 0x38, 0x5d, 0x56, 0x63, 0x32, 0xec, 0xc0, 0xea,
1665ecf6283eStb 0xbf, 0xa9, 0xcf, 0x78, 0x22, 0xfd, 0xf2, 0x09, 0xf7, 0x00,
1666ecf6283eStb 0x24, 0xa5, 0x7b, 0x1a, 0xa0, 0x00, 0xc5, 0x5b, 0x88, 0x1f,
1667ecf6283eStb 0x81, 0x11, 0xb2, 0xdc, 0xde, 0x49, 0x4a, 0x5f, 0x48, 0x5e,
1668ecf6283eStb 0x5b, 0xca, 0x4b, 0xd8, 0x8a, 0x27, 0x63, 0xae, 0xd1, 0xca,
1669ecf6283eStb 0x2b, 0x2f, 0xa8, 0xf0, 0x54, 0x06, 0x78, 0xcd, 0x1e, 0x0f,
1670ecf6283eStb 0x3a, 0xd8, 0x08, 0x92,
167159919d1cStb },
167259919d1cStb .order = {
1673ecf6283eStb 0xaa, 0xdd, 0x9d, 0xb8, 0xdb, 0xe9, 0xc4, 0x8b, 0x3f, 0xd4,
1674ecf6283eStb 0xe6, 0xae, 0x33, 0xc9, 0xfc, 0x07, 0xcb, 0x30, 0x8d, 0xb3,
1675ecf6283eStb 0xb3, 0xc9, 0xd2, 0x0e, 0xd6, 0x63, 0x9c, 0xca, 0x70, 0x33,
1676ecf6283eStb 0x08, 0x70, 0x55, 0x3e, 0x5c, 0x41, 0x4c, 0xa9, 0x26, 0x19,
1677ecf6283eStb 0x41, 0x86, 0x61, 0x19, 0x7f, 0xac, 0x10, 0x47, 0x1d, 0xb1,
1678ecf6283eStb 0xd3, 0x81, 0x08, 0x5d, 0xda, 0xdd, 0xb5, 0x87, 0x96, 0x82,
1679ecf6283eStb 0x9c, 0xa9, 0x00, 0x69,
168059919d1cStb },
16819caf19c3Smiod };
16829caf19c3Smiod
1683f67ac449Stedu static const struct {
168459919d1cStb uint8_t p[64];
168559919d1cStb uint8_t a[64];
168659919d1cStb uint8_t b[64];
168759919d1cStb uint8_t x[64];
168859919d1cStb uint8_t y[64];
168959919d1cStb uint8_t order[64];
169059919d1cStb } _EC_brainpoolP512t1 = {
169159919d1cStb .p = {
1692ecf6283eStb 0xaa, 0xdd, 0x9d, 0xb8, 0xdb, 0xe9, 0xc4, 0x8b, 0x3f, 0xd4,
1693ecf6283eStb 0xe6, 0xae, 0x33, 0xc9, 0xfc, 0x07, 0xcb, 0x30, 0x8d, 0xb3,
1694ecf6283eStb 0xb3, 0xc9, 0xd2, 0x0e, 0xd6, 0x63, 0x9c, 0xca, 0x70, 0x33,
1695ecf6283eStb 0x08, 0x71, 0x7d, 0x4d, 0x9b, 0x00, 0x9b, 0xc6, 0x68, 0x42,
1696ecf6283eStb 0xae, 0xcd, 0xa1, 0x2a, 0xe6, 0xa3, 0x80, 0xe6, 0x28, 0x81,
1697ecf6283eStb 0xff, 0x2f, 0x2d, 0x82, 0xc6, 0x85, 0x28, 0xaa, 0x60, 0x56,
1698ecf6283eStb 0x58, 0x3a, 0x48, 0xf3,
169959919d1cStb },
170059919d1cStb .a = {
1701ecf6283eStb 0xaa, 0xdd, 0x9d, 0xb8, 0xdb, 0xe9, 0xc4, 0x8b, 0x3f, 0xd4,
1702ecf6283eStb 0xe6, 0xae, 0x33, 0xc9, 0xfc, 0x07, 0xcb, 0x30, 0x8d, 0xb3,
1703ecf6283eStb 0xb3, 0xc9, 0xd2, 0x0e, 0xd6, 0x63, 0x9c, 0xca, 0x70, 0x33,
1704ecf6283eStb 0x08, 0x71, 0x7d, 0x4d, 0x9b, 0x00, 0x9b, 0xc6, 0x68, 0x42,
1705ecf6283eStb 0xae, 0xcd, 0xa1, 0x2a, 0xe6, 0xa3, 0x80, 0xe6, 0x28, 0x81,
1706ecf6283eStb 0xff, 0x2f, 0x2d, 0x82, 0xc6, 0x85, 0x28, 0xaa, 0x60, 0x56,
1707ecf6283eStb 0x58, 0x3a, 0x48, 0xf0,
170859919d1cStb },
170959919d1cStb .b = {
1710ecf6283eStb 0x7c, 0xbb, 0xbc, 0xf9, 0x44, 0x1c, 0xfa, 0xb7, 0x6e, 0x18,
1711ecf6283eStb 0x90, 0xe4, 0x68, 0x84, 0xea, 0xe3, 0x21, 0xf7, 0x0c, 0x0b,
1712ecf6283eStb 0xcb, 0x49, 0x81, 0x52, 0x78, 0x97, 0x50, 0x4b, 0xec, 0x3e,
1713ecf6283eStb 0x36, 0xa6, 0x2b, 0xcd, 0xfa, 0x23, 0x04, 0x97, 0x65, 0x40,
1714ecf6283eStb 0xf6, 0x45, 0x00, 0x85, 0xf2, 0xda, 0xe1, 0x45, 0xc2, 0x25,
1715ecf6283eStb 0x53, 0xb4, 0x65, 0x76, 0x36, 0x89, 0x18, 0x0e, 0xa2, 0x57,
1716ecf6283eStb 0x18, 0x67, 0x42, 0x3e,
171759919d1cStb },
171859919d1cStb .x = {
1719ecf6283eStb 0x64, 0x0e, 0xce, 0x5c, 0x12, 0x78, 0x87, 0x17, 0xb9, 0xc1,
1720ecf6283eStb 0xba, 0x06, 0xcb, 0xc2, 0xa6, 0xfe, 0xba, 0x85, 0x84, 0x24,
1721ecf6283eStb 0x58, 0xc5, 0x6d, 0xde, 0x9d, 0xb1, 0x75, 0x8d, 0x39, 0xc0,
1722ecf6283eStb 0x31, 0x3d, 0x82, 0xba, 0x51, 0x73, 0x5c, 0xdb, 0x3e, 0xa4,
1723ecf6283eStb 0x99, 0xaa, 0x77, 0xa7, 0xd6, 0x94, 0x3a, 0x64, 0xf7, 0xa3,
1724ecf6283eStb 0xf2, 0x5f, 0xe2, 0x6f, 0x06, 0xb5, 0x1b, 0xaa, 0x26, 0x96,
1725ecf6283eStb 0xfa, 0x90, 0x35, 0xda,
172659919d1cStb },
172759919d1cStb .y = {
1728ecf6283eStb 0x5b, 0x53, 0x4b, 0xd5, 0x95, 0xf5, 0xaf, 0x0f, 0xa2, 0xc8,
1729ecf6283eStb 0x92, 0x37, 0x6c, 0x84, 0xac, 0xe1, 0xbb, 0x4e, 0x30, 0x19,
1730ecf6283eStb 0xb7, 0x16, 0x34, 0xc0, 0x11, 0x31, 0x15, 0x9c, 0xae, 0x03,
1731ecf6283eStb 0xce, 0xe9, 0xd9, 0x93, 0x21, 0x84, 0xbe, 0xef, 0x21, 0x6b,
1732ecf6283eStb 0xd7, 0x1d, 0xf2, 0xda, 0xdf, 0x86, 0xa6, 0x27, 0x30, 0x6e,
1733ecf6283eStb 0xcf, 0xf9, 0x6d, 0xbb, 0x8b, 0xac, 0xe1, 0x98, 0xb6, 0x1e,
1734ecf6283eStb 0x00, 0xf8, 0xb3, 0x32,
173559919d1cStb },
173659919d1cStb .order = {
1737ecf6283eStb 0xaa, 0xdd, 0x9d, 0xb8, 0xdb, 0xe9, 0xc4, 0x8b, 0x3f, 0xd4,
1738ecf6283eStb 0xe6, 0xae, 0x33, 0xc9, 0xfc, 0x07, 0xcb, 0x30, 0x8d, 0xb3,
1739ecf6283eStb 0xb3, 0xc9, 0xd2, 0x0e, 0xd6, 0x63, 0x9c, 0xca, 0x70, 0x33,
1740ecf6283eStb 0x08, 0x70, 0x55, 0x3e, 0x5c, 0x41, 0x4c, 0xa9, 0x26, 0x19,
1741ecf6283eStb 0x41, 0x86, 0x61, 0x19, 0x7f, 0xac, 0x10, 0x47, 0x1d, 0xb1,
1742ecf6283eStb 0xd3, 0x81, 0x08, 0x5d, 0xda, 0xdd, 0xb5, 0x87, 0x96, 0x82,
1743ecf6283eStb 0x9c, 0xa9, 0x00, 0x69,
174459919d1cStb },
17459caf19c3Smiod };
17469caf19c3Smiod
1747f67ac449Stedu static const struct {
174859919d1cStb uint8_t p[32];
174959919d1cStb uint8_t a[32];
175059919d1cStb uint8_t b[32];
175159919d1cStb uint8_t x[32];
175259919d1cStb uint8_t y[32];
175359919d1cStb uint8_t order[32];
175459919d1cStb } _EC_FRP256v1 = {
175559919d1cStb .p = {
1756ecf6283eStb 0xf1, 0xfd, 0x17, 0x8c, 0x0b, 0x3a, 0xd5, 0x8f, 0x10, 0x12,
1757ecf6283eStb 0x6d, 0xe8, 0xce, 0x42, 0x43, 0x5b, 0x39, 0x61, 0xad, 0xbc,
1758ecf6283eStb 0xab, 0xc8, 0xca, 0x6d, 0xe8, 0xfc, 0xf3, 0x53, 0xd8, 0x6e,
1759ecf6283eStb 0x9c, 0x03,
176059919d1cStb },
176159919d1cStb .a = {
1762ecf6283eStb 0xf1, 0xfd, 0x17, 0x8c, 0x0b, 0x3a, 0xd5, 0x8f, 0x10, 0x12,
1763ecf6283eStb 0x6d, 0xe8, 0xce, 0x42, 0x43, 0x5b, 0x39, 0x61, 0xad, 0xbc,
1764ecf6283eStb 0xab, 0xc8, 0xca, 0x6d, 0xe8, 0xfc, 0xf3, 0x53, 0xd8, 0x6e,
1765ecf6283eStb 0x9c, 0x00,
176659919d1cStb },
176759919d1cStb .b = {
1768ecf6283eStb 0xee, 0x35, 0x3f, 0xca, 0x54, 0x28, 0xa9, 0x30, 0x0d, 0x4a,
1769ecf6283eStb 0xba, 0x75, 0x4a, 0x44, 0xc0, 0x0f, 0xdf, 0xec, 0x0c, 0x9a,
1770ecf6283eStb 0xe4, 0xb1, 0xa1, 0x80, 0x30, 0x75, 0xed, 0x96, 0x7b, 0x7b,
1771ecf6283eStb 0xb7, 0x3f,
177259919d1cStb },
177359919d1cStb .x = {
1774ecf6283eStb 0xb6, 0xb3, 0xd4, 0xc3, 0x56, 0xc1, 0x39, 0xeb, 0x31, 0x18,
1775ecf6283eStb 0x3d, 0x47, 0x49, 0xd4, 0x23, 0x95, 0x8c, 0x27, 0xd2, 0xdc,
1776ecf6283eStb 0xaf, 0x98, 0xb7, 0x01, 0x64, 0xc9, 0x7a, 0x2d, 0xd9, 0x8f,
1777ecf6283eStb 0x5c, 0xff,
177859919d1cStb },
177959919d1cStb .y = {
1780ecf6283eStb 0x61, 0x42, 0xe0, 0xf7, 0xc8, 0xb2, 0x04, 0x91, 0x1f, 0x92,
1781ecf6283eStb 0x71, 0xf0, 0xf3, 0xec, 0xef, 0x8c, 0x27, 0x01, 0xc3, 0x07,
1782ecf6283eStb 0xe8, 0xe4, 0xc9, 0xe1, 0x83, 0x11, 0x5a, 0x15, 0x54, 0x06,
1783ecf6283eStb 0x2c, 0xfb,
178459919d1cStb },
178559919d1cStb .order = {
1786ecf6283eStb 0xf1, 0xfd, 0x17, 0x8c, 0x0b, 0x3a, 0xd5, 0x8f, 0x10, 0x12,
1787ecf6283eStb 0x6d, 0xe8, 0xce, 0x42, 0x43, 0x5b, 0x53, 0xdc, 0x67, 0xe1,
1788ecf6283eStb 0x40, 0xd2, 0xbf, 0x94, 0x1f, 0xfd, 0xd4, 0x59, 0xc6, 0xd6,
1789ecf6283eStb 0x55, 0xe1,
179059919d1cStb },
1791f9a1f7bbSmiod };
1792f9a1f7bbSmiod
179359919d1cStb static const struct ec_list_element {
1794f1535dc8Sdjm const char *comment;
179559919d1cStb int nid;
179659919d1cStb int seed_len;
179759919d1cStb int param_len;
179859919d1cStb unsigned int cofactor;
179959919d1cStb const uint8_t *seed;
180059919d1cStb const uint8_t *p;
180159919d1cStb const uint8_t *a;
180259919d1cStb const uint8_t *b;
180359919d1cStb const uint8_t *x;
180459919d1cStb const uint8_t *y;
180559919d1cStb const uint8_t *order;
180659919d1cStb } curve_list[] = {
18075650a0e1Sdjm /* secg curves */
1808978dd0cbStb {
1809978dd0cbStb .comment = "SECG/WTLS curve over a 112 bit prime field",
181059919d1cStb .nid = NID_secp112r1,
181159919d1cStb .seed_len = sizeof(_EC_SECG_PRIME_112R1.seed),
181259919d1cStb .param_len = sizeof(_EC_SECG_PRIME_112R1.p),
181359919d1cStb .seed = _EC_SECG_PRIME_112R1.seed,
181459919d1cStb .p = _EC_SECG_PRIME_112R1.p,
181559919d1cStb .a = _EC_SECG_PRIME_112R1.a,
181659919d1cStb .b = _EC_SECG_PRIME_112R1.b,
181759919d1cStb .x = _EC_SECG_PRIME_112R1.x,
181859919d1cStb .y = _EC_SECG_PRIME_112R1.y,
181959919d1cStb .order = _EC_SECG_PRIME_112R1.order,
182059919d1cStb .cofactor = 1,
1821978dd0cbStb },
1822978dd0cbStb {
1823978dd0cbStb .comment = "SECG curve over a 112 bit prime field",
182459919d1cStb .nid = NID_secp112r2,
182559919d1cStb .seed_len = sizeof(_EC_SECG_PRIME_112R2.seed),
182659919d1cStb .param_len = sizeof(_EC_SECG_PRIME_112R2.p),
182759919d1cStb .seed = _EC_SECG_PRIME_112R2.seed,
182859919d1cStb .p = _EC_SECG_PRIME_112R2.p,
182959919d1cStb .a = _EC_SECG_PRIME_112R2.a,
183059919d1cStb .b = _EC_SECG_PRIME_112R2.b,
183159919d1cStb .x = _EC_SECG_PRIME_112R2.x,
183259919d1cStb .y = _EC_SECG_PRIME_112R2.y,
183359919d1cStb .order = _EC_SECG_PRIME_112R2.order,
183459919d1cStb .cofactor = 4,
1835978dd0cbStb },
1836978dd0cbStb {
183759919d1cStb .comment = "SECG curve over a 128 bit prime field",
1838978dd0cbStb .nid = NID_secp128r1,
183959919d1cStb .seed_len = sizeof(_EC_SECG_PRIME_128R1.seed),
184059919d1cStb .param_len = sizeof(_EC_SECG_PRIME_128R1.p),
184159919d1cStb .seed = _EC_SECG_PRIME_128R1.seed,
184259919d1cStb .p = _EC_SECG_PRIME_128R1.p,
184359919d1cStb .a = _EC_SECG_PRIME_128R1.a,
184459919d1cStb .b = _EC_SECG_PRIME_128R1.b,
184559919d1cStb .x = _EC_SECG_PRIME_128R1.x,
184659919d1cStb .y = _EC_SECG_PRIME_128R1.y,
184759919d1cStb .order = _EC_SECG_PRIME_128R1.order,
184859919d1cStb .cofactor = 1,
1849978dd0cbStb },
1850978dd0cbStb {
185159919d1cStb .comment = "SECG curve over a 128 bit prime field",
1852978dd0cbStb .nid = NID_secp128r2,
185359919d1cStb .seed_len = sizeof(_EC_SECG_PRIME_128R2.seed),
185459919d1cStb .param_len = sizeof(_EC_SECG_PRIME_128R2.p),
185559919d1cStb .seed = _EC_SECG_PRIME_128R2.seed,
185659919d1cStb .p = _EC_SECG_PRIME_128R2.p,
185759919d1cStb .a = _EC_SECG_PRIME_128R2.a,
185859919d1cStb .b = _EC_SECG_PRIME_128R2.b,
185959919d1cStb .x = _EC_SECG_PRIME_128R2.x,
186059919d1cStb .y = _EC_SECG_PRIME_128R2.y,
186159919d1cStb .order = _EC_SECG_PRIME_128R2.order,
186259919d1cStb .cofactor = 4,
1863978dd0cbStb },
1864978dd0cbStb {
186559919d1cStb .comment = "SECG curve over a 160 bit prime field",
1866978dd0cbStb .nid = NID_secp160k1,
186759919d1cStb .param_len = sizeof(_EC_SECG_PRIME_160K1.p),
186859919d1cStb .p = _EC_SECG_PRIME_160K1.p,
186959919d1cStb .a = _EC_SECG_PRIME_160K1.a,
187059919d1cStb .b = _EC_SECG_PRIME_160K1.b,
187159919d1cStb .x = _EC_SECG_PRIME_160K1.x,
187259919d1cStb .y = _EC_SECG_PRIME_160K1.y,
187359919d1cStb .order = _EC_SECG_PRIME_160K1.order,
187459919d1cStb .cofactor = 1,
1875978dd0cbStb },
1876978dd0cbStb {
187759919d1cStb .comment = "SECG curve over a 160 bit prime field",
1878978dd0cbStb .nid = NID_secp160r1,
187959919d1cStb .seed_len = sizeof(_EC_SECG_PRIME_160R1.seed),
188059919d1cStb .param_len = sizeof(_EC_SECG_PRIME_160R1.p),
188159919d1cStb .seed = _EC_SECG_PRIME_160R1.seed,
188259919d1cStb .p = _EC_SECG_PRIME_160R1.p,
188359919d1cStb .a = _EC_SECG_PRIME_160R1.a,
188459919d1cStb .b = _EC_SECG_PRIME_160R1.b,
188559919d1cStb .x = _EC_SECG_PRIME_160R1.x,
188659919d1cStb .y = _EC_SECG_PRIME_160R1.y,
188759919d1cStb .order = _EC_SECG_PRIME_160R1.order,
188859919d1cStb .cofactor = 1,
1889978dd0cbStb },
1890978dd0cbStb {
1891978dd0cbStb .comment = "SECG/WTLS curve over a 160 bit prime field",
189259919d1cStb .nid = NID_secp160r2,
189359919d1cStb .seed_len = sizeof(_EC_SECG_PRIME_160R2.seed),
189459919d1cStb .param_len = sizeof(_EC_SECG_PRIME_160R2.p),
189559919d1cStb .seed = _EC_SECG_PRIME_160R2.seed,
189659919d1cStb .p = _EC_SECG_PRIME_160R2.p,
189759919d1cStb .a = _EC_SECG_PRIME_160R2.a,
189859919d1cStb .b = _EC_SECG_PRIME_160R2.b,
189959919d1cStb .x = _EC_SECG_PRIME_160R2.x,
190059919d1cStb .y = _EC_SECG_PRIME_160R2.y,
190159919d1cStb .order = _EC_SECG_PRIME_160R2.order,
190259919d1cStb .cofactor = 1,
1903978dd0cbStb },
19045650a0e1Sdjm /* SECG secp192r1 is the same as X9.62 prime192v1 and hence omitted */
1905978dd0cbStb {
1906978dd0cbStb .comment = "SECG curve over a 192 bit prime field",
190759919d1cStb .nid = NID_secp192k1,
190859919d1cStb .param_len = sizeof(_EC_SECG_PRIME_192K1.p),
190959919d1cStb .p = _EC_SECG_PRIME_192K1.p,
191059919d1cStb .a = _EC_SECG_PRIME_192K1.a,
191159919d1cStb .b = _EC_SECG_PRIME_192K1.b,
191259919d1cStb .x = _EC_SECG_PRIME_192K1.x,
191359919d1cStb .y = _EC_SECG_PRIME_192K1.y,
191459919d1cStb .order = _EC_SECG_PRIME_192K1.order,
191559919d1cStb .cofactor = 1,
1916978dd0cbStb },
1917978dd0cbStb {
1918978dd0cbStb .comment = "SECG curve over a 224 bit prime field",
191959919d1cStb .nid = NID_secp224k1,
192059919d1cStb .param_len = sizeof(_EC_SECG_PRIME_224K1.p),
192159919d1cStb .p = _EC_SECG_PRIME_224K1.p,
192259919d1cStb .a = _EC_SECG_PRIME_224K1.a,
192359919d1cStb .b = _EC_SECG_PRIME_224K1.b,
192459919d1cStb .x = _EC_SECG_PRIME_224K1.x,
192559919d1cStb .y = _EC_SECG_PRIME_224K1.y,
192659919d1cStb .order = _EC_SECG_PRIME_224K1.order,
192759919d1cStb .cofactor = 1,
1928978dd0cbStb },
1929978dd0cbStb {
1930978dd0cbStb .comment = "NIST/SECG curve over a 224 bit prime field",
193159919d1cStb .nid = NID_secp224r1,
193259919d1cStb .seed_len = sizeof(_EC_NIST_PRIME_224.seed),
193359919d1cStb .param_len = sizeof(_EC_NIST_PRIME_224.p),
193459919d1cStb .seed = _EC_NIST_PRIME_224.seed,
193559919d1cStb .p = _EC_NIST_PRIME_224.p,
193659919d1cStb .a = _EC_NIST_PRIME_224.a,
193759919d1cStb .b = _EC_NIST_PRIME_224.b,
193859919d1cStb .x = _EC_NIST_PRIME_224.x,
193959919d1cStb .y = _EC_NIST_PRIME_224.y,
194059919d1cStb .order = _EC_NIST_PRIME_224.order,
194159919d1cStb .cofactor = 1,
1942978dd0cbStb },
1943978dd0cbStb {
1944978dd0cbStb .comment = "SECG curve over a 256 bit prime field",
194559919d1cStb .nid = NID_secp256k1,
194659919d1cStb .param_len = sizeof(_EC_SECG_PRIME_256K1.p),
194759919d1cStb .p = _EC_SECG_PRIME_256K1.p,
194859919d1cStb .a = _EC_SECG_PRIME_256K1.a,
194959919d1cStb .b = _EC_SECG_PRIME_256K1.b,
195059919d1cStb .x = _EC_SECG_PRIME_256K1.x,
195159919d1cStb .y = _EC_SECG_PRIME_256K1.y,
195259919d1cStb .order = _EC_SECG_PRIME_256K1.order,
195359919d1cStb .cofactor = 1,
1954978dd0cbStb },
19555650a0e1Sdjm /* SECG secp256r1 is the same as X9.62 prime256v1 and hence omitted */
1956978dd0cbStb {
1957978dd0cbStb .comment = "NIST/SECG curve over a 384 bit prime field",
195859919d1cStb .nid = NID_secp384r1,
195959919d1cStb .seed_len = sizeof(_EC_NIST_PRIME_384.seed),
196059919d1cStb .param_len = sizeof(_EC_NIST_PRIME_384.p),
196159919d1cStb .seed = _EC_NIST_PRIME_384.seed,
196259919d1cStb .p = _EC_NIST_PRIME_384.p,
196359919d1cStb .a = _EC_NIST_PRIME_384.a,
196459919d1cStb .b = _EC_NIST_PRIME_384.b,
196559919d1cStb .x = _EC_NIST_PRIME_384.x,
196659919d1cStb .y = _EC_NIST_PRIME_384.y,
196759919d1cStb .order = _EC_NIST_PRIME_384.order,
196859919d1cStb .cofactor = 1,
1969978dd0cbStb },
1970978dd0cbStb {
1971978dd0cbStb .comment = "NIST/SECG curve over a 521 bit prime field",
197259919d1cStb .nid = NID_secp521r1,
197359919d1cStb .seed_len = sizeof(_EC_NIST_PRIME_521.seed),
197459919d1cStb .param_len = sizeof(_EC_NIST_PRIME_521.p),
197559919d1cStb .seed = _EC_NIST_PRIME_521.seed,
197659919d1cStb .p = _EC_NIST_PRIME_521.p,
197759919d1cStb .a = _EC_NIST_PRIME_521.a,
197859919d1cStb .b = _EC_NIST_PRIME_521.b,
197959919d1cStb .x = _EC_NIST_PRIME_521.x,
198059919d1cStb .y = _EC_NIST_PRIME_521.y,
198159919d1cStb .order = _EC_NIST_PRIME_521.order,
198259919d1cStb .cofactor = 1,
1983978dd0cbStb },
19845650a0e1Sdjm /* X9.62 curves */
1985978dd0cbStb {
1986978dd0cbStb .comment = "NIST/X9.62/SECG curve over a 192 bit prime field",
198759919d1cStb .nid = NID_X9_62_prime192v1,
198859919d1cStb .seed_len = sizeof(_EC_NIST_PRIME_192.seed),
198959919d1cStb .param_len = sizeof(_EC_NIST_PRIME_192.p),
199059919d1cStb .seed = _EC_NIST_PRIME_192.seed,
199159919d1cStb .p = _EC_NIST_PRIME_192.p,
199259919d1cStb .a = _EC_NIST_PRIME_192.a,
199359919d1cStb .b = _EC_NIST_PRIME_192.b,
199459919d1cStb .x = _EC_NIST_PRIME_192.x,
199559919d1cStb .y = _EC_NIST_PRIME_192.y,
199659919d1cStb .order = _EC_NIST_PRIME_192.order,
199759919d1cStb .cofactor = 1,
1998978dd0cbStb },
1999978dd0cbStb {
200059919d1cStb .comment = "X9.62 curve over a 192 bit prime field",
2001978dd0cbStb .nid = NID_X9_62_prime192v2,
200259919d1cStb .seed_len = sizeof(_EC_X9_62_PRIME_192V2.seed),
200359919d1cStb .param_len = sizeof(_EC_X9_62_PRIME_192V2.p),
200459919d1cStb .seed = _EC_X9_62_PRIME_192V2.seed,
200559919d1cStb .p = _EC_X9_62_PRIME_192V2.p,
200659919d1cStb .a = _EC_X9_62_PRIME_192V2.a,
200759919d1cStb .b = _EC_X9_62_PRIME_192V2.b,
200859919d1cStb .x = _EC_X9_62_PRIME_192V2.x,
200959919d1cStb .y = _EC_X9_62_PRIME_192V2.y,
201059919d1cStb .order = _EC_X9_62_PRIME_192V2.order,
201159919d1cStb .cofactor = 1,
2012978dd0cbStb },
2013978dd0cbStb {
201459919d1cStb .comment = "X9.62 curve over a 192 bit prime field",
2015978dd0cbStb .nid = NID_X9_62_prime192v3,
201659919d1cStb .seed_len = sizeof(_EC_X9_62_PRIME_192V3.seed),
201759919d1cStb .param_len = sizeof(_EC_X9_62_PRIME_192V3.p),
201859919d1cStb .seed = _EC_X9_62_PRIME_192V3.seed,
201959919d1cStb .p = _EC_X9_62_PRIME_192V3.p,
202059919d1cStb .a = _EC_X9_62_PRIME_192V3.a,
202159919d1cStb .b = _EC_X9_62_PRIME_192V3.b,
202259919d1cStb .x = _EC_X9_62_PRIME_192V3.x,
202359919d1cStb .y = _EC_X9_62_PRIME_192V3.y,
202459919d1cStb .order = _EC_X9_62_PRIME_192V3.order,
202559919d1cStb .cofactor = 1,
2026978dd0cbStb },
2027978dd0cbStb {
202859919d1cStb .comment = "X9.62 curve over a 239 bit prime field",
2029978dd0cbStb .nid = NID_X9_62_prime239v1,
203059919d1cStb .seed_len = sizeof(_EC_X9_62_PRIME_239V1.seed),
203159919d1cStb .param_len = sizeof(_EC_X9_62_PRIME_239V1.p),
203259919d1cStb .seed = _EC_X9_62_PRIME_239V1.seed,
203359919d1cStb .p = _EC_X9_62_PRIME_239V1.p,
203459919d1cStb .a = _EC_X9_62_PRIME_239V1.a,
203559919d1cStb .b = _EC_X9_62_PRIME_239V1.b,
203659919d1cStb .x = _EC_X9_62_PRIME_239V1.x,
203759919d1cStb .y = _EC_X9_62_PRIME_239V1.y,
203859919d1cStb .order = _EC_X9_62_PRIME_239V1.order,
203959919d1cStb .cofactor = 1,
2040978dd0cbStb },
2041978dd0cbStb {
204259919d1cStb .comment = "X9.62 curve over a 239 bit prime field",
2043978dd0cbStb .nid = NID_X9_62_prime239v2,
204459919d1cStb .seed_len = sizeof(_EC_X9_62_PRIME_239V2.seed),
204559919d1cStb .param_len = sizeof(_EC_X9_62_PRIME_239V2.p),
204659919d1cStb .seed = _EC_X9_62_PRIME_239V2.seed,
204759919d1cStb .p = _EC_X9_62_PRIME_239V2.p,
204859919d1cStb .a = _EC_X9_62_PRIME_239V2.a,
204959919d1cStb .b = _EC_X9_62_PRIME_239V2.b,
205059919d1cStb .x = _EC_X9_62_PRIME_239V2.x,
205159919d1cStb .y = _EC_X9_62_PRIME_239V2.y,
205259919d1cStb .order = _EC_X9_62_PRIME_239V2.order,
205359919d1cStb .cofactor = 1,
2054978dd0cbStb },
2055978dd0cbStb {
205659919d1cStb .comment = "X9.62 curve over a 239 bit prime field",
2057978dd0cbStb .nid = NID_X9_62_prime239v3,
205859919d1cStb .seed_len = sizeof(_EC_X9_62_PRIME_239V3.seed),
205959919d1cStb .param_len = sizeof(_EC_X9_62_PRIME_239V3.p),
206059919d1cStb .seed = _EC_X9_62_PRIME_239V3.seed,
206159919d1cStb .p = _EC_X9_62_PRIME_239V3.p,
206259919d1cStb .a = _EC_X9_62_PRIME_239V3.a,
206359919d1cStb .b = _EC_X9_62_PRIME_239V3.b,
206459919d1cStb .x = _EC_X9_62_PRIME_239V3.x,
206559919d1cStb .y = _EC_X9_62_PRIME_239V3.y,
206659919d1cStb .order = _EC_X9_62_PRIME_239V3.order,
206759919d1cStb .cofactor = 1,
2068978dd0cbStb },
2069978dd0cbStb {
2070978dd0cbStb .comment = "X9.62/SECG curve over a 256 bit prime field",
207159919d1cStb .nid = NID_X9_62_prime256v1,
207259919d1cStb .seed_len = sizeof(_EC_X9_62_PRIME_256V1.seed),
207359919d1cStb .param_len = sizeof(_EC_X9_62_PRIME_256V1.p),
207459919d1cStb .seed = _EC_X9_62_PRIME_256V1.seed,
207559919d1cStb .p = _EC_X9_62_PRIME_256V1.p,
207659919d1cStb .a = _EC_X9_62_PRIME_256V1.a,
207759919d1cStb .b = _EC_X9_62_PRIME_256V1.b,
207859919d1cStb .x = _EC_X9_62_PRIME_256V1.x,
207959919d1cStb .y = _EC_X9_62_PRIME_256V1.y,
208059919d1cStb .order = _EC_X9_62_PRIME_256V1.order,
208159919d1cStb .cofactor = 1,
2082978dd0cbStb },
2083978dd0cbStb {
2084978dd0cbStb .comment = "SECG/WTLS curve over a 112 bit prime field",
208559919d1cStb .nid = NID_wap_wsg_idm_ecid_wtls6,
208659919d1cStb .seed_len = sizeof(_EC_SECG_PRIME_112R1.seed),
208759919d1cStb .param_len = sizeof(_EC_SECG_PRIME_112R1.p),
208859919d1cStb .seed = _EC_SECG_PRIME_112R1.seed,
208959919d1cStb .p = _EC_SECG_PRIME_112R1.p,
209059919d1cStb .a = _EC_SECG_PRIME_112R1.a,
209159919d1cStb .b = _EC_SECG_PRIME_112R1.b,
209259919d1cStb .x = _EC_SECG_PRIME_112R1.x,
209359919d1cStb .y = _EC_SECG_PRIME_112R1.y,
209459919d1cStb .order = _EC_SECG_PRIME_112R1.order,
209559919d1cStb .cofactor = 1,
2096978dd0cbStb },
2097978dd0cbStb {
2098978dd0cbStb .comment = "SECG/WTLS curve over a 160 bit prime field",
209959919d1cStb .nid = NID_wap_wsg_idm_ecid_wtls7,
210059919d1cStb .seed_len = sizeof(_EC_SECG_PRIME_160R2.seed),
210159919d1cStb .param_len = sizeof(_EC_SECG_PRIME_160R2.p),
210259919d1cStb .seed = _EC_SECG_PRIME_160R2.seed,
210359919d1cStb .p = _EC_SECG_PRIME_160R2.p,
210459919d1cStb .a = _EC_SECG_PRIME_160R2.a,
210559919d1cStb .b = _EC_SECG_PRIME_160R2.b,
210659919d1cStb .x = _EC_SECG_PRIME_160R2.x,
210759919d1cStb .y = _EC_SECG_PRIME_160R2.y,
210859919d1cStb .order = _EC_SECG_PRIME_160R2.order,
210959919d1cStb .cofactor = 1,
2110978dd0cbStb },
2111978dd0cbStb {
2112978dd0cbStb .comment = "WTLS curve over a 112 bit prime field",
211359919d1cStb .nid = NID_wap_wsg_idm_ecid_wtls8,
211459919d1cStb .param_len = sizeof(_EC_WTLS_8.p),
211559919d1cStb .p = _EC_WTLS_8.p,
211659919d1cStb .a = _EC_WTLS_8.a,
211759919d1cStb .b = _EC_WTLS_8.b,
211859919d1cStb .x = _EC_WTLS_8.x,
211959919d1cStb .y = _EC_WTLS_8.y,
212059919d1cStb .order = _EC_WTLS_8.order,
212159919d1cStb .cofactor = 1,
2122978dd0cbStb },
2123978dd0cbStb {
2124978dd0cbStb .comment = "WTLS curve over a 160 bit prime field",
212559919d1cStb .nid = NID_wap_wsg_idm_ecid_wtls9,
212659919d1cStb .param_len = sizeof(_EC_WTLS_9.p),
212759919d1cStb .p = _EC_WTLS_9.p,
212859919d1cStb .a = _EC_WTLS_9.a,
212959919d1cStb .b = _EC_WTLS_9.b,
213059919d1cStb .x = _EC_WTLS_9.x,
213159919d1cStb .y = _EC_WTLS_9.y,
213259919d1cStb .order = _EC_WTLS_9.order,
213359919d1cStb .cofactor = 1,
2134978dd0cbStb },
2135978dd0cbStb {
2136978dd0cbStb .comment = "WTLS curve over a 224 bit prime field",
213759919d1cStb .nid = NID_wap_wsg_idm_ecid_wtls12,
213859919d1cStb .param_len = sizeof(_EC_WTLS_12.p),
213959919d1cStb .p = _EC_WTLS_12.p,
214059919d1cStb .a = _EC_WTLS_12.a,
214159919d1cStb .b = _EC_WTLS_12.b,
214259919d1cStb .x = _EC_WTLS_12.x,
214359919d1cStb .y = _EC_WTLS_12.y,
214459919d1cStb .order = _EC_WTLS_12.order,
214559919d1cStb .cofactor = 1,
2146978dd0cbStb },
21479caf19c3Smiod /* RFC 5639 curves */
2148978dd0cbStb {
214959919d1cStb .comment = "RFC 5639 curve over a 160 bit prime field",
2150978dd0cbStb .nid = NID_brainpoolP160r1,
215159919d1cStb .param_len = sizeof(_EC_brainpoolP160r1.p),
215259919d1cStb .p = _EC_brainpoolP160r1.p,
215359919d1cStb .a = _EC_brainpoolP160r1.a,
215459919d1cStb .b = _EC_brainpoolP160r1.b,
215559919d1cStb .x = _EC_brainpoolP160r1.x,
215659919d1cStb .y = _EC_brainpoolP160r1.y,
215759919d1cStb .order = _EC_brainpoolP160r1.order,
215859919d1cStb .cofactor = 1,
2159978dd0cbStb },
2160978dd0cbStb {
216159919d1cStb .comment = "RFC 5639 curve over a 160 bit prime field",
2162978dd0cbStb .nid = NID_brainpoolP160t1,
216359919d1cStb .param_len = sizeof(_EC_brainpoolP160t1.p),
216459919d1cStb .p = _EC_brainpoolP160t1.p,
216559919d1cStb .a = _EC_brainpoolP160t1.a,
216659919d1cStb .b = _EC_brainpoolP160t1.b,
216759919d1cStb .x = _EC_brainpoolP160t1.x,
216859919d1cStb .y = _EC_brainpoolP160t1.y,
216959919d1cStb .order = _EC_brainpoolP160t1.order,
217059919d1cStb .cofactor = 1,
2171978dd0cbStb },
2172978dd0cbStb {
217359919d1cStb .comment = "RFC 5639 curve over a 192 bit prime field",
2174978dd0cbStb .nid = NID_brainpoolP192r1,
217559919d1cStb .param_len = sizeof(_EC_brainpoolP192r1.p),
217659919d1cStb .p = _EC_brainpoolP192r1.p,
217759919d1cStb .a = _EC_brainpoolP192r1.a,
217859919d1cStb .b = _EC_brainpoolP192r1.b,
217959919d1cStb .x = _EC_brainpoolP192r1.x,
218059919d1cStb .y = _EC_brainpoolP192r1.y,
218159919d1cStb .order = _EC_brainpoolP192r1.order,
218259919d1cStb .cofactor = 1,
2183978dd0cbStb },
2184978dd0cbStb {
218559919d1cStb .comment = "RFC 5639 curve over a 192 bit prime field",
2186978dd0cbStb .nid = NID_brainpoolP192t1,
218759919d1cStb .param_len = sizeof(_EC_brainpoolP192t1.p),
218859919d1cStb .p = _EC_brainpoolP192t1.p,
218959919d1cStb .a = _EC_brainpoolP192t1.a,
219059919d1cStb .b = _EC_brainpoolP192t1.b,
219159919d1cStb .x = _EC_brainpoolP192t1.x,
219259919d1cStb .y = _EC_brainpoolP192t1.y,
219359919d1cStb .order = _EC_brainpoolP192t1.order,
219459919d1cStb .cofactor = 1,
2195978dd0cbStb },
2196978dd0cbStb {
219759919d1cStb .comment = "RFC 5639 curve over a 224 bit prime field",
2198978dd0cbStb .nid = NID_brainpoolP224r1,
219959919d1cStb .param_len = sizeof(_EC_brainpoolP224r1.p),
220059919d1cStb .p = _EC_brainpoolP224r1.p,
220159919d1cStb .a = _EC_brainpoolP224r1.a,
220259919d1cStb .b = _EC_brainpoolP224r1.b,
220359919d1cStb .x = _EC_brainpoolP224r1.x,
220459919d1cStb .y = _EC_brainpoolP224r1.y,
220559919d1cStb .order = _EC_brainpoolP224r1.order,
220659919d1cStb .cofactor = 1,
2207978dd0cbStb },
2208978dd0cbStb {
220959919d1cStb .comment = "RFC 5639 curve over a 224 bit prime field",
2210978dd0cbStb .nid = NID_brainpoolP224t1,
221159919d1cStb .param_len = sizeof(_EC_brainpoolP224t1.p),
221259919d1cStb .p = _EC_brainpoolP224t1.p,
221359919d1cStb .a = _EC_brainpoolP224t1.a,
221459919d1cStb .b = _EC_brainpoolP224t1.b,
221559919d1cStb .x = _EC_brainpoolP224t1.x,
221659919d1cStb .y = _EC_brainpoolP224t1.y,
221759919d1cStb .order = _EC_brainpoolP224t1.order,
221859919d1cStb .cofactor = 1,
2219978dd0cbStb },
2220978dd0cbStb {
222159919d1cStb .comment = "RFC 5639 curve over a 256 bit prime field",
2222978dd0cbStb .nid = NID_brainpoolP256r1,
222359919d1cStb .param_len = sizeof(_EC_brainpoolP256r1.p),
222459919d1cStb .p = _EC_brainpoolP256r1.p,
222559919d1cStb .a = _EC_brainpoolP256r1.a,
222659919d1cStb .b = _EC_brainpoolP256r1.b,
222759919d1cStb .x = _EC_brainpoolP256r1.x,
222859919d1cStb .y = _EC_brainpoolP256r1.y,
222959919d1cStb .order = _EC_brainpoolP256r1.order,
223059919d1cStb .cofactor = 1,
2231978dd0cbStb },
2232978dd0cbStb {
223359919d1cStb .comment = "RFC 5639 curve over a 256 bit prime field",
2234978dd0cbStb .nid = NID_brainpoolP256t1,
223559919d1cStb .param_len = sizeof(_EC_brainpoolP256t1.p),
223659919d1cStb .p = _EC_brainpoolP256t1.p,
223759919d1cStb .a = _EC_brainpoolP256t1.a,
223859919d1cStb .b = _EC_brainpoolP256t1.b,
223959919d1cStb .x = _EC_brainpoolP256t1.x,
224059919d1cStb .y = _EC_brainpoolP256t1.y,
224159919d1cStb .order = _EC_brainpoolP256t1.order,
224259919d1cStb .cofactor = 1,
2243978dd0cbStb },
2244978dd0cbStb {
224559919d1cStb .comment = "RFC 5639 curve over a 320 bit prime field",
2246978dd0cbStb .nid = NID_brainpoolP320r1,
224759919d1cStb .param_len = sizeof(_EC_brainpoolP320r1.p),
224859919d1cStb .p = _EC_brainpoolP320r1.p,
224959919d1cStb .a = _EC_brainpoolP320r1.a,
225059919d1cStb .b = _EC_brainpoolP320r1.b,
225159919d1cStb .x = _EC_brainpoolP320r1.x,
225259919d1cStb .y = _EC_brainpoolP320r1.y,
225359919d1cStb .order = _EC_brainpoolP320r1.order,
225459919d1cStb .cofactor = 1,
2255978dd0cbStb },
2256978dd0cbStb {
225759919d1cStb .comment = "RFC 5639 curve over a 320 bit prime field",
2258978dd0cbStb .nid = NID_brainpoolP320t1,
225959919d1cStb .param_len = sizeof(_EC_brainpoolP320t1.p),
226059919d1cStb .p = _EC_brainpoolP320t1.p,
226159919d1cStb .a = _EC_brainpoolP320t1.a,
226259919d1cStb .b = _EC_brainpoolP320t1.b,
226359919d1cStb .x = _EC_brainpoolP320t1.x,
226459919d1cStb .y = _EC_brainpoolP320t1.y,
226559919d1cStb .order = _EC_brainpoolP320t1.order,
226659919d1cStb .cofactor = 1,
2267978dd0cbStb },
2268978dd0cbStb {
226959919d1cStb .comment = "RFC 5639 curve over a 384 bit prime field",
2270978dd0cbStb .nid = NID_brainpoolP384r1,
227159919d1cStb .param_len = sizeof(_EC_brainpoolP384r1.p),
227259919d1cStb .p = _EC_brainpoolP384r1.p,
227359919d1cStb .a = _EC_brainpoolP384r1.a,
227459919d1cStb .b = _EC_brainpoolP384r1.b,
227559919d1cStb .x = _EC_brainpoolP384r1.x,
227659919d1cStb .y = _EC_brainpoolP384r1.y,
227759919d1cStb .order = _EC_brainpoolP384r1.order,
227859919d1cStb .cofactor = 1,
2279978dd0cbStb },
2280978dd0cbStb {
228159919d1cStb .comment = "RFC 5639 curve over a 384 bit prime field",
2282978dd0cbStb .nid = NID_brainpoolP384t1,
228359919d1cStb .param_len = sizeof(_EC_brainpoolP384t1.p),
228459919d1cStb .p = _EC_brainpoolP384t1.p,
228559919d1cStb .a = _EC_brainpoolP384t1.a,
228659919d1cStb .b = _EC_brainpoolP384t1.b,
228759919d1cStb .x = _EC_brainpoolP384t1.x,
228859919d1cStb .y = _EC_brainpoolP384t1.y,
228959919d1cStb .order = _EC_brainpoolP384t1.order,
229059919d1cStb .cofactor = 1,
2291978dd0cbStb },
2292978dd0cbStb {
229359919d1cStb .comment = "RFC 5639 curve over a 512 bit prime field",
2294978dd0cbStb .nid = NID_brainpoolP512r1,
229559919d1cStb .param_len = sizeof(_EC_brainpoolP512r1.p),
229659919d1cStb .p = _EC_brainpoolP512r1.p,
229759919d1cStb .a = _EC_brainpoolP512r1.a,
229859919d1cStb .b = _EC_brainpoolP512r1.b,
229959919d1cStb .x = _EC_brainpoolP512r1.x,
230059919d1cStb .y = _EC_brainpoolP512r1.y,
230159919d1cStb .order = _EC_brainpoolP512r1.order,
230259919d1cStb .cofactor = 1,
2303978dd0cbStb },
2304978dd0cbStb {
2305978dd0cbStb .comment = "RFC 5639 curve over a 512 bit prime field",
230659919d1cStb .nid = NID_brainpoolP512t1,
230759919d1cStb .param_len = sizeof(_EC_brainpoolP512t1.p),
230859919d1cStb .p = _EC_brainpoolP512t1.p,
230959919d1cStb .a = _EC_brainpoolP512t1.a,
231059919d1cStb .b = _EC_brainpoolP512t1.b,
231159919d1cStb .x = _EC_brainpoolP512t1.x,
231259919d1cStb .y = _EC_brainpoolP512t1.y,
231359919d1cStb .order = _EC_brainpoolP512t1.order,
231459919d1cStb .cofactor = 1,
2315978dd0cbStb },
2316f9a1f7bbSmiod /* ANSSI */
2317978dd0cbStb {
2318978dd0cbStb .comment = "FRP256v1",
231959919d1cStb .nid = NID_FRP256v1,
232059919d1cStb .param_len = sizeof(_EC_FRP256v1.p),
232159919d1cStb .p = _EC_FRP256v1.p,
232259919d1cStb .a = _EC_FRP256v1.a,
232359919d1cStb .b = _EC_FRP256v1.b,
232459919d1cStb .x = _EC_FRP256v1.x,
232559919d1cStb .y = _EC_FRP256v1.y,
232659919d1cStb .order = _EC_FRP256v1.order,
232759919d1cStb .cofactor = 1,
2328978dd0cbStb },
23295650a0e1Sdjm };
23305650a0e1Sdjm
2331f51c83a1Stb #define CURVE_LIST_LENGTH (sizeof(curve_list) / sizeof(curve_list[0]))
23325650a0e1Sdjm
2333f67ac449Stedu static EC_GROUP *
ec_group_new_from_data(const struct ec_list_element * curve)233459919d1cStb ec_group_new_from_data(const struct ec_list_element *curve)
23355650a0e1Sdjm {
2336b1c4c349Stb EC_GROUP *group = NULL, *ret = NULL;
23375b63a848Stb EC_POINT *generator = NULL;
23385650a0e1Sdjm BN_CTX *ctx = NULL;
2339e3e151efStb BIGNUM *p, *a, *b, *x, *y, *order, *cofactor;
23405650a0e1Sdjm
2341f67ac449Stedu if ((ctx = BN_CTX_new()) == NULL) {
23425067ae9fSbeck ECerror(ERR_R_MALLOC_FAILURE);
23435650a0e1Sdjm goto err;
23445650a0e1Sdjm }
2345e3e151efStb BN_CTX_start(ctx);
2346e3e151efStb
2347e3e151efStb if ((p = BN_CTX_get(ctx)) == NULL) {
2348e3e151efStb ECerror(ERR_R_BN_LIB);
2349e3e151efStb goto err;
2350e3e151efStb }
2351e3e151efStb if ((a = BN_CTX_get(ctx)) == NULL) {
2352e3e151efStb ECerror(ERR_R_BN_LIB);
2353e3e151efStb goto err;
2354e3e151efStb }
2355e3e151efStb if ((b = BN_CTX_get(ctx)) == NULL) {
2356e3e151efStb ECerror(ERR_R_BN_LIB);
2357e3e151efStb goto err;
2358e3e151efStb }
2359e3e151efStb if ((x = BN_CTX_get(ctx)) == NULL) {
2360e3e151efStb ECerror(ERR_R_BN_LIB);
2361e3e151efStb goto err;
2362e3e151efStb }
2363e3e151efStb if ((y = BN_CTX_get(ctx)) == NULL) {
2364e3e151efStb ECerror(ERR_R_BN_LIB);
2365e3e151efStb goto err;
2366e3e151efStb }
2367e3e151efStb if ((order = BN_CTX_get(ctx)) == NULL) {
2368e3e151efStb ECerror(ERR_R_BN_LIB);
2369e3e151efStb goto err;
2370e3e151efStb }
2371e3e151efStb if ((cofactor = BN_CTX_get(ctx)) == NULL) {
2372e3e151efStb ECerror(ERR_R_BN_LIB);
2373e3e151efStb goto err;
2374e3e151efStb }
2375e3e151efStb
237659919d1cStb if (BN_bin2bn(curve->p, curve->param_len, p) == NULL) {
2377e3e151efStb ECerror(ERR_R_BN_LIB);
2378e3e151efStb goto err;
2379e3e151efStb }
238059919d1cStb if (BN_bin2bn(curve->a, curve->param_len, a) == NULL) {
2381e3e151efStb ECerror(ERR_R_BN_LIB);
2382e3e151efStb goto err;
2383e3e151efStb }
238459919d1cStb if (BN_bin2bn(curve->b, curve->param_len, b) == NULL) {
23855067ae9fSbeck ECerror(ERR_R_BN_LIB);
23865650a0e1Sdjm goto err;
23875650a0e1Sdjm }
2388f67ac449Stedu if ((group = EC_GROUP_new_curve_GFp(p, a, b, ctx)) == NULL) {
23895067ae9fSbeck ECerror(ERR_R_EC_LIB);
23905650a0e1Sdjm goto err;
23915650a0e1Sdjm }
2392b1c4c349Stb EC_GROUP_set_curve_name(group, curve->nid);
23935650a0e1Sdjm
23945b63a848Stb if ((generator = EC_POINT_new(group)) == NULL) {
23955067ae9fSbeck ECerror(ERR_R_EC_LIB);
23965650a0e1Sdjm goto err;
23975650a0e1Sdjm }
239859919d1cStb if (BN_bin2bn(curve->x, curve->param_len, x) == NULL) {
2399e3e151efStb ECerror(ERR_R_BN_LIB);
2400e3e151efStb goto err;
2401e3e151efStb }
240259919d1cStb if (BN_bin2bn(curve->y, curve->param_len, y) == NULL) {
24035067ae9fSbeck ECerror(ERR_R_BN_LIB);
24045650a0e1Sdjm goto err;
24055650a0e1Sdjm }
24065b63a848Stb if (!EC_POINT_set_affine_coordinates(group, generator, x, y, ctx)) {
24075067ae9fSbeck ECerror(ERR_R_EC_LIB);
24085650a0e1Sdjm goto err;
24095650a0e1Sdjm }
241059919d1cStb if (BN_bin2bn(curve->order, curve->param_len, order) == NULL) {
241159919d1cStb ECerror(ERR_R_EC_LIB);
24125650a0e1Sdjm goto err;
24135650a0e1Sdjm }
241459919d1cStb if (!BN_set_word(cofactor, curve->cofactor)) {
2415e3e151efStb ECerror(ERR_R_BN_LIB);
2416e3e151efStb goto err;
2417e3e151efStb }
24185b63a848Stb if (!EC_GROUP_set_generator(group, generator, order, cofactor)) {
24195067ae9fSbeck ECerror(ERR_R_EC_LIB);
24205650a0e1Sdjm goto err;
24215650a0e1Sdjm }
2422b1c4c349Stb
242359919d1cStb if (curve->seed != NULL) {
242459919d1cStb if (!EC_GROUP_set_seed(group, curve->seed, curve->seed_len)) {
24255067ae9fSbeck ECerror(ERR_R_EC_LIB);
24265650a0e1Sdjm goto err;
24275650a0e1Sdjm }
24285650a0e1Sdjm }
2429b1c4c349Stb
2430b1c4c349Stb ret = group;
24315650a0e1Sdjm group = NULL;
2432b1c4c349Stb
2433b1c4c349Stb err:
2434b1c4c349Stb EC_GROUP_free(group);
24355b63a848Stb EC_POINT_free(generator);
2436e3e151efStb BN_CTX_end(ctx);
24375650a0e1Sdjm BN_CTX_free(ctx);
2438e3e151efStb
2439b1c4c349Stb return ret;
24405650a0e1Sdjm }
24415650a0e1Sdjm
2442f67ac449Stedu EC_GROUP *
EC_GROUP_new_by_curve_name(int nid)2443f67ac449Stedu EC_GROUP_new_by_curve_name(int nid)
24445650a0e1Sdjm {
24455650a0e1Sdjm size_t i;
24465650a0e1Sdjm
24475650a0e1Sdjm if (nid <= 0)
24485650a0e1Sdjm return NULL;
24495650a0e1Sdjm
24501594ffa5Stb for (i = 0; i < CURVE_LIST_LENGTH; i++) {
2451b1c4c349Stb if (curve_list[i].nid == nid)
2452b1c4c349Stb return ec_group_new_from_data(&curve_list[i]);
24535650a0e1Sdjm }
2454b1c4c349Stb
24555067ae9fSbeck ECerror(EC_R_UNKNOWN_GROUP);
24565650a0e1Sdjm return NULL;
24575650a0e1Sdjm }
2458ea2baf45Sbeck LCRYPTO_ALIAS(EC_GROUP_new_by_curve_name);
24595650a0e1Sdjm
2460f67ac449Stedu size_t
EC_get_builtin_curves(EC_builtin_curve * r,size_t nitems)2461f67ac449Stedu EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems)
24625650a0e1Sdjm {
24635650a0e1Sdjm size_t i, min;
24645650a0e1Sdjm
24655650a0e1Sdjm if (r == NULL || nitems == 0)
2466f51c83a1Stb return CURVE_LIST_LENGTH;
24675650a0e1Sdjm
2468f51c83a1Stb min = nitems < CURVE_LIST_LENGTH ? nitems : CURVE_LIST_LENGTH;
24695650a0e1Sdjm
2470f67ac449Stedu for (i = 0; i < min; i++) {
24715650a0e1Sdjm r[i].nid = curve_list[i].nid;
2472f1535dc8Sdjm r[i].comment = curve_list[i].comment;
24735650a0e1Sdjm }
24745650a0e1Sdjm
2475f51c83a1Stb return CURVE_LIST_LENGTH;
24765650a0e1Sdjm }
2477ea2baf45Sbeck LCRYPTO_ALIAS(EC_get_builtin_curves);
2478bdb7dc21Sjsing
2479034a9b39Stb static const struct {
2480034a9b39Stb const char *name;
2481034a9b39Stb int nid;
2482034a9b39Stb } nist_curves[] = {
2483bdb7dc21Sjsing { "B-163", NID_sect163r2 },
2484bdb7dc21Sjsing { "B-233", NID_sect233r1 },
2485bdb7dc21Sjsing { "B-283", NID_sect283r1 },
2486bdb7dc21Sjsing { "B-409", NID_sect409r1 },
2487bdb7dc21Sjsing { "B-571", NID_sect571r1 },
2488bdb7dc21Sjsing { "K-163", NID_sect163k1 },
2489bdb7dc21Sjsing { "K-233", NID_sect233k1 },
2490bdb7dc21Sjsing { "K-283", NID_sect283k1 },
2491bdb7dc21Sjsing { "K-409", NID_sect409k1 },
2492bdb7dc21Sjsing { "K-571", NID_sect571k1 },
2493bdb7dc21Sjsing { "P-192", NID_X9_62_prime192v1 },
2494bdb7dc21Sjsing { "P-224", NID_secp224r1 },
2495bdb7dc21Sjsing { "P-256", NID_X9_62_prime256v1 },
2496bdb7dc21Sjsing { "P-384", NID_secp384r1 },
2497bdb7dc21Sjsing { "P-521", NID_secp521r1 }
2498bdb7dc21Sjsing };
2499bdb7dc21Sjsing
2500bdb7dc21Sjsing const char *
EC_curve_nid2nist(int nid)2501bdb7dc21Sjsing EC_curve_nid2nist(int nid)
2502bdb7dc21Sjsing {
2503bdb7dc21Sjsing size_t i;
2504bdb7dc21Sjsing
2505034a9b39Stb for (i = 0; i < sizeof(nist_curves) / sizeof(nist_curves[0]); i++) {
2506bdb7dc21Sjsing if (nist_curves[i].nid == nid)
2507034a9b39Stb return nist_curves[i].name;
2508bdb7dc21Sjsing }
2509034a9b39Stb
2510034a9b39Stb return NULL;
2511bdb7dc21Sjsing }
2512ea2baf45Sbeck LCRYPTO_ALIAS(EC_curve_nid2nist);
2513bdb7dc21Sjsing
2514bdb7dc21Sjsing int
EC_curve_nist2nid(const char * name)2515bdb7dc21Sjsing EC_curve_nist2nid(const char *name)
2516bdb7dc21Sjsing {
2517bdb7dc21Sjsing size_t i;
2518bdb7dc21Sjsing
2519034a9b39Stb for (i = 0; i < sizeof(nist_curves) / sizeof(nist_curves[0]); i++) {
2520034a9b39Stb if (strcmp(nist_curves[i].name, name) == 0)
2521034a9b39Stb return nist_curves[i].nid;
2522bdb7dc21Sjsing }
2523034a9b39Stb
2524034a9b39Stb return NID_undef;
2525bdb7dc21Sjsing }
2526ea2baf45Sbeck LCRYPTO_ALIAS(EC_curve_nist2nid);
2527