LCOV - code coverage report
Current view: top level - third_party/openssl/crypto/ec - ec_curve.c (source / functions) Hit Total Coverage
Test: tmp.zDYK9MVh93 Lines: 49 81 60.5 %
Date: 2015-10-10 Functions: 2 5 40.0 %

          Line data    Source code
       1             : /* crypto/ec/ec_curve.c */
       2             : /*
       3             :  * Written by Nils Larsch for the OpenSSL project.
       4             :  */
       5             : /* ====================================================================
       6             :  * Copyright (c) 1998-2010 The OpenSSL Project.  All rights reserved.
       7             :  *
       8             :  * Redistribution and use in source and binary forms, with or without
       9             :  * modification, are permitted provided that the following conditions
      10             :  * are met:
      11             :  *
      12             :  * 1. Redistributions of source code must retain the above copyright
      13             :  *    notice, this list of conditions and the following disclaimer.
      14             :  *
      15             :  * 2. Redistributions in binary form must reproduce the above copyright
      16             :  *    notice, this list of conditions and the following disclaimer in
      17             :  *    the documentation and/or other materials provided with the
      18             :  *    distribution.
      19             :  *
      20             :  * 3. All advertising materials mentioning features or use of this
      21             :  *    software must display the following acknowledgment:
      22             :  *    "This product includes software developed by the OpenSSL Project
      23             :  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
      24             :  *
      25             :  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
      26             :  *    endorse or promote products derived from this software without
      27             :  *    prior written permission. For written permission, please contact
      28             :  *    openssl-core@openssl.org.
      29             :  *
      30             :  * 5. Products derived from this software may not be called "OpenSSL"
      31             :  *    nor may "OpenSSL" appear in their names without prior written
      32             :  *    permission of the OpenSSL Project.
      33             :  *
      34             :  * 6. Redistributions of any form whatsoever must retain the following
      35             :  *    acknowledgment:
      36             :  *    "This product includes software developed by the OpenSSL Project
      37             :  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
      38             :  *
      39             :  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
      40             :  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      41             :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
      42             :  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
      43             :  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      44             :  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
      45             :  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
      46             :  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      47             :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
      48             :  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
      49             :  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
      50             :  * OF THE POSSIBILITY OF SUCH DAMAGE.
      51             :  * ====================================================================
      52             :  *
      53             :  * This product includes cryptographic software written by Eric Young
      54             :  * (eay@cryptsoft.com).  This product includes software written by Tim
      55             :  * Hudson (tjh@cryptsoft.com).
      56             :  *
      57             :  */
      58             : /* ====================================================================
      59             :  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
      60             :  *
      61             :  * Portions of the attached software ("Contribution") are developed by
      62             :  * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
      63             :  *
      64             :  * The Contribution is licensed pursuant to the OpenSSL open source
      65             :  * license provided above.
      66             :  *
      67             :  * The elliptic curve binary polynomial software is originally written by
      68             :  * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories.
      69             :  *
      70             :  */
      71             : 
      72             : #include <string.h>
      73             : #include "ec_lcl.h"
      74             : #include <openssl/err.h>
      75             : #include <openssl/obj_mac.h>
      76             : #include <openssl/opensslconf.h>
      77             : 
      78             : #ifdef OPENSSL_FIPS
      79             : # include <openssl/fips.h>
      80             : #endif
      81             : 
      82             : typedef struct {
      83             :     int field_type,             /* either NID_X9_62_prime_field or
      84             :                                  * NID_X9_62_characteristic_two_field */
      85             :      seed_len, param_len;
      86             :     unsigned int cofactor;      /* promoted to BN_ULONG */
      87             : } EC_CURVE_DATA;
      88             : 
      89             : /* the nist prime curves */
      90             : static const struct {
      91             :     EC_CURVE_DATA h;
      92             :     unsigned char data[20 + 24 * 6];
      93             : } _EC_NIST_PRIME_192 = {
      94             :     {
      95             :         NID_X9_62_prime_field, 20, 24, 1
      96             :     },
      97             :     {
      98             :         /* seed */
      99             :         0x30, 0x45, 0xAE, 0x6F, 0xC8, 0x42, 0x2F, 0x64, 0xED, 0x57, 0x95, 0x28,
     100             :         0xD3, 0x81, 0x20, 0xEA, 0xE1, 0x21, 0x96, 0xD5,
     101             :         /* p */
     102             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     103             :         0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     104             :         /* a */
     105             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     106             :         0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
     107             :         /* b */
     108             :         0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C, 0x80, 0xE7, 0x0F, 0xA7, 0xE9, 0xAB,
     109             :         0x72, 0x24, 0x30, 0x49, 0xFE, 0xB8, 0xDE, 0xEC, 0xC1, 0x46, 0xB9, 0xB1,
     110             :         /* x */
     111             :         0x18, 0x8D, 0xA8, 0x0E, 0xB0, 0x30, 0x90, 0xF6, 0x7C, 0xBF, 0x20, 0xEB,
     112             :         0x43, 0xA1, 0x88, 0x00, 0xF4, 0xFF, 0x0A, 0xFD, 0x82, 0xFF, 0x10, 0x12,
     113             :         /* y */
     114             :         0x07, 0x19, 0x2b, 0x95, 0xff, 0xc8, 0xda, 0x78, 0x63, 0x10, 0x11, 0xed,
     115             :         0x6b, 0x24, 0xcd, 0xd5, 0x73, 0xf9, 0x77, 0xa1, 0x1e, 0x79, 0x48, 0x11,
     116             :         /* order */
     117             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     118             :         0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B, 0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31
     119             :     }
     120             : };
     121             : 
     122             : static const struct {
     123             :     EC_CURVE_DATA h;
     124             :     unsigned char data[20 + 28 * 6];
     125             : } _EC_NIST_PRIME_224 = {
     126             :     {
     127             :         NID_X9_62_prime_field, 20, 28, 1
     128             :     },
     129             :     {
     130             :         /* seed */
     131             :         0xBD, 0x71, 0x34, 0x47, 0x99, 0xD5, 0xC7, 0xFC, 0xDC, 0x45, 0xB5, 0x9F,
     132             :         0xA3, 0xB9, 0xAB, 0x8F, 0x6A, 0x94, 0x8B, 0xC5,
     133             :         /* p */
     134             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     135             :         0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     136             :         0x00, 0x00, 0x00, 0x01,
     137             :         /* a */
     138             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     139             :         0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     140             :         0xFF, 0xFF, 0xFF, 0xFE,
     141             :         /* b */
     142             :         0xB4, 0x05, 0x0A, 0x85, 0x0C, 0x04, 0xB3, 0xAB, 0xF5, 0x41, 0x32, 0x56,
     143             :         0x50, 0x44, 0xB0, 0xB7, 0xD7, 0xBF, 0xD8, 0xBA, 0x27, 0x0B, 0x39, 0x43,
     144             :         0x23, 0x55, 0xFF, 0xB4,
     145             :         /* x */
     146             :         0xB7, 0x0E, 0x0C, 0xBD, 0x6B, 0xB4, 0xBF, 0x7F, 0x32, 0x13, 0x90, 0xB9,
     147             :         0x4A, 0x03, 0xC1, 0xD3, 0x56, 0xC2, 0x11, 0x22, 0x34, 0x32, 0x80, 0xD6,
     148             :         0x11, 0x5C, 0x1D, 0x21,
     149             :         /* y */
     150             :         0xbd, 0x37, 0x63, 0x88, 0xb5, 0xf7, 0x23, 0xfb, 0x4c, 0x22, 0xdf, 0xe6,
     151             :         0xcd, 0x43, 0x75, 0xa0, 0x5a, 0x07, 0x47, 0x64, 0x44, 0xd5, 0x81, 0x99,
     152             :         0x85, 0x00, 0x7e, 0x34,
     153             :         /* order */
     154             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     155             :         0xFF, 0xFF, 0x16, 0xA2, 0xE0, 0xB8, 0xF0, 0x3E, 0x13, 0xDD, 0x29, 0x45,
     156             :         0x5C, 0x5C, 0x2A, 0x3D
     157             :     }
     158             : };
     159             : 
     160             : static const struct {
     161             :     EC_CURVE_DATA h;
     162             :     unsigned char data[20 + 48 * 6];
     163             : } _EC_NIST_PRIME_384 = {
     164             :     {
     165             :         NID_X9_62_prime_field, 20, 48, 1
     166             :     },
     167             :     {
     168             :         /* seed */
     169             :         0xA3, 0x35, 0x92, 0x6A, 0xA3, 0x19, 0xA2, 0x7A, 0x1D, 0x00, 0x89, 0x6A,
     170             :         0x67, 0x73, 0xA4, 0x82, 0x7A, 0xCD, 0xAC, 0x73,
     171             :         /* p */
     172             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     173             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     174             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
     175             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
     176             :         /* a */
     177             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     178             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     179             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
     180             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFC,
     181             :         /* b */
     182             :         0xB3, 0x31, 0x2F, 0xA7, 0xE2, 0x3E, 0xE7, 0xE4, 0x98, 0x8E, 0x05, 0x6B,
     183             :         0xE3, 0xF8, 0x2D, 0x19, 0x18, 0x1D, 0x9C, 0x6E, 0xFE, 0x81, 0x41, 0x12,
     184             :         0x03, 0x14, 0x08, 0x8F, 0x50, 0x13, 0x87, 0x5A, 0xC6, 0x56, 0x39, 0x8D,
     185             :         0x8A, 0x2E, 0xD1, 0x9D, 0x2A, 0x85, 0xC8, 0xED, 0xD3, 0xEC, 0x2A, 0xEF,
     186             :         /* x */
     187             :         0xAA, 0x87, 0xCA, 0x22, 0xBE, 0x8B, 0x05, 0x37, 0x8E, 0xB1, 0xC7, 0x1E,
     188             :         0xF3, 0x20, 0xAD, 0x74, 0x6E, 0x1D, 0x3B, 0x62, 0x8B, 0xA7, 0x9B, 0x98,
     189             :         0x59, 0xF7, 0x41, 0xE0, 0x82, 0x54, 0x2A, 0x38, 0x55, 0x02, 0xF2, 0x5D,
     190             :         0xBF, 0x55, 0x29, 0x6C, 0x3A, 0x54, 0x5E, 0x38, 0x72, 0x76, 0x0A, 0xB7,
     191             :         /* y */
     192             :         0x36, 0x17, 0xde, 0x4a, 0x96, 0x26, 0x2c, 0x6f, 0x5d, 0x9e, 0x98, 0xbf,
     193             :         0x92, 0x92, 0xdc, 0x29, 0xf8, 0xf4, 0x1d, 0xbd, 0x28, 0x9a, 0x14, 0x7c,
     194             :         0xe9, 0xda, 0x31, 0x13, 0xb5, 0xf0, 0xb8, 0xc0, 0x0a, 0x60, 0xb1, 0xce,
     195             :         0x1d, 0x7e, 0x81, 0x9d, 0x7a, 0x43, 0x1d, 0x7c, 0x90, 0xea, 0x0e, 0x5f,
     196             :         /* order */
     197             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     198             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     199             :         0xC7, 0x63, 0x4D, 0x81, 0xF4, 0x37, 0x2D, 0xDF, 0x58, 0x1A, 0x0D, 0xB2,
     200             :         0x48, 0xB0, 0xA7, 0x7A, 0xEC, 0xEC, 0x19, 0x6A, 0xCC, 0xC5, 0x29, 0x73
     201             :     }
     202             : };
     203             : 
     204             : static const struct {
     205             :     EC_CURVE_DATA h;
     206             :     unsigned char data[20 + 66 * 6];
     207             : } _EC_NIST_PRIME_521 = {
     208             :     {
     209             :         NID_X9_62_prime_field, 20, 66, 1
     210             :     },
     211             :     {
     212             :         /* seed */
     213             :         0xD0, 0x9E, 0x88, 0x00, 0x29, 0x1C, 0xB8, 0x53, 0x96, 0xCC, 0x67, 0x17,
     214             :         0x39, 0x32, 0x84, 0xAA, 0xA0, 0xDA, 0x64, 0xBA,
     215             :         /* p */
     216             :         0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     217             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     218             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     219             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     220             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     221             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     222             :         /* a */
     223             :         0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     224             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     225             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     226             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     227             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     228             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
     229             :         /* b */
     230             :         0x00, 0x51, 0x95, 0x3E, 0xB9, 0x61, 0x8E, 0x1C, 0x9A, 0x1F, 0x92, 0x9A,
     231             :         0x21, 0xA0, 0xB6, 0x85, 0x40, 0xEE, 0xA2, 0xDA, 0x72, 0x5B, 0x99, 0xB3,
     232             :         0x15, 0xF3, 0xB8, 0xB4, 0x89, 0x91, 0x8E, 0xF1, 0x09, 0xE1, 0x56, 0x19,
     233             :         0x39, 0x51, 0xEC, 0x7E, 0x93, 0x7B, 0x16, 0x52, 0xC0, 0xBD, 0x3B, 0xB1,
     234             :         0xBF, 0x07, 0x35, 0x73, 0xDF, 0x88, 0x3D, 0x2C, 0x34, 0xF1, 0xEF, 0x45,
     235             :         0x1F, 0xD4, 0x6B, 0x50, 0x3F, 0x00,
     236             :         /* x */
     237             :         0x00, 0xC6, 0x85, 0x8E, 0x06, 0xB7, 0x04, 0x04, 0xE9, 0xCD, 0x9E, 0x3E,
     238             :         0xCB, 0x66, 0x23, 0x95, 0xB4, 0x42, 0x9C, 0x64, 0x81, 0x39, 0x05, 0x3F,
     239             :         0xB5, 0x21, 0xF8, 0x28, 0xAF, 0x60, 0x6B, 0x4D, 0x3D, 0xBA, 0xA1, 0x4B,
     240             :         0x5E, 0x77, 0xEF, 0xE7, 0x59, 0x28, 0xFE, 0x1D, 0xC1, 0x27, 0xA2, 0xFF,
     241             :         0xA8, 0xDE, 0x33, 0x48, 0xB3, 0xC1, 0x85, 0x6A, 0x42, 0x9B, 0xF9, 0x7E,
     242             :         0x7E, 0x31, 0xC2, 0xE5, 0xBD, 0x66,
     243             :         /* y */
     244             :         0x01, 0x18, 0x39, 0x29, 0x6a, 0x78, 0x9a, 0x3b, 0xc0, 0x04, 0x5c, 0x8a,
     245             :         0x5f, 0xb4, 0x2c, 0x7d, 0x1b, 0xd9, 0x98, 0xf5, 0x44, 0x49, 0x57, 0x9b,
     246             :         0x44, 0x68, 0x17, 0xaf, 0xbd, 0x17, 0x27, 0x3e, 0x66, 0x2c, 0x97, 0xee,
     247             :         0x72, 0x99, 0x5e, 0xf4, 0x26, 0x40, 0xc5, 0x50, 0xb9, 0x01, 0x3f, 0xad,
     248             :         0x07, 0x61, 0x35, 0x3c, 0x70, 0x86, 0xa2, 0x72, 0xc2, 0x40, 0x88, 0xbe,
     249             :         0x94, 0x76, 0x9f, 0xd1, 0x66, 0x50,
     250             :         /* order */
     251             :         0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     252             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     253             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x51, 0x86,
     254             :         0x87, 0x83, 0xBF, 0x2F, 0x96, 0x6B, 0x7F, 0xCC, 0x01, 0x48, 0xF7, 0x09,
     255             :         0xA5, 0xD0, 0x3B, 0xB5, 0xC9, 0xB8, 0x89, 0x9C, 0x47, 0xAE, 0xBB, 0x6F,
     256             :         0xB7, 0x1E, 0x91, 0x38, 0x64, 0x09
     257             :     }
     258             : };
     259             : 
     260             : /* the x9.62 prime curves (minus the nist prime curves) */
     261             : static const struct {
     262             :     EC_CURVE_DATA h;
     263             :     unsigned char data[20 + 24 * 6];
     264             : } _EC_X9_62_PRIME_192V2 = {
     265             :     {
     266             :         NID_X9_62_prime_field, 20, 24, 1
     267             :     },
     268             :     {
     269             :         /* seed */
     270             :         0x31, 0xA9, 0x2E, 0xE2, 0x02, 0x9F, 0xD1, 0x0D, 0x90, 0x1B, 0x11, 0x3E,
     271             :         0x99, 0x07, 0x10, 0xF0, 0xD2, 0x1A, 0xC6, 0xB6,
     272             :         /* p */
     273             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     274             :         0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     275             :         /* a */
     276             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     277             :         0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
     278             :         /* b */
     279             :         0xCC, 0x22, 0xD6, 0xDF, 0xB9, 0x5C, 0x6B, 0x25, 0xE4, 0x9C, 0x0D, 0x63,
     280             :         0x64, 0xA4, 0xE5, 0x98, 0x0C, 0x39, 0x3A, 0xA2, 0x16, 0x68, 0xD9, 0x53,
     281             :         /* x */
     282             :         0xEE, 0xA2, 0xBA, 0xE7, 0xE1, 0x49, 0x78, 0x42, 0xF2, 0xDE, 0x77, 0x69,
     283             :         0xCF, 0xE9, 0xC9, 0x89, 0xC0, 0x72, 0xAD, 0x69, 0x6F, 0x48, 0x03, 0x4A,
     284             :         /* y */
     285             :         0x65, 0x74, 0xd1, 0x1d, 0x69, 0xb6, 0xec, 0x7a, 0x67, 0x2b, 0xb8, 0x2a,
     286             :         0x08, 0x3d, 0xf2, 0xf2, 0xb0, 0x84, 0x7d, 0xe9, 0x70, 0xb2, 0xde, 0x15,
     287             :         /* order */
     288             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
     289             :         0x5F, 0xB1, 0xA7, 0x24, 0xDC, 0x80, 0x41, 0x86, 0x48, 0xD8, 0xDD, 0x31
     290             :     }
     291             : };
     292             : 
     293             : static const struct {
     294             :     EC_CURVE_DATA h;
     295             :     unsigned char data[20 + 24 * 6];
     296             : } _EC_X9_62_PRIME_192V3 = {
     297             :     {
     298             :         NID_X9_62_prime_field, 20, 24, 1
     299             :     },
     300             :     {
     301             :         /* seed */
     302             :         0xC4, 0x69, 0x68, 0x44, 0x35, 0xDE, 0xB3, 0x78, 0xC4, 0xB6, 0x5C, 0xA9,
     303             :         0x59, 0x1E, 0x2A, 0x57, 0x63, 0x05, 0x9A, 0x2E,
     304             :         /* p */
     305             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     306             :         0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     307             :         /* a */
     308             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     309             :         0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
     310             :         /* b */
     311             :         0x22, 0x12, 0x3D, 0xC2, 0x39, 0x5A, 0x05, 0xCA, 0xA7, 0x42, 0x3D, 0xAE,
     312             :         0xCC, 0xC9, 0x47, 0x60, 0xA7, 0xD4, 0x62, 0x25, 0x6B, 0xD5, 0x69, 0x16,
     313             :         /* x */
     314             :         0x7D, 0x29, 0x77, 0x81, 0x00, 0xC6, 0x5A, 0x1D, 0xA1, 0x78, 0x37, 0x16,
     315             :         0x58, 0x8D, 0xCE, 0x2B, 0x8B, 0x4A, 0xEE, 0x8E, 0x22, 0x8F, 0x18, 0x96,
     316             :         /* y */
     317             :         0x38, 0xa9, 0x0f, 0x22, 0x63, 0x73, 0x37, 0x33, 0x4b, 0x49, 0xdc, 0xb6,
     318             :         0x6a, 0x6d, 0xc8, 0xf9, 0x97, 0x8a, 0xca, 0x76, 0x48, 0xa9, 0x43, 0xb0,
     319             :         /* order */
     320             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     321             :         0x7A, 0x62, 0xD0, 0x31, 0xC8, 0x3F, 0x42, 0x94, 0xF6, 0x40, 0xEC, 0x13
     322             :     }
     323             : };
     324             : 
     325             : static const struct {
     326             :     EC_CURVE_DATA h;
     327             :     unsigned char data[20 + 30 * 6];
     328             : } _EC_X9_62_PRIME_239V1 = {
     329             :     {
     330             :         NID_X9_62_prime_field, 20, 30, 1
     331             :     },
     332             :     {
     333             :         /* seed */
     334             :         0xE4, 0x3B, 0xB4, 0x60, 0xF0, 0xB8, 0x0C, 0xC0, 0xC0, 0xB0, 0x75, 0x79,
     335             :         0x8E, 0x94, 0x80, 0x60, 0xF8, 0x32, 0x1B, 0x7D,
     336             :         /* p */
     337             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     338             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
     339             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     340             :         /* a */
     341             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     342             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
     343             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
     344             :         /* b */
     345             :         0x6B, 0x01, 0x6C, 0x3B, 0xDC, 0xF1, 0x89, 0x41, 0xD0, 0xD6, 0x54, 0x92,
     346             :         0x14, 0x75, 0xCA, 0x71, 0xA9, 0xDB, 0x2F, 0xB2, 0x7D, 0x1D, 0x37, 0x79,
     347             :         0x61, 0x85, 0xC2, 0x94, 0x2C, 0x0A,
     348             :         /* x */
     349             :         0x0F, 0xFA, 0x96, 0x3C, 0xDC, 0xA8, 0x81, 0x6C, 0xCC, 0x33, 0xB8, 0x64,
     350             :         0x2B, 0xED, 0xF9, 0x05, 0xC3, 0xD3, 0x58, 0x57, 0x3D, 0x3F, 0x27, 0xFB,
     351             :         0xBD, 0x3B, 0x3C, 0xB9, 0xAA, 0xAF,
     352             :         /* y */
     353             :         0x7d, 0xeb, 0xe8, 0xe4, 0xe9, 0x0a, 0x5d, 0xae, 0x6e, 0x40, 0x54, 0xca,
     354             :         0x53, 0x0b, 0xa0, 0x46, 0x54, 0xb3, 0x68, 0x18, 0xce, 0x22, 0x6b, 0x39,
     355             :         0xfc, 0xcb, 0x7b, 0x02, 0xf1, 0xae,
     356             :         /* order */
     357             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     358             :         0x7F, 0xFF, 0xFF, 0x9E, 0x5E, 0x9A, 0x9F, 0x5D, 0x90, 0x71, 0xFB, 0xD1,
     359             :         0x52, 0x26, 0x88, 0x90, 0x9D, 0x0B
     360             :     }
     361             : };
     362             : 
     363             : static const struct {
     364             :     EC_CURVE_DATA h;
     365             :     unsigned char data[20 + 30 * 6];
     366             : } _EC_X9_62_PRIME_239V2 = {
     367             :     {
     368             :         NID_X9_62_prime_field, 20, 30, 1
     369             :     },
     370             :     {
     371             :         /* seed */
     372             :         0xE8, 0xB4, 0x01, 0x16, 0x04, 0x09, 0x53, 0x03, 0xCA, 0x3B, 0x80, 0x99,
     373             :         0x98, 0x2B, 0xE0, 0x9F, 0xCB, 0x9A, 0xE6, 0x16,
     374             :         /* p */
     375             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     376             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
     377             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     378             :         /* a */
     379             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     380             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
     381             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
     382             :         /* b */
     383             :         0x61, 0x7F, 0xAB, 0x68, 0x32, 0x57, 0x6C, 0xBB, 0xFE, 0xD5, 0x0D, 0x99,
     384             :         0xF0, 0x24, 0x9C, 0x3F, 0xEE, 0x58, 0xB9, 0x4B, 0xA0, 0x03, 0x8C, 0x7A,
     385             :         0xE8, 0x4C, 0x8C, 0x83, 0x2F, 0x2C,
     386             :         /* x */
     387             :         0x38, 0xAF, 0x09, 0xD9, 0x87, 0x27, 0x70, 0x51, 0x20, 0xC9, 0x21, 0xBB,
     388             :         0x5E, 0x9E, 0x26, 0x29, 0x6A, 0x3C, 0xDC, 0xF2, 0xF3, 0x57, 0x57, 0xA0,
     389             :         0xEA, 0xFD, 0x87, 0xB8, 0x30, 0xE7,
     390             :         /* y */
     391             :         0x5b, 0x01, 0x25, 0xe4, 0xdb, 0xea, 0x0e, 0xc7, 0x20, 0x6d, 0xa0, 0xfc,
     392             :         0x01, 0xd9, 0xb0, 0x81, 0x32, 0x9f, 0xb5, 0x55, 0xde, 0x6e, 0xf4, 0x60,
     393             :         0x23, 0x7d, 0xff, 0x8b, 0xe4, 0xba,
     394             :         /* order */
     395             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     396             :         0x80, 0x00, 0x00, 0xCF, 0xA7, 0xE8, 0x59, 0x43, 0x77, 0xD4, 0x14, 0xC0,
     397             :         0x38, 0x21, 0xBC, 0x58, 0x20, 0x63
     398             :     }
     399             : };
     400             : 
     401             : static const struct {
     402             :     EC_CURVE_DATA h;
     403             :     unsigned char data[20 + 30 * 6];
     404             : } _EC_X9_62_PRIME_239V3 = {
     405             :     {
     406             :         NID_X9_62_prime_field, 20, 30, 1
     407             :     },
     408             :     {
     409             :         /* seed */
     410             :         0x7D, 0x73, 0x74, 0x16, 0x8F, 0xFE, 0x34, 0x71, 0xB6, 0x0A, 0x85, 0x76,
     411             :         0x86, 0xA1, 0x94, 0x75, 0xD3, 0xBF, 0xA2, 0xFF,
     412             :         /* p */
     413             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     414             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
     415             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     416             :         /* a */
     417             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     418             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
     419             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
     420             :         /* b */
     421             :         0x25, 0x57, 0x05, 0xFA, 0x2A, 0x30, 0x66, 0x54, 0xB1, 0xF4, 0xCB, 0x03,
     422             :         0xD6, 0xA7, 0x50, 0xA3, 0x0C, 0x25, 0x01, 0x02, 0xD4, 0x98, 0x87, 0x17,
     423             :         0xD9, 0xBA, 0x15, 0xAB, 0x6D, 0x3E,
     424             :         /* x */
     425             :         0x67, 0x68, 0xAE, 0x8E, 0x18, 0xBB, 0x92, 0xCF, 0xCF, 0x00, 0x5C, 0x94,
     426             :         0x9A, 0xA2, 0xC6, 0xD9, 0x48, 0x53, 0xD0, 0xE6, 0x60, 0xBB, 0xF8, 0x54,
     427             :         0xB1, 0xC9, 0x50, 0x5F, 0xE9, 0x5A,
     428             :         /* y */
     429             :         0x16, 0x07, 0xe6, 0x89, 0x8f, 0x39, 0x0c, 0x06, 0xbc, 0x1d, 0x55, 0x2b,
     430             :         0xad, 0x22, 0x6f, 0x3b, 0x6f, 0xcf, 0xe4, 0x8b, 0x6e, 0x81, 0x84, 0x99,
     431             :         0xaf, 0x18, 0xe3, 0xed, 0x6c, 0xf3,
     432             :         /* order */
     433             :         0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     434             :         0x7F, 0xFF, 0xFF, 0x97, 0x5D, 0xEB, 0x41, 0xB3, 0xA6, 0x05, 0x7C, 0x3C,
     435             :         0x43, 0x21, 0x46, 0x52, 0x65, 0x51
     436             :     }
     437             : };
     438             : 
     439             : static const struct {
     440             :     EC_CURVE_DATA h;
     441             :     unsigned char data[20 + 32 * 6];
     442             : } _EC_X9_62_PRIME_256V1 = {
     443             :     {
     444             :         NID_X9_62_prime_field, 20, 32, 1
     445             :     },
     446             :     {
     447             :         /* seed */
     448             :         0xC4, 0x9D, 0x36, 0x08, 0x86, 0xE7, 0x04, 0x93, 0x6A, 0x66, 0x78, 0xE1,
     449             :         0x13, 0x9D, 0x26, 0xB7, 0x81, 0x9F, 0x7E, 0x90,
     450             :         /* p */
     451             :         0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
     452             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
     453             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     454             :         /* a */
     455             :         0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
     456             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
     457             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
     458             :         /* b */
     459             :         0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93, 0xE7, 0xB3, 0xEB, 0xBD, 0x55,
     460             :         0x76, 0x98, 0x86, 0xBC, 0x65, 0x1D, 0x06, 0xB0, 0xCC, 0x53, 0xB0, 0xF6,
     461             :         0x3B, 0xCE, 0x3C, 0x3E, 0x27, 0xD2, 0x60, 0x4B,
     462             :         /* x */
     463             :         0x6B, 0x17, 0xD1, 0xF2, 0xE1, 0x2C, 0x42, 0x47, 0xF8, 0xBC, 0xE6, 0xE5,
     464             :         0x63, 0xA4, 0x40, 0xF2, 0x77, 0x03, 0x7D, 0x81, 0x2D, 0xEB, 0x33, 0xA0,
     465             :         0xF4, 0xA1, 0x39, 0x45, 0xD8, 0x98, 0xC2, 0x96,
     466             :         /* y */
     467             :         0x4f, 0xe3, 0x42, 0xe2, 0xfe, 0x1a, 0x7f, 0x9b, 0x8e, 0xe7, 0xeb, 0x4a,
     468             :         0x7c, 0x0f, 0x9e, 0x16, 0x2b, 0xce, 0x33, 0x57, 0x6b, 0x31, 0x5e, 0xce,
     469             :         0xcb, 0xb6, 0x40, 0x68, 0x37, 0xbf, 0x51, 0xf5,
     470             :         /* order */
     471             :         0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
     472             :         0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE6, 0xFA, 0xAD, 0xA7, 0x17, 0x9E, 0x84,
     473             :         0xF3, 0xB9, 0xCA, 0xC2, 0xFC, 0x63, 0x25, 0x51
     474             :     }
     475             : };
     476             : 
     477             : /* the secg prime curves (minus the nist and x9.62 prime curves) */
     478             : static const struct {
     479             :     EC_CURVE_DATA h;
     480             :     unsigned char data[20 + 14 * 6];
     481             : } _EC_SECG_PRIME_112R1 = {
     482             :     {
     483             :         NID_X9_62_prime_field, 20, 14, 1
     484             :     },
     485             :     {
     486             :         /* seed */
     487             :         0x00, 0xF5, 0x0B, 0x02, 0x8E, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61,
     488             :         0x51, 0x75, 0x29, 0x04, 0x72, 0x78, 0x3F, 0xB1,
     489             :         /* p */
     490             :         0xDB, 0x7C, 0x2A, 0xBF, 0x62, 0xE3, 0x5E, 0x66, 0x80, 0x76, 0xBE, 0xAD,
     491             :         0x20, 0x8B,
     492             :         /* a */
     493             :         0xDB, 0x7C, 0x2A, 0xBF, 0x62, 0xE3, 0x5E, 0x66, 0x80, 0x76, 0xBE, 0xAD,
     494             :         0x20, 0x88,
     495             :         /* b */
     496             :         0x65, 0x9E, 0xF8, 0xBA, 0x04, 0x39, 0x16, 0xEE, 0xDE, 0x89, 0x11, 0x70,
     497             :         0x2B, 0x22,
     498             :         /* x */
     499             :         0x09, 0x48, 0x72, 0x39, 0x99, 0x5A, 0x5E, 0xE7, 0x6B, 0x55, 0xF9, 0xC2,
     500             :         0xF0, 0x98,
     501             :         /* y */
     502             :         0xa8, 0x9c, 0xe5, 0xaf, 0x87, 0x24, 0xc0, 0xa2, 0x3e, 0x0e, 0x0f, 0xf7,
     503             :         0x75, 0x00,
     504             :         /* order */
     505             :         0xDB, 0x7C, 0x2A, 0xBF, 0x62, 0xE3, 0x5E, 0x76, 0x28, 0xDF, 0xAC, 0x65,
     506             :         0x61, 0xC5
     507             :     }
     508             : };
     509             : 
     510             : static const struct {
     511             :     EC_CURVE_DATA h;
     512             :     unsigned char data[20 + 14 * 6];
     513             : } _EC_SECG_PRIME_112R2 = {
     514             :     {
     515             :         NID_X9_62_prime_field, 20, 14, 4
     516             :     },
     517             :     {
     518             :         /* seed */
     519             :         0x00, 0x27, 0x57, 0xA1, 0x11, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61,
     520             :         0x51, 0x75, 0x53, 0x16, 0xC0, 0x5E, 0x0B, 0xD4,
     521             :         /* p */
     522             :         0xDB, 0x7C, 0x2A, 0xBF, 0x62, 0xE3, 0x5E, 0x66, 0x80, 0x76, 0xBE, 0xAD,
     523             :         0x20, 0x8B,
     524             :         /* a */
     525             :         0x61, 0x27, 0xC2, 0x4C, 0x05, 0xF3, 0x8A, 0x0A, 0xAA, 0xF6, 0x5C, 0x0E,
     526             :         0xF0, 0x2C,
     527             :         /* b */
     528             :         0x51, 0xDE, 0xF1, 0x81, 0x5D, 0xB5, 0xED, 0x74, 0xFC, 0xC3, 0x4C, 0x85,
     529             :         0xD7, 0x09,
     530             :         /* x */
     531             :         0x4B, 0xA3, 0x0A, 0xB5, 0xE8, 0x92, 0xB4, 0xE1, 0x64, 0x9D, 0xD0, 0x92,
     532             :         0x86, 0x43,
     533             :         /* y */
     534             :         0xad, 0xcd, 0x46, 0xf5, 0x88, 0x2e, 0x37, 0x47, 0xde, 0xf3, 0x6e, 0x95,
     535             :         0x6e, 0x97,
     536             :         /* order */
     537             :         0x36, 0xDF, 0x0A, 0xAF, 0xD8, 0xB8, 0xD7, 0x59, 0x7C, 0xA1, 0x05, 0x20,
     538             :         0xD0, 0x4B
     539             :     }
     540             : };
     541             : 
     542             : static const struct {
     543             :     EC_CURVE_DATA h;
     544             :     unsigned char data[20 + 16 * 6];
     545             : } _EC_SECG_PRIME_128R1 = {
     546             :     {
     547             :         NID_X9_62_prime_field, 20, 16, 1
     548             :     },
     549             :     {
     550             :         /* seed */
     551             :         0x00, 0x0E, 0x0D, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75,
     552             :         0x0C, 0xC0, 0x3A, 0x44, 0x73, 0xD0, 0x36, 0x79,
     553             :         /* p */
     554             :         0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     555             :         0xFF, 0xFF, 0xFF, 0xFF,
     556             :         /* a */
     557             :         0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     558             :         0xFF, 0xFF, 0xFF, 0xFC,
     559             :         /* b */
     560             :         0xE8, 0x75, 0x79, 0xC1, 0x10, 0x79, 0xF4, 0x3D, 0xD8, 0x24, 0x99, 0x3C,
     561             :         0x2C, 0xEE, 0x5E, 0xD3,
     562             :         /* x */
     563             :         0x16, 0x1F, 0xF7, 0x52, 0x8B, 0x89, 0x9B, 0x2D, 0x0C, 0x28, 0x60, 0x7C,
     564             :         0xA5, 0x2C, 0x5B, 0x86,
     565             :         /* y */
     566             :         0xcf, 0x5a, 0xc8, 0x39, 0x5b, 0xaf, 0xeb, 0x13, 0xc0, 0x2d, 0xa2, 0x92,
     567             :         0xdd, 0xed, 0x7a, 0x83,
     568             :         /* order */
     569             :         0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x75, 0xA3, 0x0D, 0x1B,
     570             :         0x90, 0x38, 0xA1, 0x15
     571             :     }
     572             : };
     573             : 
     574             : static const struct {
     575             :     EC_CURVE_DATA h;
     576             :     unsigned char data[20 + 16 * 6];
     577             : } _EC_SECG_PRIME_128R2 = {
     578             :     {
     579             :         NID_X9_62_prime_field, 20, 16, 4
     580             :     },
     581             :     {
     582             :         /* seed */
     583             :         0x00, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75, 0x12, 0xD8,
     584             :         0xF0, 0x34, 0x31, 0xFC, 0xE6, 0x3B, 0x88, 0xF4,
     585             :         /* p */
     586             :         0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     587             :         0xFF, 0xFF, 0xFF, 0xFF,
     588             :         /* a */
     589             :         0xD6, 0x03, 0x19, 0x98, 0xD1, 0xB3, 0xBB, 0xFE, 0xBF, 0x59, 0xCC, 0x9B,
     590             :         0xBF, 0xF9, 0xAE, 0xE1,
     591             :         /* b */
     592             :         0x5E, 0xEE, 0xFC, 0xA3, 0x80, 0xD0, 0x29, 0x19, 0xDC, 0x2C, 0x65, 0x58,
     593             :         0xBB, 0x6D, 0x8A, 0x5D,
     594             :         /* x */
     595             :         0x7B, 0x6A, 0xA5, 0xD8, 0x5E, 0x57, 0x29, 0x83, 0xE6, 0xFB, 0x32, 0xA7,
     596             :         0xCD, 0xEB, 0xC1, 0x40,
     597             :         /* y */
     598             :         0x27, 0xb6, 0x91, 0x6a, 0x89, 0x4d, 0x3a, 0xee, 0x71, 0x06, 0xfe, 0x80,
     599             :         0x5f, 0xc3, 0x4b, 0x44,
     600             :         /* order */
     601             :         0x3F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xBE, 0x00, 0x24, 0x72,
     602             :         0x06, 0x13, 0xB5, 0xA3
     603             :     }
     604             : };
     605             : 
     606             : static const struct {
     607             :     EC_CURVE_DATA h;
     608             :     unsigned char data[0 + 21 * 6];
     609             : } _EC_SECG_PRIME_160K1 = {
     610             :     {
     611             :         NID_X9_62_prime_field, 0, 21, 1
     612             :     },
     613             :     {
     614             :         /* no seed */
     615             :         /* p */
     616             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     617             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xAC, 0x73,
     618             :         /* a */
     619             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     620             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     621             :         /* b */
     622             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     623             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
     624             :         /* x */
     625             :         0x00, 0x3B, 0x4C, 0x38, 0x2C, 0xE3, 0x7A, 0xA1, 0x92, 0xA4, 0x01, 0x9E,
     626             :         0x76, 0x30, 0x36, 0xF4, 0xF5, 0xDD, 0x4D, 0x7E, 0xBB,
     627             :         /* y */
     628             :         0x00, 0x93, 0x8c, 0xf9, 0x35, 0x31, 0x8f, 0xdc, 0xed, 0x6b, 0xc2, 0x82,
     629             :         0x86, 0x53, 0x17, 0x33, 0xc3, 0xf0, 0x3c, 0x4f, 0xee,
     630             :         /* order */
     631             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB8,
     632             :         0xFA, 0x16, 0xDF, 0xAB, 0x9A, 0xCA, 0x16, 0xB6, 0xB3
     633             :     }
     634             : };
     635             : 
     636             : static const struct {
     637             :     EC_CURVE_DATA h;
     638             :     unsigned char data[20 + 21 * 6];
     639             : } _EC_SECG_PRIME_160R1 = {
     640             :     {
     641             :         NID_X9_62_prime_field, 20, 21, 1
     642             :     },
     643             :     {
     644             :         /* seed */
     645             :         0x10, 0x53, 0xCD, 0xE4, 0x2C, 0x14, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56,
     646             :         0x15, 0x17, 0x53, 0x3B, 0xF3, 0xF8, 0x33, 0x45,
     647             :         /* p */
     648             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     649             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF,
     650             :         /* a */
     651             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     652             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFC,
     653             :         /* b */
     654             :         0x00, 0x1C, 0x97, 0xBE, 0xFC, 0x54, 0xBD, 0x7A, 0x8B, 0x65, 0xAC, 0xF8,
     655             :         0x9F, 0x81, 0xD4, 0xD4, 0xAD, 0xC5, 0x65, 0xFA, 0x45,
     656             :         /* x */
     657             :         0x00, 0x4A, 0x96, 0xB5, 0x68, 0x8E, 0xF5, 0x73, 0x28, 0x46, 0x64, 0x69,
     658             :         0x89, 0x68, 0xC3, 0x8B, 0xB9, 0x13, 0xCB, 0xFC, 0x82,
     659             :         /* y */
     660             :         0x00, 0x23, 0xa6, 0x28, 0x55, 0x31, 0x68, 0x94, 0x7d, 0x59, 0xdc, 0xc9,
     661             :         0x12, 0x04, 0x23, 0x51, 0x37, 0x7a, 0xc5, 0xfb, 0x32,
     662             :         /* order */
     663             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF4,
     664             :         0xC8, 0xF9, 0x27, 0xAE, 0xD3, 0xCA, 0x75, 0x22, 0x57
     665             :     }
     666             : };
     667             : 
     668             : static const struct {
     669             :     EC_CURVE_DATA h;
     670             :     unsigned char data[20 + 21 * 6];
     671             : } _EC_SECG_PRIME_160R2 = {
     672             :     {
     673             :         NID_X9_62_prime_field, 20, 21, 1
     674             :     },
     675             :     {
     676             :         /* seed */
     677             :         0xB9, 0x9B, 0x99, 0xB0, 0x99, 0xB3, 0x23, 0xE0, 0x27, 0x09, 0xA4, 0xD6,
     678             :         0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x51,
     679             :         /* p */
     680             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     681             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xAC, 0x73,
     682             :         /* a */
     683             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     684             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xAC, 0x70,
     685             :         /* b */
     686             :         0x00, 0xB4, 0xE1, 0x34, 0xD3, 0xFB, 0x59, 0xEB, 0x8B, 0xAB, 0x57, 0x27,
     687             :         0x49, 0x04, 0x66, 0x4D, 0x5A, 0xF5, 0x03, 0x88, 0xBA,
     688             :         /* x */
     689             :         0x00, 0x52, 0xDC, 0xB0, 0x34, 0x29, 0x3A, 0x11, 0x7E, 0x1F, 0x4F, 0xF1,
     690             :         0x1B, 0x30, 0xF7, 0x19, 0x9D, 0x31, 0x44, 0xCE, 0x6D,
     691             :         /* y */
     692             :         0x00, 0xfe, 0xaf, 0xfe, 0xf2, 0xe3, 0x31, 0xf2, 0x96, 0xe0, 0x71, 0xfa,
     693             :         0x0d, 0xf9, 0x98, 0x2c, 0xfe, 0xa7, 0xd4, 0x3f, 0x2e,
     694             :         /* order */
     695             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35,
     696             :         0x1E, 0xE7, 0x86, 0xA8, 0x18, 0xF3, 0xA1, 0xA1, 0x6B
     697             :     }
     698             : };
     699             : 
     700             : static const struct {
     701             :     EC_CURVE_DATA h;
     702             :     unsigned char data[0 + 24 * 6];
     703             : } _EC_SECG_PRIME_192K1 = {
     704             :     {
     705             :         NID_X9_62_prime_field, 0, 24, 1
     706             :     },
     707             :     {
     708             :         /* no seed */
     709             :         /* p */
     710             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     711             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEE, 0x37,
     712             :         /* a */
     713             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     714             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     715             :         /* b */
     716             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     717             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
     718             :         /* x */
     719             :         0xDB, 0x4F, 0xF1, 0x0E, 0xC0, 0x57, 0xE9, 0xAE, 0x26, 0xB0, 0x7D, 0x02,
     720             :         0x80, 0xB7, 0xF4, 0x34, 0x1D, 0xA5, 0xD1, 0xB1, 0xEA, 0xE0, 0x6C, 0x7D,
     721             :         /* y */
     722             :         0x9b, 0x2f, 0x2f, 0x6d, 0x9c, 0x56, 0x28, 0xa7, 0x84, 0x41, 0x63, 0xd0,
     723             :         0x15, 0xbe, 0x86, 0x34, 0x40, 0x82, 0xaa, 0x88, 0xd9, 0x5e, 0x2f, 0x9d,
     724             :         /* order */
     725             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
     726             :         0x26, 0xF2, 0xFC, 0x17, 0x0F, 0x69, 0x46, 0x6A, 0x74, 0xDE, 0xFD, 0x8D
     727             :     }
     728             : };
     729             : 
     730             : static const struct {
     731             :     EC_CURVE_DATA h;
     732             :     unsigned char data[0 + 29 * 6];
     733             : } _EC_SECG_PRIME_224K1 = {
     734             :     {
     735             :         NID_X9_62_prime_field, 0, 29, 1
     736             :     },
     737             :     {
     738             :         /* no seed */
     739             :         /* p */
     740             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     741             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     742             :         0xFE, 0xFF, 0xFF, 0xE5, 0x6D,
     743             :         /* a */
     744             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     745             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     746             :         0x00, 0x00, 0x00, 0x00, 0x00,
     747             :         /* b */
     748             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     749             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     750             :         0x00, 0x00, 0x00, 0x00, 0x05,
     751             :         /* x */
     752             :         0x00, 0xA1, 0x45, 0x5B, 0x33, 0x4D, 0xF0, 0x99, 0xDF, 0x30, 0xFC, 0x28,
     753             :         0xA1, 0x69, 0xA4, 0x67, 0xE9, 0xE4, 0x70, 0x75, 0xA9, 0x0F, 0x7E, 0x65,
     754             :         0x0E, 0xB6, 0xB7, 0xA4, 0x5C,
     755             :         /* y */
     756             :         0x00, 0x7e, 0x08, 0x9f, 0xed, 0x7f, 0xba, 0x34, 0x42, 0x82, 0xca, 0xfb,
     757             :         0xd6, 0xf7, 0xe3, 0x19, 0xf7, 0xc0, 0xb0, 0xbd, 0x59, 0xe2, 0xca, 0x4b,
     758             :         0xdb, 0x55, 0x6d, 0x61, 0xa5,
     759             :         /* order */
     760             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     761             :         0x00, 0x00, 0x01, 0xDC, 0xE8, 0xD2, 0xEC, 0x61, 0x84, 0xCA, 0xF0, 0xA9,
     762             :         0x71, 0x76, 0x9F, 0xB1, 0xF7
     763             :     }
     764             : };
     765             : 
     766             : static const struct {
     767             :     EC_CURVE_DATA h;
     768             :     unsigned char data[0 + 32 * 6];
     769             : } _EC_SECG_PRIME_256K1 = {
     770             :     {
     771             :         NID_X9_62_prime_field, 0, 32, 1
     772             :     },
     773             :     {
     774             :         /* no seed */
     775             :         /* p */
     776             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     777             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     778             :         0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0x2F,
     779             :         /* a */
     780             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     781             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     782             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     783             :         /* b */
     784             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     785             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     786             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
     787             :         /* x */
     788             :         0x79, 0xBE, 0x66, 0x7E, 0xF9, 0xDC, 0xBB, 0xAC, 0x55, 0xA0, 0x62, 0x95,
     789             :         0xCE, 0x87, 0x0B, 0x07, 0x02, 0x9B, 0xFC, 0xDB, 0x2D, 0xCE, 0x28, 0xD9,
     790             :         0x59, 0xF2, 0x81, 0x5B, 0x16, 0xF8, 0x17, 0x98,
     791             :         /* y */
     792             :         0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc,
     793             :         0x0e, 0x11, 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19,
     794             :         0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10, 0xd4, 0xb8,
     795             :         /* order */
     796             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     797             :         0xFF, 0xFF, 0xFF, 0xFE, 0xBA, 0xAE, 0xDC, 0xE6, 0xAF, 0x48, 0xA0, 0x3B,
     798             :         0xBF, 0xD2, 0x5E, 0x8C, 0xD0, 0x36, 0x41, 0x41
     799             :     }
     800             : };
     801             : 
     802             : /* some wap/wtls curves */
     803             : static const struct {
     804             :     EC_CURVE_DATA h;
     805             :     unsigned char data[0 + 15 * 6];
     806             : } _EC_WTLS_8 = {
     807             :     {
     808             :         NID_X9_62_prime_field, 0, 15, 1
     809             :     },
     810             :     {
     811             :         /* no seed */
     812             :         /* p */
     813             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     814             :         0xFF, 0xFD, 0xE7,
     815             :         /* a */
     816             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     817             :         0x00, 0x00, 0x00,
     818             :         /* b */
     819             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     820             :         0x00, 0x00, 0x03,
     821             :         /* x */
     822             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     823             :         0x00, 0x00, 0x01,
     824             :         /* y */
     825             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     826             :         0x00, 0x00, 0x02,
     827             :         /* order */
     828             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEC, 0xEA, 0x55, 0x1A,
     829             :         0xD8, 0x37, 0xE9
     830             :     }
     831             : };
     832             : 
     833             : static const struct {
     834             :     EC_CURVE_DATA h;
     835             :     unsigned char data[0 + 21 * 6];
     836             : } _EC_WTLS_9 = {
     837             :     {
     838             :         NID_X9_62_prime_field, 0, 21, 1
     839             :     },
     840             :     {
     841             :         /* no seed */
     842             :         /* p */
     843             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     844             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x8F,
     845             :         /* a */
     846             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     847             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     848             :         /* b */
     849             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     850             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
     851             :         /* x */
     852             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     853             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
     854             :         /* y */
     855             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     856             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
     857             :         /* order */
     858             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xCD,
     859             :         0xC9, 0x8A, 0xE0, 0xE2, 0xDE, 0x57, 0x4A, 0xBF, 0x33
     860             :     }
     861             : };
     862             : 
     863             : static const struct {
     864             :     EC_CURVE_DATA h;
     865             :     unsigned char data[0 + 28 * 6];
     866             : } _EC_WTLS_12 = {
     867             :     {
     868             :         NID_X9_62_prime_field, 0, 28, 1
     869             :     },
     870             :     {
     871             :         /* no seed */
     872             :         /* p */
     873             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     874             :         0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     875             :         0x00, 0x00, 0x00, 0x01,
     876             :         /* a */
     877             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     878             :         0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     879             :         0xFF, 0xFF, 0xFF, 0xFE,
     880             :         /* b */
     881             :         0xB4, 0x05, 0x0A, 0x85, 0x0C, 0x04, 0xB3, 0xAB, 0xF5, 0x41, 0x32, 0x56,
     882             :         0x50, 0x44, 0xB0, 0xB7, 0xD7, 0xBF, 0xD8, 0xBA, 0x27, 0x0B, 0x39, 0x43,
     883             :         0x23, 0x55, 0xFF, 0xB4,
     884             :         /* x */
     885             :         0xB7, 0x0E, 0x0C, 0xBD, 0x6B, 0xB4, 0xBF, 0x7F, 0x32, 0x13, 0x90, 0xB9,
     886             :         0x4A, 0x03, 0xC1, 0xD3, 0x56, 0xC2, 0x11, 0x22, 0x34, 0x32, 0x80, 0xD6,
     887             :         0x11, 0x5C, 0x1D, 0x21,
     888             :         /* y */
     889             :         0xbd, 0x37, 0x63, 0x88, 0xb5, 0xf7, 0x23, 0xfb, 0x4c, 0x22, 0xdf, 0xe6,
     890             :         0xcd, 0x43, 0x75, 0xa0, 0x5a, 0x07, 0x47, 0x64, 0x44, 0xd5, 0x81, 0x99,
     891             :         0x85, 0x00, 0x7e, 0x34,
     892             :         /* order */
     893             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
     894             :         0xFF, 0xFF, 0x16, 0xA2, 0xE0, 0xB8, 0xF0, 0x3E, 0x13, 0xDD, 0x29, 0x45,
     895             :         0x5C, 0x5C, 0x2A, 0x3D
     896             :     }
     897             : };
     898             : 
     899             : #ifndef OPENSSL_NO_EC2M
     900             : 
     901             : /* characteristic two curves */
     902             : static const struct {
     903             :     EC_CURVE_DATA h;
     904             :     unsigned char data[20 + 15 * 6];
     905             : } _EC_SECG_CHAR2_113R1 = {
     906             :     {
     907             :         NID_X9_62_characteristic_two_field, 20, 15, 2
     908             :     },
     909             :     {
     910             :         /* seed */
     911             :         0x10, 0xE7, 0x23, 0xAB, 0x14, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 0x15,
     912             :         0x17, 0x56, 0xFE, 0xBF, 0x8F, 0xCB, 0x49, 0xA9,
     913             :         /* p */
     914             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     915             :         0x00, 0x02, 0x01,
     916             :         /* a */
     917             :         0x00, 0x30, 0x88, 0x25, 0x0C, 0xA6, 0xE7, 0xC7, 0xFE, 0x64, 0x9C, 0xE8,
     918             :         0x58, 0x20, 0xF7,
     919             :         /* b */
     920             :         0x00, 0xE8, 0xBE, 0xE4, 0xD3, 0xE2, 0x26, 0x07, 0x44, 0x18, 0x8B, 0xE0,
     921             :         0xE9, 0xC7, 0x23,
     922             :         /* x */
     923             :         0x00, 0x9D, 0x73, 0x61, 0x6F, 0x35, 0xF4, 0xAB, 0x14, 0x07, 0xD7, 0x35,
     924             :         0x62, 0xC1, 0x0F,
     925             :         /* y */
     926             :         0x00, 0xA5, 0x28, 0x30, 0x27, 0x79, 0x58, 0xEE, 0x84, 0xD1, 0x31, 0x5E,
     927             :         0xD3, 0x18, 0x86,
     928             :         /* order */
     929             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xCC, 0xEC, 0x8A,
     930             :         0x39, 0xE5, 0x6F
     931             :     }
     932             : };
     933             : 
     934             : static const struct {
     935             :     EC_CURVE_DATA h;
     936             :     unsigned char data[20 + 15 * 6];
     937             : } _EC_SECG_CHAR2_113R2 = {
     938             :     {
     939             :         NID_X9_62_characteristic_two_field, 20, 15, 2
     940             :     },
     941             :     {
     942             :         /* seed */
     943             :         0x10, 0xC0, 0xFB, 0x15, 0x76, 0x08, 0x60, 0xDE, 0xF1, 0xEE, 0xF4, 0xD6,
     944             :         0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x5D,
     945             :         /* p */
     946             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     947             :         0x00, 0x02, 0x01,
     948             :         /* a */
     949             :         0x00, 0x68, 0x99, 0x18, 0xDB, 0xEC, 0x7E, 0x5A, 0x0D, 0xD6, 0xDF, 0xC0,
     950             :         0xAA, 0x55, 0xC7,
     951             :         /* b */
     952             :         0x00, 0x95, 0xE9, 0xA9, 0xEC, 0x9B, 0x29, 0x7B, 0xD4, 0xBF, 0x36, 0xE0,
     953             :         0x59, 0x18, 0x4F,
     954             :         /* x */
     955             :         0x01, 0xA5, 0x7A, 0x6A, 0x7B, 0x26, 0xCA, 0x5E, 0xF5, 0x2F, 0xCD, 0xB8,
     956             :         0x16, 0x47, 0x97,
     957             :         /* y */
     958             :         0x00, 0xB3, 0xAD, 0xC9, 0x4E, 0xD1, 0xFE, 0x67, 0x4C, 0x06, 0xE6, 0x95,
     959             :         0xBA, 0xBA, 0x1D,
     960             :         /* order */
     961             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x78, 0x9B, 0x24,
     962             :         0x96, 0xAF, 0x93
     963             :     }
     964             : };
     965             : 
     966             : static const struct {
     967             :     EC_CURVE_DATA h;
     968             :     unsigned char data[20 + 17 * 6];
     969             : } _EC_SECG_CHAR2_131R1 = {
     970             :     {
     971             :         NID_X9_62_characteristic_two_field, 20, 17, 2
     972             :     },
     973             :     {
     974             :         /* seed */
     975             :         0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75, 0x98, 0x5B, 0xD3,
     976             :         0xAD, 0xBA, 0xDA, 0x21, 0xB4, 0x3A, 0x97, 0xE2,
     977             :         /* p */
     978             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     979             :         0x00, 0x00, 0x00, 0x01, 0x0D,
     980             :         /* a */
     981             :         0x07, 0xA1, 0x1B, 0x09, 0xA7, 0x6B, 0x56, 0x21, 0x44, 0x41, 0x8F, 0xF3,
     982             :         0xFF, 0x8C, 0x25, 0x70, 0xB8,
     983             :         /* b */
     984             :         0x02, 0x17, 0xC0, 0x56, 0x10, 0x88, 0x4B, 0x63, 0xB9, 0xC6, 0xC7, 0x29,
     985             :         0x16, 0x78, 0xF9, 0xD3, 0x41,
     986             :         /* x */
     987             :         0x00, 0x81, 0xBA, 0xF9, 0x1F, 0xDF, 0x98, 0x33, 0xC4, 0x0F, 0x9C, 0x18,
     988             :         0x13, 0x43, 0x63, 0x83, 0x99,
     989             :         /* y */
     990             :         0x07, 0x8C, 0x6E, 0x7E, 0xA3, 0x8C, 0x00, 0x1F, 0x73, 0xC8, 0x13, 0x4B,
     991             :         0x1B, 0x4E, 0xF9, 0xE1, 0x50,
     992             :         /* order */
     993             :         0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x31, 0x23, 0x95,
     994             :         0x3A, 0x94, 0x64, 0xB5, 0x4D
     995             :     }
     996             : };
     997             : 
     998             : static const struct {
     999             :     EC_CURVE_DATA h;
    1000             :     unsigned char data[20 + 17 * 6];
    1001             : } _EC_SECG_CHAR2_131R2 = {
    1002             :     {
    1003             :         NID_X9_62_characteristic_two_field, 20, 17, 2
    1004             :     },
    1005             :     {
    1006             :         /* seed */
    1007             :         0x98, 0x5B, 0xD3, 0xAD, 0xBA, 0xD4, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56,
    1008             :         0x15, 0x17, 0x5A, 0x21, 0xB4, 0x3A, 0x97, 0xE3,
    1009             :         /* p */
    1010             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1011             :         0x00, 0x00, 0x00, 0x01, 0x0D,
    1012             :         /* a */
    1013             :         0x03, 0xE5, 0xA8, 0x89, 0x19, 0xD7, 0xCA, 0xFC, 0xBF, 0x41, 0x5F, 0x07,
    1014             :         0xC2, 0x17, 0x65, 0x73, 0xB2,
    1015             :         /* b */
    1016             :         0x04, 0xB8, 0x26, 0x6A, 0x46, 0xC5, 0x56, 0x57, 0xAC, 0x73, 0x4C, 0xE3,
    1017             :         0x8F, 0x01, 0x8F, 0x21, 0x92,
    1018             :         /* x */
    1019             :         0x03, 0x56, 0xDC, 0xD8, 0xF2, 0xF9, 0x50, 0x31, 0xAD, 0x65, 0x2D, 0x23,
    1020             :         0x95, 0x1B, 0xB3, 0x66, 0xA8,
    1021             :         /* y */
    1022             :         0x06, 0x48, 0xF0, 0x6D, 0x86, 0x79, 0x40, 0xA5, 0x36, 0x6D, 0x9E, 0x26,
    1023             :         0x5D, 0xE9, 0xEB, 0x24, 0x0F,
    1024             :         /* order */
    1025             :         0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x69, 0x54, 0xA2,
    1026             :         0x33, 0x04, 0x9B, 0xA9, 0x8F
    1027             :     }
    1028             : };
    1029             : 
    1030             : static const struct {
    1031             :     EC_CURVE_DATA h;
    1032             :     unsigned char data[0 + 21 * 6];
    1033             : } _EC_NIST_CHAR2_163K = {
    1034             :     {
    1035             :         NID_X9_62_characteristic_two_field, 0, 21, 2
    1036             :     },
    1037             :     {
    1038             :         /* no seed */
    1039             :         /* p */
    1040             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1041             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9,
    1042             :         /* a */
    1043             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1044             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1045             :         /* b */
    1046             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1047             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1048             :         /* x */
    1049             :         0x02, 0xFE, 0x13, 0xC0, 0x53, 0x7B, 0xBC, 0x11, 0xAC, 0xAA, 0x07, 0xD7,
    1050             :         0x93, 0xDE, 0x4E, 0x6D, 0x5E, 0x5C, 0x94, 0xEE, 0xE8,
    1051             :         /* y */
    1052             :         0x02, 0x89, 0x07, 0x0F, 0xB0, 0x5D, 0x38, 0xFF, 0x58, 0x32, 0x1F, 0x2E,
    1053             :         0x80, 0x05, 0x36, 0xD5, 0x38, 0xCC, 0xDA, 0xA3, 0xD9,
    1054             :         /* order */
    1055             :         0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
    1056             :         0x08, 0xA2, 0xE0, 0xCC, 0x0D, 0x99, 0xF8, 0xA5, 0xEF
    1057             :     }
    1058             : };
    1059             : 
    1060             : static const struct {
    1061             :     EC_CURVE_DATA h;
    1062             :     unsigned char data[0 + 21 * 6];
    1063             : } _EC_SECG_CHAR2_163R1 = {
    1064             :     {
    1065             :         NID_X9_62_characteristic_two_field, 0, 21, 2
    1066             :     },
    1067             :     {
    1068             :         /* no seed */
    1069             : # if 0
    1070             :         /*
    1071             :         * The algorithm used to derive the curve parameters from the seed
    1072             :         * used here is slightly different than the algorithm described in
    1073             :         * X9.62 .
    1074             :         */
    1075             :         0x24, 0xB7, 0xB1, 0x37, 0xC8, 0xA1, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75,
    1076             :         0x61, 0x51, 0x75, 0x6F, 0xD0, 0xDA, 0x2E, 0x5C,
    1077             : # endif
    1078             :         /* p */
    1079             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1080             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9,
    1081             :         /* a */
    1082             :         0x07, 0xB6, 0x88, 0x2C, 0xAA, 0xEF, 0xA8, 0x4F, 0x95, 0x54, 0xFF, 0x84,
    1083             :         0x28, 0xBD, 0x88, 0xE2, 0x46, 0xD2, 0x78, 0x2A, 0xE2,
    1084             :         /* b */
    1085             :         0x07, 0x13, 0x61, 0x2D, 0xCD, 0xDC, 0xB4, 0x0A, 0xAB, 0x94, 0x6B, 0xDA,
    1086             :         0x29, 0xCA, 0x91, 0xF7, 0x3A, 0xF9, 0x58, 0xAF, 0xD9,
    1087             :         /* x */
    1088             :         0x03, 0x69, 0x97, 0x96, 0x97, 0xAB, 0x43, 0x89, 0x77, 0x89, 0x56, 0x67,
    1089             :         0x89, 0x56, 0x7F, 0x78, 0x7A, 0x78, 0x76, 0xA6, 0x54,
    1090             :         /* y */
    1091             :         0x00, 0x43, 0x5E, 0xDB, 0x42, 0xEF, 0xAF, 0xB2, 0x98, 0x9D, 0x51, 0xFE,
    1092             :         0xFC, 0xE3, 0xC8, 0x09, 0x88, 0xF4, 0x1F, 0xF8, 0x83,
    1093             :         /* order */
    1094             :         0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x48,
    1095             :         0xAA, 0xB6, 0x89, 0xC2, 0x9C, 0xA7, 0x10, 0x27, 0x9B
    1096             :     }
    1097             : };
    1098             : 
    1099             : static const struct {
    1100             :     EC_CURVE_DATA h;
    1101             :     unsigned char data[0 + 21 * 6];
    1102             : } _EC_NIST_CHAR2_163B = {
    1103             :     {
    1104             :         NID_X9_62_characteristic_two_field, 0, 21, 2
    1105             :     },
    1106             :     {
    1107             :         /* no seed */
    1108             : # if 0
    1109             :         /*
    1110             :         * The seed here was used to created the curve parameters in normal
    1111             :         * basis representation (and not the polynomial representation used
    1112             :         * here)
    1113             :         */
    1114             :         0x85, 0xE2, 0x5B, 0xFE, 0x5C, 0x86, 0x22, 0x6C, 0xDB, 0x12, 0x01, 0x6F,
    1115             :         0x75, 0x53, 0xF9, 0xD0, 0xE6, 0x93, 0xA2, 0x68,
    1116             : # endif
    1117             :         /* p */
    1118             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1119             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9,
    1120             :         /* a */
    1121             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1122             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1123             :         /* b */
    1124             :         0x02, 0x0A, 0x60, 0x19, 0x07, 0xB8, 0xC9, 0x53, 0xCA, 0x14, 0x81, 0xEB,
    1125             :         0x10, 0x51, 0x2F, 0x78, 0x74, 0x4A, 0x32, 0x05, 0xFD,
    1126             :         /* x */
    1127             :         0x03, 0xF0, 0xEB, 0xA1, 0x62, 0x86, 0xA2, 0xD5, 0x7E, 0xA0, 0x99, 0x11,
    1128             :         0x68, 0xD4, 0x99, 0x46, 0x37, 0xE8, 0x34, 0x3E, 0x36,
    1129             :         /* y */
    1130             :         0x00, 0xD5, 0x1F, 0xBC, 0x6C, 0x71, 0xA0, 0x09, 0x4F, 0xA2, 0xCD, 0xD5,
    1131             :         0x45, 0xB1, 0x1C, 0x5C, 0x0C, 0x79, 0x73, 0x24, 0xF1,
    1132             :         /* order */
    1133             :         0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x92,
    1134             :         0xFE, 0x77, 0xE7, 0x0C, 0x12, 0xA4, 0x23, 0x4C, 0x33
    1135             :     }
    1136             : };
    1137             : 
    1138             : static const struct {
    1139             :     EC_CURVE_DATA h;
    1140             :     unsigned char data[20 + 25 * 6];
    1141             : } _EC_SECG_CHAR2_193R1 = {
    1142             :     {
    1143             :         NID_X9_62_characteristic_two_field, 20, 25, 2
    1144             :     },
    1145             :     {
    1146             :         /* seed */
    1147             :         0x10, 0x3F, 0xAE, 0xC7, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51,
    1148             :         0x75, 0x77, 0x7F, 0xC5, 0xB1, 0x91, 0xEF, 0x30,
    1149             :         /* p */
    1150             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1151             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
    1152             :         0x01,
    1153             :         /* a */
    1154             :         0x00, 0x17, 0x85, 0x8F, 0xEB, 0x7A, 0x98, 0x97, 0x51, 0x69, 0xE1, 0x71,
    1155             :         0xF7, 0x7B, 0x40, 0x87, 0xDE, 0x09, 0x8A, 0xC8, 0xA9, 0x11, 0xDF, 0x7B,
    1156             :         0x01,
    1157             :         /* b */
    1158             :         0x00, 0xFD, 0xFB, 0x49, 0xBF, 0xE6, 0xC3, 0xA8, 0x9F, 0xAC, 0xAD, 0xAA,
    1159             :         0x7A, 0x1E, 0x5B, 0xBC, 0x7C, 0xC1, 0xC2, 0xE5, 0xD8, 0x31, 0x47, 0x88,
    1160             :         0x14,
    1161             :         /* x */
    1162             :         0x01, 0xF4, 0x81, 0xBC, 0x5F, 0x0F, 0xF8, 0x4A, 0x74, 0xAD, 0x6C, 0xDF,
    1163             :         0x6F, 0xDE, 0xF4, 0xBF, 0x61, 0x79, 0x62, 0x53, 0x72, 0xD8, 0xC0, 0xC5,
    1164             :         0xE1,
    1165             :         /* y */
    1166             :         0x00, 0x25, 0xE3, 0x99, 0xF2, 0x90, 0x37, 0x12, 0xCC, 0xF3, 0xEA, 0x9E,
    1167             :         0x3A, 0x1A, 0xD1, 0x7F, 0xB0, 0xB3, 0x20, 0x1B, 0x6A, 0xF7, 0xCE, 0x1B,
    1168             :         0x05,
    1169             :         /* order */
    1170             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1171             :         0x00, 0xC7, 0xF3, 0x4A, 0x77, 0x8F, 0x44, 0x3A, 0xCC, 0x92, 0x0E, 0xBA,
    1172             :         0x49
    1173             :     }
    1174             : };
    1175             : 
    1176             : static const struct {
    1177             :     EC_CURVE_DATA h;
    1178             :     unsigned char data[20 + 25 * 6];
    1179             : } _EC_SECG_CHAR2_193R2 = {
    1180             :     {
    1181             :         NID_X9_62_characteristic_two_field, 20, 25, 2
    1182             :     },
    1183             :     {
    1184             :         /* seed */
    1185             :         0x10, 0xB7, 0xB4, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x51,
    1186             :         0x37, 0xC8, 0xA1, 0x6F, 0xD0, 0xDA, 0x22, 0x11,
    1187             :         /* p */
    1188             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1189             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
    1190             :         0x01,
    1191             :         /* a */
    1192             :         0x01, 0x63, 0xF3, 0x5A, 0x51, 0x37, 0xC2, 0xCE, 0x3E, 0xA6, 0xED, 0x86,
    1193             :         0x67, 0x19, 0x0B, 0x0B, 0xC4, 0x3E, 0xCD, 0x69, 0x97, 0x77, 0x02, 0x70,
    1194             :         0x9B,
    1195             :         /* b */
    1196             :         0x00, 0xC9, 0xBB, 0x9E, 0x89, 0x27, 0xD4, 0xD6, 0x4C, 0x37, 0x7E, 0x2A,
    1197             :         0xB2, 0x85, 0x6A, 0x5B, 0x16, 0xE3, 0xEF, 0xB7, 0xF6, 0x1D, 0x43, 0x16,
    1198             :         0xAE,
    1199             :         /* x */
    1200             :         0x00, 0xD9, 0xB6, 0x7D, 0x19, 0x2E, 0x03, 0x67, 0xC8, 0x03, 0xF3, 0x9E,
    1201             :         0x1A, 0x7E, 0x82, 0xCA, 0x14, 0xA6, 0x51, 0x35, 0x0A, 0xAE, 0x61, 0x7E,
    1202             :         0x8F,
    1203             :         /* y */
    1204             :         0x01, 0xCE, 0x94, 0x33, 0x56, 0x07, 0xC3, 0x04, 0xAC, 0x29, 0xE7, 0xDE,
    1205             :         0xFB, 0xD9, 0xCA, 0x01, 0xF5, 0x96, 0xF9, 0x27, 0x22, 0x4C, 0xDE, 0xCF,
    1206             :         0x6C,
    1207             :         /* order */
    1208             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1209             :         0x01, 0x5A, 0xAB, 0x56, 0x1B, 0x00, 0x54, 0x13, 0xCC, 0xD4, 0xEE, 0x99,
    1210             :         0xD5
    1211             :     }
    1212             : };
    1213             : 
    1214             : static const struct {
    1215             :     EC_CURVE_DATA h;
    1216             :     unsigned char data[0 + 30 * 6];
    1217             : } _EC_NIST_CHAR2_233K = {
    1218             :     {
    1219             :         NID_X9_62_characteristic_two_field, 0, 30, 4
    1220             :     },
    1221             :     {
    1222             :         /* no seed */
    1223             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1224             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
    1225             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1226             :         /* a */
    1227             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1228             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1229             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1230             :         /* b */
    1231             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1232             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1233             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1234             :         /* x */
    1235             :         0x01, 0x72, 0x32, 0xBA, 0x85, 0x3A, 0x7E, 0x73, 0x1A, 0xF1, 0x29, 0xF2,
    1236             :         0x2F, 0xF4, 0x14, 0x95, 0x63, 0xA4, 0x19, 0xC2, 0x6B, 0xF5, 0x0A, 0x4C,
    1237             :         0x9D, 0x6E, 0xEF, 0xAD, 0x61, 0x26,
    1238             :         /* y */
    1239             :         0x01, 0xDB, 0x53, 0x7D, 0xEC, 0xE8, 0x19, 0xB7, 0xF7, 0x0F, 0x55, 0x5A,
    1240             :         0x67, 0xC4, 0x27, 0xA8, 0xCD, 0x9B, 0xF1, 0x8A, 0xEB, 0x9B, 0x56, 0xE0,
    1241             :         0xC1, 0x10, 0x56, 0xFA, 0xE6, 0xA3,
    1242             :         /* order */
    1243             :         0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1244             :         0x00, 0x00, 0x00, 0x06, 0x9D, 0x5B, 0xB9, 0x15, 0xBC, 0xD4, 0x6E, 0xFB,
    1245             :         0x1A, 0xD5, 0xF1, 0x73, 0xAB, 0xDF
    1246             :     }
    1247             : };
    1248             : 
    1249             : static const struct {
    1250             :     EC_CURVE_DATA h;
    1251             :     unsigned char data[20 + 30 * 6];
    1252             : } _EC_NIST_CHAR2_233B = {
    1253             :     {
    1254             :         NID_X9_62_characteristic_two_field, 20, 30, 2
    1255             :     },
    1256             :     {
    1257             :         /* seed */
    1258             :         0x74, 0xD5, 0x9F, 0xF0, 0x7F, 0x6B, 0x41, 0x3D, 0x0E, 0xA1, 0x4B, 0x34,
    1259             :         0x4B, 0x20, 0xA2, 0xDB, 0x04, 0x9B, 0x50, 0xC3,
    1260             :         /* p */
    1261             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1262             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
    1263             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1264             :         /* a */
    1265             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1266             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1267             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1268             :         /* b */
    1269             :         0x00, 0x66, 0x64, 0x7E, 0xDE, 0x6C, 0x33, 0x2C, 0x7F, 0x8C, 0x09, 0x23,
    1270             :         0xBB, 0x58, 0x21, 0x3B, 0x33, 0x3B, 0x20, 0xE9, 0xCE, 0x42, 0x81, 0xFE,
    1271             :         0x11, 0x5F, 0x7D, 0x8F, 0x90, 0xAD,
    1272             :         /* x */
    1273             :         0x00, 0xFA, 0xC9, 0xDF, 0xCB, 0xAC, 0x83, 0x13, 0xBB, 0x21, 0x39, 0xF1,
    1274             :         0xBB, 0x75, 0x5F, 0xEF, 0x65, 0xBC, 0x39, 0x1F, 0x8B, 0x36, 0xF8, 0xF8,
    1275             :         0xEB, 0x73, 0x71, 0xFD, 0x55, 0x8B,
    1276             :         /* y */
    1277             :         0x01, 0x00, 0x6A, 0x08, 0xA4, 0x19, 0x03, 0x35, 0x06, 0x78, 0xE5, 0x85,
    1278             :         0x28, 0xBE, 0xBF, 0x8A, 0x0B, 0xEF, 0xF8, 0x67, 0xA7, 0xCA, 0x36, 0x71,
    1279             :         0x6F, 0x7E, 0x01, 0xF8, 0x10, 0x52,
    1280             :         /* order */
    1281             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1282             :         0x00, 0x00, 0x00, 0x13, 0xE9, 0x74, 0xE7, 0x2F, 0x8A, 0x69, 0x22, 0x03,
    1283             :         0x1D, 0x26, 0x03, 0xCF, 0xE0, 0xD7
    1284             :     }
    1285             : };
    1286             : 
    1287             : static const struct {
    1288             :     EC_CURVE_DATA h;
    1289             :     unsigned char data[0 + 30 * 6];
    1290             : } _EC_SECG_CHAR2_239K1 = {
    1291             :     {
    1292             :         NID_X9_62_characteristic_two_field, 0, 30, 4
    1293             :     },
    1294             :     {
    1295             :         /* no seed */
    1296             :         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
    1297             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1298             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1299             :         /* a */
    1300             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1301             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1302             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1303             :         /* b */
    1304             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1305             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1306             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1307             :         /* x */
    1308             :         0x29, 0xA0, 0xB6, 0xA8, 0x87, 0xA9, 0x83, 0xE9, 0x73, 0x09, 0x88, 0xA6,
    1309             :         0x87, 0x27, 0xA8, 0xB2, 0xD1, 0x26, 0xC4, 0x4C, 0xC2, 0xCC, 0x7B, 0x2A,
    1310             :         0x65, 0x55, 0x19, 0x30, 0x35, 0xDC,
    1311             :         /* y */
    1312             :         0x76, 0x31, 0x08, 0x04, 0xF1, 0x2E, 0x54, 0x9B, 0xDB, 0x01, 0x1C, 0x10,
    1313             :         0x30, 0x89, 0xE7, 0x35, 0x10, 0xAC, 0xB2, 0x75, 0xFC, 0x31, 0x2A, 0x5D,
    1314             :         0xC6, 0xB7, 0x65, 0x53, 0xF0, 0xCA,
    1315             :         /* order */
    1316             :         0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1317             :         0x00, 0x00, 0x00, 0x5A, 0x79, 0xFE, 0xC6, 0x7C, 0xB6, 0xE9, 0x1F, 0x1C,
    1318             :         0x1D, 0xA8, 0x00, 0xE4, 0x78, 0xA5
    1319             :     }
    1320             : };
    1321             : 
    1322             : static const struct {
    1323             :     EC_CURVE_DATA h;
    1324             :     unsigned char data[0 + 36 * 6];
    1325             : } _EC_NIST_CHAR2_283K = {
    1326             :     {
    1327             :         NID_X9_62_characteristic_two_field, 0, 36, 4
    1328             :     },
    1329             :     {
    1330             :         /* no seed */
    1331             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1332             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1333             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA1,
    1334             :         /* a */
    1335             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1336             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1337             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1338             :         /* b */
    1339             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1340             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1341             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1342             :         /* x */
    1343             :         0x05, 0x03, 0x21, 0x3F, 0x78, 0xCA, 0x44, 0x88, 0x3F, 0x1A, 0x3B, 0x81,
    1344             :         0x62, 0xF1, 0x88, 0xE5, 0x53, 0xCD, 0x26, 0x5F, 0x23, 0xC1, 0x56, 0x7A,
    1345             :         0x16, 0x87, 0x69, 0x13, 0xB0, 0xC2, 0xAC, 0x24, 0x58, 0x49, 0x28, 0x36,
    1346             :         /* y */
    1347             :         0x01, 0xCC, 0xDA, 0x38, 0x0F, 0x1C, 0x9E, 0x31, 0x8D, 0x90, 0xF9, 0x5D,
    1348             :         0x07, 0xE5, 0x42, 0x6F, 0xE8, 0x7E, 0x45, 0xC0, 0xE8, 0x18, 0x46, 0x98,
    1349             :         0xE4, 0x59, 0x62, 0x36, 0x4E, 0x34, 0x11, 0x61, 0x77, 0xDD, 0x22, 0x59,
    1350             :         /* order */
    1351             :         0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    1352             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xAE, 0x2E, 0xD0, 0x75, 0x77,
    1353             :         0x26, 0x5D, 0xFF, 0x7F, 0x94, 0x45, 0x1E, 0x06, 0x1E, 0x16, 0x3C, 0x61
    1354             :     }
    1355             : };
    1356             : 
    1357             : static const struct {
    1358             :     EC_CURVE_DATA h;
    1359             :     unsigned char data[20 + 36 * 6];
    1360             : } _EC_NIST_CHAR2_283B = {
    1361             :     {
    1362             :         NID_X9_62_characteristic_two_field, 20, 36, 2
    1363             :     },
    1364             :     {
    1365             :         /* no seed */
    1366             :         0x77, 0xE2, 0xB0, 0x73, 0x70, 0xEB, 0x0F, 0x83, 0x2A, 0x6D, 0xD5, 0xB6,
    1367             :         0x2D, 0xFC, 0x88, 0xCD, 0x06, 0xBB, 0x84, 0xBE,
    1368             :         /* p */
    1369             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1370             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1371             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA1,
    1372             :         /* a */
    1373             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1374             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1375             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1376             :         /* b */
    1377             :         0x02, 0x7B, 0x68, 0x0A, 0xC8, 0xB8, 0x59, 0x6D, 0xA5, 0xA4, 0xAF, 0x8A,
    1378             :         0x19, 0xA0, 0x30, 0x3F, 0xCA, 0x97, 0xFD, 0x76, 0x45, 0x30, 0x9F, 0xA2,
    1379             :         0xA5, 0x81, 0x48, 0x5A, 0xF6, 0x26, 0x3E, 0x31, 0x3B, 0x79, 0xA2, 0xF5,
    1380             :         /* x */
    1381             :         0x05, 0xF9, 0x39, 0x25, 0x8D, 0xB7, 0xDD, 0x90, 0xE1, 0x93, 0x4F, 0x8C,
    1382             :         0x70, 0xB0, 0xDF, 0xEC, 0x2E, 0xED, 0x25, 0xB8, 0x55, 0x7E, 0xAC, 0x9C,
    1383             :         0x80, 0xE2, 0xE1, 0x98, 0xF8, 0xCD, 0xBE, 0xCD, 0x86, 0xB1, 0x20, 0x53,
    1384             :         /* y */
    1385             :         0x03, 0x67, 0x68, 0x54, 0xFE, 0x24, 0x14, 0x1C, 0xB9, 0x8F, 0xE6, 0xD4,
    1386             :         0xB2, 0x0D, 0x02, 0xB4, 0x51, 0x6F, 0xF7, 0x02, 0x35, 0x0E, 0xDD, 0xB0,
    1387             :         0x82, 0x67, 0x79, 0xC8, 0x13, 0xF0, 0xDF, 0x45, 0xBE, 0x81, 0x12, 0xF4,
    1388             :         /* order */
    1389             :         0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    1390             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x90, 0x39, 0x96, 0x60, 0xFC,
    1391             :         0x93, 0x8A, 0x90, 0x16, 0x5B, 0x04, 0x2A, 0x7C, 0xEF, 0xAD, 0xB3, 0x07
    1392             :     }
    1393             : };
    1394             : 
    1395             : static const struct {
    1396             :     EC_CURVE_DATA h;
    1397             :     unsigned char data[0 + 52 * 6];
    1398             : } _EC_NIST_CHAR2_409K = {
    1399             :     {
    1400             :         NID_X9_62_characteristic_two_field, 0, 52, 4
    1401             :     },
    1402             :     {
    1403             :         /* no seed */
    1404             :         /* p */
    1405             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1406             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1407             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1408             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1409             :         0x00, 0x00, 0x00, 0x01,
    1410             :         /* a */
    1411             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1412             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1413             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1414             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1415             :         0x00, 0x00, 0x00, 0x00,
    1416             :         /* b */
    1417             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1418             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1419             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1420             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1421             :         0x00, 0x00, 0x00, 0x01,
    1422             :         /* x */
    1423             :         0x00, 0x60, 0xF0, 0x5F, 0x65, 0x8F, 0x49, 0xC1, 0xAD, 0x3A, 0xB1, 0x89,
    1424             :         0x0F, 0x71, 0x84, 0x21, 0x0E, 0xFD, 0x09, 0x87, 0xE3, 0x07, 0xC8, 0x4C,
    1425             :         0x27, 0xAC, 0xCF, 0xB8, 0xF9, 0xF6, 0x7C, 0xC2, 0xC4, 0x60, 0x18, 0x9E,
    1426             :         0xB5, 0xAA, 0xAA, 0x62, 0xEE, 0x22, 0x2E, 0xB1, 0xB3, 0x55, 0x40, 0xCF,
    1427             :         0xE9, 0x02, 0x37, 0x46,
    1428             :         /* y */
    1429             :         0x01, 0xE3, 0x69, 0x05, 0x0B, 0x7C, 0x4E, 0x42, 0xAC, 0xBA, 0x1D, 0xAC,
    1430             :         0xBF, 0x04, 0x29, 0x9C, 0x34, 0x60, 0x78, 0x2F, 0x91, 0x8E, 0xA4, 0x27,
    1431             :         0xE6, 0x32, 0x51, 0x65, 0xE9, 0xEA, 0x10, 0xE3, 0xDA, 0x5F, 0x6C, 0x42,
    1432             :         0xE9, 0xC5, 0x52, 0x15, 0xAA, 0x9C, 0xA2, 0x7A, 0x58, 0x63, 0xEC, 0x48,
    1433             :         0xD8, 0xE0, 0x28, 0x6B,
    1434             :         /* order */
    1435             :         0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    1436             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    1437             :         0xFF, 0xFF, 0xFE, 0x5F, 0x83, 0xB2, 0xD4, 0xEA, 0x20, 0x40, 0x0E, 0xC4,
    1438             :         0x55, 0x7D, 0x5E, 0xD3, 0xE3, 0xE7, 0xCA, 0x5B, 0x4B, 0x5C, 0x83, 0xB8,
    1439             :         0xE0, 0x1E, 0x5F, 0xCF
    1440             :     }
    1441             : };
    1442             : 
    1443             : static const struct {
    1444             :     EC_CURVE_DATA h;
    1445             :     unsigned char data[20 + 52 * 6];
    1446             : } _EC_NIST_CHAR2_409B = {
    1447             :     {
    1448             :         NID_X9_62_characteristic_two_field, 20, 52, 2
    1449             :     },
    1450             :     {
    1451             :         /* seed */
    1452             :         0x40, 0x99, 0xB5, 0xA4, 0x57, 0xF9, 0xD6, 0x9F, 0x79, 0x21, 0x3D, 0x09,
    1453             :         0x4C, 0x4B, 0xCD, 0x4D, 0x42, 0x62, 0x21, 0x0B,
    1454             :         /* p */
    1455             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1456             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1457             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1458             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1459             :         0x00, 0x00, 0x00, 0x01,
    1460             :         /* a */
    1461             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1462             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1463             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1464             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1465             :         0x00, 0x00, 0x00, 0x01,
    1466             :         /* b */
    1467             :         0x00, 0x21, 0xA5, 0xC2, 0xC8, 0xEE, 0x9F, 0xEB, 0x5C, 0x4B, 0x9A, 0x75,
    1468             :         0x3B, 0x7B, 0x47, 0x6B, 0x7F, 0xD6, 0x42, 0x2E, 0xF1, 0xF3, 0xDD, 0x67,
    1469             :         0x47, 0x61, 0xFA, 0x99, 0xD6, 0xAC, 0x27, 0xC8, 0xA9, 0xA1, 0x97, 0xB2,
    1470             :         0x72, 0x82, 0x2F, 0x6C, 0xD5, 0x7A, 0x55, 0xAA, 0x4F, 0x50, 0xAE, 0x31,
    1471             :         0x7B, 0x13, 0x54, 0x5F,
    1472             :         /* x */
    1473             :         0x01, 0x5D, 0x48, 0x60, 0xD0, 0x88, 0xDD, 0xB3, 0x49, 0x6B, 0x0C, 0x60,
    1474             :         0x64, 0x75, 0x62, 0x60, 0x44, 0x1C, 0xDE, 0x4A, 0xF1, 0x77, 0x1D, 0x4D,
    1475             :         0xB0, 0x1F, 0xFE, 0x5B, 0x34, 0xE5, 0x97, 0x03, 0xDC, 0x25, 0x5A, 0x86,
    1476             :         0x8A, 0x11, 0x80, 0x51, 0x56, 0x03, 0xAE, 0xAB, 0x60, 0x79, 0x4E, 0x54,
    1477             :         0xBB, 0x79, 0x96, 0xA7,
    1478             :         /* y */
    1479             :         0x00, 0x61, 0xB1, 0xCF, 0xAB, 0x6B, 0xE5, 0xF3, 0x2B, 0xBF, 0xA7, 0x83,
    1480             :         0x24, 0xED, 0x10, 0x6A, 0x76, 0x36, 0xB9, 0xC5, 0xA7, 0xBD, 0x19, 0x8D,
    1481             :         0x01, 0x58, 0xAA, 0x4F, 0x54, 0x88, 0xD0, 0x8F, 0x38, 0x51, 0x4F, 0x1F,
    1482             :         0xDF, 0x4B, 0x4F, 0x40, 0xD2, 0x18, 0x1B, 0x36, 0x81, 0xC3, 0x64, 0xBA,
    1483             :         0x02, 0x73, 0xC7, 0x06,
    1484             :         /* order */
    1485             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1486             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1487             :         0x00, 0x00, 0x01, 0xE2, 0xAA, 0xD6, 0xA6, 0x12, 0xF3, 0x33, 0x07, 0xBE,
    1488             :         0x5F, 0xA4, 0x7C, 0x3C, 0x9E, 0x05, 0x2F, 0x83, 0x81, 0x64, 0xCD, 0x37,
    1489             :         0xD9, 0xA2, 0x11, 0x73
    1490             :     }
    1491             : };
    1492             : 
    1493             : static const struct {
    1494             :     EC_CURVE_DATA h;
    1495             :     unsigned char data[0 + 72 * 6];
    1496             : } _EC_NIST_CHAR2_571K = {
    1497             :     {
    1498             :         NID_X9_62_characteristic_two_field, 0, 72, 4
    1499             :     },
    1500             :     {
    1501             :         /* no seed */
    1502             :         /* p */
    1503             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1504             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1505             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1506             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1507             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1508             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x25,
    1509             :         /* a */
    1510             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1511             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1512             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1513             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1514             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1515             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1516             :         /* b */
    1517             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1518             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1519             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1520             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1521             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1522             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1523             :         /* x */
    1524             :         0x02, 0x6E, 0xB7, 0xA8, 0x59, 0x92, 0x3F, 0xBC, 0x82, 0x18, 0x96, 0x31,
    1525             :         0xF8, 0x10, 0x3F, 0xE4, 0xAC, 0x9C, 0xA2, 0x97, 0x00, 0x12, 0xD5, 0xD4,
    1526             :         0x60, 0x24, 0x80, 0x48, 0x01, 0x84, 0x1C, 0xA4, 0x43, 0x70, 0x95, 0x84,
    1527             :         0x93, 0xB2, 0x05, 0xE6, 0x47, 0xDA, 0x30, 0x4D, 0xB4, 0xCE, 0xB0, 0x8C,
    1528             :         0xBB, 0xD1, 0xBA, 0x39, 0x49, 0x47, 0x76, 0xFB, 0x98, 0x8B, 0x47, 0x17,
    1529             :         0x4D, 0xCA, 0x88, 0xC7, 0xE2, 0x94, 0x52, 0x83, 0xA0, 0x1C, 0x89, 0x72,
    1530             :         /* y */
    1531             :         0x03, 0x49, 0xDC, 0x80, 0x7F, 0x4F, 0xBF, 0x37, 0x4F, 0x4A, 0xEA, 0xDE,
    1532             :         0x3B, 0xCA, 0x95, 0x31, 0x4D, 0xD5, 0x8C, 0xEC, 0x9F, 0x30, 0x7A, 0x54,
    1533             :         0xFF, 0xC6, 0x1E, 0xFC, 0x00, 0x6D, 0x8A, 0x2C, 0x9D, 0x49, 0x79, 0xC0,
    1534             :         0xAC, 0x44, 0xAE, 0xA7, 0x4F, 0xBE, 0xBB, 0xB9, 0xF7, 0x72, 0xAE, 0xDC,
    1535             :         0xB6, 0x20, 0xB0, 0x1A, 0x7B, 0xA7, 0xAF, 0x1B, 0x32, 0x04, 0x30, 0xC8,
    1536             :         0x59, 0x19, 0x84, 0xF6, 0x01, 0xCD, 0x4C, 0x14, 0x3E, 0xF1, 0xC7, 0xA3,
    1537             :         /* order */
    1538             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1539             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1540             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1541             :         0x13, 0x18, 0x50, 0xE1, 0xF1, 0x9A, 0x63, 0xE4, 0xB3, 0x91, 0xA8, 0xDB,
    1542             :         0x91, 0x7F, 0x41, 0x38, 0xB6, 0x30, 0xD8, 0x4B, 0xE5, 0xD6, 0x39, 0x38,
    1543             :         0x1E, 0x91, 0xDE, 0xB4, 0x5C, 0xFE, 0x77, 0x8F, 0x63, 0x7C, 0x10, 0x01
    1544             :     }
    1545             : };
    1546             : 
    1547             : static const struct {
    1548             :     EC_CURVE_DATA h;
    1549             :     unsigned char data[20 + 72 * 6];
    1550             : } _EC_NIST_CHAR2_571B = {
    1551             :     {
    1552             :         NID_X9_62_characteristic_two_field, 20, 72, 2
    1553             :     },
    1554             :     {
    1555             :         /* seed */
    1556             :         0x2A, 0xA0, 0x58, 0xF7, 0x3A, 0x0E, 0x33, 0xAB, 0x48, 0x6B, 0x0F, 0x61,
    1557             :         0x04, 0x10, 0xC5, 0x3A, 0x7F, 0x13, 0x23, 0x10,
    1558             :         /* p */
    1559             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1560             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1561             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1562             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1563             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1564             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x25,
    1565             :         /* a */
    1566             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1567             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1568             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1569             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1570             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1571             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    1572             :         /* b */
    1573             :         0x02, 0xF4, 0x0E, 0x7E, 0x22, 0x21, 0xF2, 0x95, 0xDE, 0x29, 0x71, 0x17,
    1574             :         0xB7, 0xF3, 0xD6, 0x2F, 0x5C, 0x6A, 0x97, 0xFF, 0xCB, 0x8C, 0xEF, 0xF1,
    1575             :         0xCD, 0x6B, 0xA8, 0xCE, 0x4A, 0x9A, 0x18, 0xAD, 0x84, 0xFF, 0xAB, 0xBD,
    1576             :         0x8E, 0xFA, 0x59, 0x33, 0x2B, 0xE7, 0xAD, 0x67, 0x56, 0xA6, 0x6E, 0x29,
    1577             :         0x4A, 0xFD, 0x18, 0x5A, 0x78, 0xFF, 0x12, 0xAA, 0x52, 0x0E, 0x4D, 0xE7,
    1578             :         0x39, 0xBA, 0xCA, 0x0C, 0x7F, 0xFE, 0xFF, 0x7F, 0x29, 0x55, 0x72, 0x7A,
    1579             :         /* x */
    1580             :         0x03, 0x03, 0x00, 0x1D, 0x34, 0xB8, 0x56, 0x29, 0x6C, 0x16, 0xC0, 0xD4,
    1581             :         0x0D, 0x3C, 0xD7, 0x75, 0x0A, 0x93, 0xD1, 0xD2, 0x95, 0x5F, 0xA8, 0x0A,
    1582             :         0xA5, 0xF4, 0x0F, 0xC8, 0xDB, 0x7B, 0x2A, 0xBD, 0xBD, 0xE5, 0x39, 0x50,
    1583             :         0xF4, 0xC0, 0xD2, 0x93, 0xCD, 0xD7, 0x11, 0xA3, 0x5B, 0x67, 0xFB, 0x14,
    1584             :         0x99, 0xAE, 0x60, 0x03, 0x86, 0x14, 0xF1, 0x39, 0x4A, 0xBF, 0xA3, 0xB4,
    1585             :         0xC8, 0x50, 0xD9, 0x27, 0xE1, 0xE7, 0x76, 0x9C, 0x8E, 0xEC, 0x2D, 0x19,
    1586             :         /* y */
    1587             :         0x03, 0x7B, 0xF2, 0x73, 0x42, 0xDA, 0x63, 0x9B, 0x6D, 0xCC, 0xFF, 0xFE,
    1588             :         0xB7, 0x3D, 0x69, 0xD7, 0x8C, 0x6C, 0x27, 0xA6, 0x00, 0x9C, 0xBB, 0xCA,
    1589             :         0x19, 0x80, 0xF8, 0x53, 0x39, 0x21, 0xE8, 0xA6, 0x84, 0x42, 0x3E, 0x43,
    1590             :         0xBA, 0xB0, 0x8A, 0x57, 0x62, 0x91, 0xAF, 0x8F, 0x46, 0x1B, 0xB2, 0xA8,
    1591             :         0xB3, 0x53, 0x1D, 0x2F, 0x04, 0x85, 0xC1, 0x9B, 0x16, 0xE2, 0xF1, 0x51,
    1592             :         0x6E, 0x23, 0xDD, 0x3C, 0x1A, 0x48, 0x27, 0xAF, 0x1B, 0x8A, 0xC1, 0x5B,
    1593             :         /* order */
    1594             :         0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    1595             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    1596             :         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    1597             :         0xE6, 0x61, 0xCE, 0x18, 0xFF, 0x55, 0x98, 0x73, 0x08, 0x05, 0x9B, 0x18,
    1598             :         0x68, 0x23, 0x85, 0x1E, 0xC7, 0xDD, 0x9C, 0xA1, 0x16, 0x1D, 0xE9, 0x3D,
    1599             :         0x51, 0x74, 0xD6, 0x6E, 0x83, 0x82, 0xE9, 0xBB, 0x2F, 0xE8, 0x4E, 0x47
    1600             :     }
    1601             : };
    1602             : 
    1603             : static const struct {
    1604             :     EC_CURVE_DATA h;
    1605             :     unsigned char data[20 + 21 * 6];
    1606             : } _EC_X9_62_CHAR2_163V1 = {
    1607             :     {
    1608             :         NID_X9_62_characteristic_two_field, 20, 21, 2
    1609             :     },
    1610             :     {
    1611             :         /* seed */
    1612             :         0xD2, 0xC0, 0xFB, 0x15, 0x76, 0x08, 0x60, 0xDE, 0xF1, 0xEE, 0xF4, 0xD6,
    1613             :         0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x54,
    1614             :         /* p */
    1615             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1616             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
    1617             :         /* a */
    1618             :         0x07, 0x25, 0x46, 0xB5, 0x43, 0x52, 0x34, 0xA4, 0x22, 0xE0, 0x78, 0x96,
    1619             :         0x75, 0xF4, 0x32, 0xC8, 0x94, 0x35, 0xDE, 0x52, 0x42,
    1620             :         /* b */
    1621             :         0x00, 0xC9, 0x51, 0x7D, 0x06, 0xD5, 0x24, 0x0D, 0x3C, 0xFF, 0x38, 0xC7,
    1622             :         0x4B, 0x20, 0xB6, 0xCD, 0x4D, 0x6F, 0x9D, 0xD4, 0xD9,
    1623             :         /* x */
    1624             :         0x07, 0xAF, 0x69, 0x98, 0x95, 0x46, 0x10, 0x3D, 0x79, 0x32, 0x9F, 0xCC,
    1625             :         0x3D, 0x74, 0x88, 0x0F, 0x33, 0xBB, 0xE8, 0x03, 0xCB,
    1626             :         /* y */
    1627             :         0x01, 0xEC, 0x23, 0x21, 0x1B, 0x59, 0x66, 0xAD, 0xEA, 0x1D, 0x3F, 0x87,
    1628             :         0xF7, 0xEA, 0x58, 0x48, 0xAE, 0xF0, 0xB7, 0xCA, 0x9F,
    1629             :         /* order */
    1630             :         0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE6,
    1631             :         0x0F, 0xC8, 0x82, 0x1C, 0xC7, 0x4D, 0xAE, 0xAF, 0xC1
    1632             :     }
    1633             : };
    1634             : 
    1635             : static const struct {
    1636             :     EC_CURVE_DATA h;
    1637             :     unsigned char data[20 + 21 * 6];
    1638             : } _EC_X9_62_CHAR2_163V2 = {
    1639             :     {
    1640             :         NID_X9_62_characteristic_two_field, 20, 21, 2
    1641             :     },
    1642             :     {
    1643             :         /* seed */
    1644             :         0x53, 0x81, 0x4C, 0x05, 0x0D, 0x44, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56,
    1645             :         0x15, 0x17, 0x58, 0x0C, 0xA4, 0xE2, 0x9F, 0xFD,
    1646             :         /* p */
    1647             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1648             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
    1649             :         /* a */
    1650             :         0x01, 0x08, 0xB3, 0x9E, 0x77, 0xC4, 0xB1, 0x08, 0xBE, 0xD9, 0x81, 0xED,
    1651             :         0x0E, 0x89, 0x0E, 0x11, 0x7C, 0x51, 0x1C, 0xF0, 0x72,
    1652             :         /* b */
    1653             :         0x06, 0x67, 0xAC, 0xEB, 0x38, 0xAF, 0x4E, 0x48, 0x8C, 0x40, 0x74, 0x33,
    1654             :         0xFF, 0xAE, 0x4F, 0x1C, 0x81, 0x16, 0x38, 0xDF, 0x20,
    1655             :         /* x */
    1656             :         0x00, 0x24, 0x26, 0x6E, 0x4E, 0xB5, 0x10, 0x6D, 0x0A, 0x96, 0x4D, 0x92,
    1657             :         0xC4, 0x86, 0x0E, 0x26, 0x71, 0xDB, 0x9B, 0x6C, 0xC5,
    1658             :         /* y */
    1659             :         0x07, 0x9F, 0x68, 0x4D, 0xDF, 0x66, 0x84, 0xC5, 0xCD, 0x25, 0x8B, 0x38,
    1660             :         0x90, 0x02, 0x1B, 0x23, 0x86, 0xDF, 0xD1, 0x9F, 0xC5,
    1661             :         /* order */
    1662             :         0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF6,
    1663             :         0x4D, 0xE1, 0x15, 0x1A, 0xDB, 0xB7, 0x8F, 0x10, 0xA7
    1664             :     }
    1665             : };
    1666             : 
    1667             : static const struct {
    1668             :     EC_CURVE_DATA h;
    1669             :     unsigned char data[20 + 21 * 6];
    1670             : } _EC_X9_62_CHAR2_163V3 = {
    1671             :     {
    1672             :         NID_X9_62_characteristic_two_field, 20, 21, 2
    1673             :     },
    1674             :     {
    1675             :         /* seed */
    1676             :         0x50, 0xCB, 0xF1, 0xD9, 0x5C, 0xA9, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75,
    1677             :         0x61, 0x51, 0x75, 0xF1, 0x6A, 0x36, 0xA3, 0xB8,
    1678             :         /* p */
    1679             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1680             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
    1681             :         /* a */
    1682             :         0x07, 0xA5, 0x26, 0xC6, 0x3D, 0x3E, 0x25, 0xA2, 0x56, 0xA0, 0x07, 0x69,
    1683             :         0x9F, 0x54, 0x47, 0xE3, 0x2A, 0xE4, 0x56, 0xB5, 0x0E,
    1684             :         /* b */
    1685             :         0x03, 0xF7, 0x06, 0x17, 0x98, 0xEB, 0x99, 0xE2, 0x38, 0xFD, 0x6F, 0x1B,
    1686             :         0xF9, 0x5B, 0x48, 0xFE, 0xEB, 0x48, 0x54, 0x25, 0x2B,
    1687             :         /* x */
    1688             :         0x02, 0xF9, 0xF8, 0x7B, 0x7C, 0x57, 0x4D, 0x0B, 0xDE, 0xCF, 0x8A, 0x22,
    1689             :         0xE6, 0x52, 0x47, 0x75, 0xF9, 0x8C, 0xDE, 0xBD, 0xCB,
    1690             :         /* y */
    1691             :         0x05, 0xB9, 0x35, 0x59, 0x0C, 0x15, 0x5E, 0x17, 0xEA, 0x48, 0xEB, 0x3F,
    1692             :         0xF3, 0x71, 0x8B, 0x89, 0x3D, 0xF5, 0x9A, 0x05, 0xD0,
    1693             :         /* order */
    1694             :         0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1A,
    1695             :         0xEE, 0x14, 0x0F, 0x11, 0x0A, 0xFF, 0x96, 0x13, 0x09
    1696             :     }
    1697             : };
    1698             : 
    1699             : static const struct {
    1700             :     EC_CURVE_DATA h;
    1701             :     unsigned char data[0 + 23 * 6];
    1702             : } _EC_X9_62_CHAR2_176V1 = {
    1703             :     {
    1704             :         NID_X9_62_characteristic_two_field, 0, 23, 0xFF6E
    1705             :     },
    1706             :     {
    1707             :         /* no seed */
    1708             :         /* p */
    1709             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1710             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07,
    1711             :         /* a */
    1712             :         0x00, 0xE4, 0xE6, 0xDB, 0x29, 0x95, 0x06, 0x5C, 0x40, 0x7D, 0x9D, 0x39,
    1713             :         0xB8, 0xD0, 0x96, 0x7B, 0x96, 0x70, 0x4B, 0xA8, 0xE9, 0xC9, 0x0B,
    1714             :         /* b */
    1715             :         0x00, 0x5D, 0xDA, 0x47, 0x0A, 0xBE, 0x64, 0x14, 0xDE, 0x8E, 0xC1, 0x33,
    1716             :         0xAE, 0x28, 0xE9, 0xBB, 0xD7, 0xFC, 0xEC, 0x0A, 0xE0, 0xFF, 0xF2,
    1717             :         /* x */
    1718             :         0x00, 0x8D, 0x16, 0xC2, 0x86, 0x67, 0x98, 0xB6, 0x00, 0xF9, 0xF0, 0x8B,
    1719             :         0xB4, 0xA8, 0xE8, 0x60, 0xF3, 0x29, 0x8C, 0xE0, 0x4A, 0x57, 0x98,
    1720             :         /* y */
    1721             :         0x00, 0x6F, 0xA4, 0x53, 0x9C, 0x2D, 0xAD, 0xDD, 0xD6, 0xBA, 0xB5, 0x16,
    1722             :         0x7D, 0x61, 0xB4, 0x36, 0xE1, 0xD9, 0x2B, 0xB1, 0x6A, 0x56, 0x2C,
    1723             :         /* order */
    1724             :         0x00, 0x00, 0x01, 0x00, 0x92, 0x53, 0x73, 0x97, 0xEC, 0xA4, 0xF6, 0x14,
    1725             :         0x57, 0x99, 0xD6, 0x2B, 0x0A, 0x19, 0xCE, 0x06, 0xFE, 0x26, 0xAD
    1726             :     }
    1727             : };
    1728             : 
    1729             : static const struct {
    1730             :     EC_CURVE_DATA h;
    1731             :     unsigned char data[20 + 24 * 6];
    1732             : } _EC_X9_62_CHAR2_191V1 = {
    1733             :     {
    1734             :         NID_X9_62_characteristic_two_field, 20, 24, 2
    1735             :     },
    1736             :     {
    1737             :         /* seed */
    1738             :         0x4E, 0x13, 0xCA, 0x54, 0x27, 0x44, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56,
    1739             :         0x15, 0x17, 0x55, 0x2F, 0x27, 0x9A, 0x8C, 0x84,
    1740             :         /* p */
    1741             :         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1742             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
    1743             :         /* a */
    1744             :         0x28, 0x66, 0x53, 0x7B, 0x67, 0x67, 0x52, 0x63, 0x6A, 0x68, 0xF5, 0x65,
    1745             :         0x54, 0xE1, 0x26, 0x40, 0x27, 0x6B, 0x64, 0x9E, 0xF7, 0x52, 0x62, 0x67,
    1746             :         /* b */
    1747             :         0x2E, 0x45, 0xEF, 0x57, 0x1F, 0x00, 0x78, 0x6F, 0x67, 0xB0, 0x08, 0x1B,
    1748             :         0x94, 0x95, 0xA3, 0xD9, 0x54, 0x62, 0xF5, 0xDE, 0x0A, 0xA1, 0x85, 0xEC,
    1749             :         /* x */
    1750             :         0x36, 0xB3, 0xDA, 0xF8, 0xA2, 0x32, 0x06, 0xF9, 0xC4, 0xF2, 0x99, 0xD7,
    1751             :         0xB2, 0x1A, 0x9C, 0x36, 0x91, 0x37, 0xF2, 0xC8, 0x4A, 0xE1, 0xAA, 0x0D,
    1752             :         /* y */
    1753             :         0x76, 0x5B, 0xE7, 0x34, 0x33, 0xB3, 0xF9, 0x5E, 0x33, 0x29, 0x32, 0xE7,
    1754             :         0x0E, 0xA2, 0x45, 0xCA, 0x24, 0x18, 0xEA, 0x0E, 0xF9, 0x80, 0x18, 0xFB,
    1755             :         /* order */
    1756             :         0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1757             :         0x04, 0xA2, 0x0E, 0x90, 0xC3, 0x90, 0x67, 0xC8, 0x93, 0xBB, 0xB9, 0xA5
    1758             :     }
    1759             : };
    1760             : 
    1761             : static const struct {
    1762             :     EC_CURVE_DATA h;
    1763             :     unsigned char data[20 + 24 * 6];
    1764             : } _EC_X9_62_CHAR2_191V2 = {
    1765             :     {
    1766             :         NID_X9_62_characteristic_two_field, 20, 24, 4
    1767             :     },
    1768             :     {
    1769             :         /* seed */
    1770             :         0x08, 0x71, 0xEF, 0x2F, 0xEF, 0x24, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56,
    1771             :         0x15, 0x17, 0x58, 0xBE, 0xE0, 0xD9, 0x5C, 0x15,
    1772             :         /* p */
    1773             :         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1774             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
    1775             :         /* a */
    1776             :         0x40, 0x10, 0x28, 0x77, 0x4D, 0x77, 0x77, 0xC7, 0xB7, 0x66, 0x6D, 0x13,
    1777             :         0x66, 0xEA, 0x43, 0x20, 0x71, 0x27, 0x4F, 0x89, 0xFF, 0x01, 0xE7, 0x18,
    1778             :         /* b */
    1779             :         0x06, 0x20, 0x04, 0x8D, 0x28, 0xBC, 0xBD, 0x03, 0xB6, 0x24, 0x9C, 0x99,
    1780             :         0x18, 0x2B, 0x7C, 0x8C, 0xD1, 0x97, 0x00, 0xC3, 0x62, 0xC4, 0x6A, 0x01,
    1781             :         /* x */
    1782             :         0x38, 0x09, 0xB2, 0xB7, 0xCC, 0x1B, 0x28, 0xCC, 0x5A, 0x87, 0x92, 0x6A,
    1783             :         0xAD, 0x83, 0xFD, 0x28, 0x78, 0x9E, 0x81, 0xE2, 0xC9, 0xE3, 0xBF, 0x10,
    1784             :         /* y */
    1785             :         0x17, 0x43, 0x43, 0x86, 0x62, 0x6D, 0x14, 0xF3, 0xDB, 0xF0, 0x17, 0x60,
    1786             :         0xD9, 0x21, 0x3A, 0x3E, 0x1C, 0xF3, 0x7A, 0xEC, 0x43, 0x7D, 0x66, 0x8A,
    1787             :         /* order */
    1788             :         0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1789             :         0x50, 0x50, 0x8C, 0xB8, 0x9F, 0x65, 0x28, 0x24, 0xE0, 0x6B, 0x81, 0x73
    1790             :     }
    1791             : };
    1792             : 
    1793             : static const struct {
    1794             :     EC_CURVE_DATA h;
    1795             :     unsigned char data[20 + 24 * 6];
    1796             : } _EC_X9_62_CHAR2_191V3 = {
    1797             :     {
    1798             :         NID_X9_62_characteristic_two_field, 20, 24, 6
    1799             :     },
    1800             :     {
    1801             :         /* seed */
    1802             :         0xE0, 0x53, 0x51, 0x2D, 0xC6, 0x84, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56,
    1803             :         0x15, 0x17, 0x50, 0x67, 0xAE, 0x78, 0x6D, 0x1F,
    1804             :         /* p */
    1805             :         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1806             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
    1807             :         /* a */
    1808             :         0x6C, 0x01, 0x07, 0x47, 0x56, 0x09, 0x91, 0x22, 0x22, 0x10, 0x56, 0x91,
    1809             :         0x1C, 0x77, 0xD7, 0x7E, 0x77, 0xA7, 0x77, 0xE7, 0xE7, 0xE7, 0x7F, 0xCB,
    1810             :         /* b */
    1811             :         0x71, 0xFE, 0x1A, 0xF9, 0x26, 0xCF, 0x84, 0x79, 0x89, 0xEF, 0xEF, 0x8D,
    1812             :         0xB4, 0x59, 0xF6, 0x63, 0x94, 0xD9, 0x0F, 0x32, 0xAD, 0x3F, 0x15, 0xE8,
    1813             :         /* x */
    1814             :         0x37, 0x5D, 0x4C, 0xE2, 0x4F, 0xDE, 0x43, 0x44, 0x89, 0xDE, 0x87, 0x46,
    1815             :         0xE7, 0x17, 0x86, 0x01, 0x50, 0x09, 0xE6, 0x6E, 0x38, 0xA9, 0x26, 0xDD,
    1816             :         /* y */
    1817             :         0x54, 0x5A, 0x39, 0x17, 0x61, 0x96, 0x57, 0x5D, 0x98, 0x59, 0x99, 0x36,
    1818             :         0x6E, 0x6A, 0xD3, 0x4C, 0xE0, 0xA7, 0x7C, 0xD7, 0x12, 0x7B, 0x06, 0xBE,
    1819             :         /* order */
    1820             :         0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
    1821             :         0x61, 0x0C, 0x0B, 0x19, 0x68, 0x12, 0xBF, 0xB6, 0x28, 0x8A, 0x3E, 0xA3
    1822             :     }
    1823             : };
    1824             : 
    1825             : static const struct {
    1826             :     EC_CURVE_DATA h;
    1827             :     unsigned char data[0 + 27 * 6];
    1828             : } _EC_X9_62_CHAR2_208W1 = {
    1829             :     {
    1830             :         NID_X9_62_characteristic_two_field, 0, 27, 0xFE48
    1831             :     },
    1832             :     {
    1833             :         /* no seed */
    1834             :         /* p */
    1835             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1836             :         0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1837             :         0x00, 0x00, 0x07,
    1838             :         /* a */
    1839             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1840             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1841             :         0x00, 0x00, 0x00,
    1842             :         /* b */
    1843             :         0x00, 0xC8, 0x61, 0x9E, 0xD4, 0x5A, 0x62, 0xE6, 0x21, 0x2E, 0x11, 0x60,
    1844             :         0x34, 0x9E, 0x2B, 0xFA, 0x84, 0x44, 0x39, 0xFA, 0xFC, 0x2A, 0x3F, 0xD1,
    1845             :         0x63, 0x8F, 0x9E,
    1846             :         /* x */
    1847             :         0x00, 0x89, 0xFD, 0xFB, 0xE4, 0xAB, 0xE1, 0x93, 0xDF, 0x95, 0x59, 0xEC,
    1848             :         0xF0, 0x7A, 0xC0, 0xCE, 0x78, 0x55, 0x4E, 0x27, 0x84, 0xEB, 0x8C, 0x1E,
    1849             :         0xD1, 0xA5, 0x7A,
    1850             :         /* y */
    1851             :         0x00, 0x0F, 0x55, 0xB5, 0x1A, 0x06, 0xE7, 0x8E, 0x9A, 0xC3, 0x8A, 0x03,
    1852             :         0x5F, 0xF5, 0x20, 0xD8, 0xB0, 0x17, 0x81, 0xBE, 0xB1, 0xA6, 0xBB, 0x08,
    1853             :         0x61, 0x7D, 0xE3,
    1854             :         /* order */
    1855             :         0x00, 0x00, 0x01, 0x01, 0xBA, 0xF9, 0x5C, 0x97, 0x23, 0xC5, 0x7B, 0x6C,
    1856             :         0x21, 0xDA, 0x2E, 0xFF, 0x2D, 0x5E, 0xD5, 0x88, 0xBD, 0xD5, 0x71, 0x7E,
    1857             :         0x21, 0x2F, 0x9D
    1858             :     }
    1859             : };
    1860             : 
    1861             : static const struct {
    1862             :     EC_CURVE_DATA h;
    1863             :     unsigned char data[20 + 30 * 6];
    1864             : } _EC_X9_62_CHAR2_239V1 = {
    1865             :     {
    1866             :         NID_X9_62_characteristic_two_field, 20, 30, 4
    1867             :     },
    1868             :     {
    1869             :         /* seed */
    1870             :         0xD3, 0x4B, 0x9A, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75,
    1871             :         0xCA, 0x71, 0xB9, 0x20, 0xBF, 0xEF, 0xB0, 0x5D,
    1872             :         /* p */
    1873             :         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1874             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1875             :         0x00, 0x10, 0x00, 0x00, 0x00, 0x01,
    1876             :         /* a */
    1877             :         0x32, 0x01, 0x08, 0x57, 0x07, 0x7C, 0x54, 0x31, 0x12, 0x3A, 0x46, 0xB8,
    1878             :         0x08, 0x90, 0x67, 0x56, 0xF5, 0x43, 0x42, 0x3E, 0x8D, 0x27, 0x87, 0x75,
    1879             :         0x78, 0x12, 0x57, 0x78, 0xAC, 0x76,
    1880             :         /* b */
    1881             :         0x79, 0x04, 0x08, 0xF2, 0xEE, 0xDA, 0xF3, 0x92, 0xB0, 0x12, 0xED, 0xEF,
    1882             :         0xB3, 0x39, 0x2F, 0x30, 0xF4, 0x32, 0x7C, 0x0C, 0xA3, 0xF3, 0x1F, 0xC3,
    1883             :         0x83, 0xC4, 0x22, 0xAA, 0x8C, 0x16,
    1884             :         /* x */
    1885             :         0x57, 0x92, 0x70, 0x98, 0xFA, 0x93, 0x2E, 0x7C, 0x0A, 0x96, 0xD3, 0xFD,
    1886             :         0x5B, 0x70, 0x6E, 0xF7, 0xE5, 0xF5, 0xC1, 0x56, 0xE1, 0x6B, 0x7E, 0x7C,
    1887             :         0x86, 0x03, 0x85, 0x52, 0xE9, 0x1D,
    1888             :         /* y */
    1889             :         0x61, 0xD8, 0xEE, 0x50, 0x77, 0xC3, 0x3F, 0xEC, 0xF6, 0xF1, 0xA1, 0x6B,
    1890             :         0x26, 0x8D, 0xE4, 0x69, 0xC3, 0xC7, 0x74, 0x4E, 0xA9, 0xA9, 0x71, 0x64,
    1891             :         0x9F, 0xC7, 0xA9, 0x61, 0x63, 0x05,
    1892             :         /* order */
    1893             :         0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1894             :         0x00, 0x00, 0x00, 0x0F, 0x4D, 0x42, 0xFF, 0xE1, 0x49, 0x2A, 0x49, 0x93,
    1895             :         0xF1, 0xCA, 0xD6, 0x66, 0xE4, 0x47
    1896             :     }
    1897             : };
    1898             : 
    1899             : static const struct {
    1900             :     EC_CURVE_DATA h;
    1901             :     unsigned char data[20 + 30 * 6];
    1902             : } _EC_X9_62_CHAR2_239V2 = {
    1903             :     {
    1904             :         NID_X9_62_characteristic_two_field, 20, 30, 6
    1905             :     },
    1906             :     {
    1907             :         /* seed */
    1908             :         0x2A, 0xA6, 0x98, 0x2F, 0xDF, 0xA4, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56,
    1909             :         0x15, 0x17, 0x5D, 0x26, 0x67, 0x27, 0x27, 0x7D,
    1910             :         /* p */
    1911             :         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1912             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1913             :         0x00, 0x10, 0x00, 0x00, 0x00, 0x01,
    1914             :         /* a */
    1915             :         0x42, 0x30, 0x01, 0x77, 0x57, 0xA7, 0x67, 0xFA, 0xE4, 0x23, 0x98, 0x56,
    1916             :         0x9B, 0x74, 0x63, 0x25, 0xD4, 0x53, 0x13, 0xAF, 0x07, 0x66, 0x26, 0x64,
    1917             :         0x79, 0xB7, 0x56, 0x54, 0xE6, 0x5F,
    1918             :         /* b */
    1919             :         0x50, 0x37, 0xEA, 0x65, 0x41, 0x96, 0xCF, 0xF0, 0xCD, 0x82, 0xB2, 0xC1,
    1920             :         0x4A, 0x2F, 0xCF, 0x2E, 0x3F, 0xF8, 0x77, 0x52, 0x85, 0xB5, 0x45, 0x72,
    1921             :         0x2F, 0x03, 0xEA, 0xCD, 0xB7, 0x4B,
    1922             :         /* x */
    1923             :         0x28, 0xF9, 0xD0, 0x4E, 0x90, 0x00, 0x69, 0xC8, 0xDC, 0x47, 0xA0, 0x85,
    1924             :         0x34, 0xFE, 0x76, 0xD2, 0xB9, 0x00, 0xB7, 0xD7, 0xEF, 0x31, 0xF5, 0x70,
    1925             :         0x9F, 0x20, 0x0C, 0x4C, 0xA2, 0x05,
    1926             :         /* y */
    1927             :         0x56, 0x67, 0x33, 0x4C, 0x45, 0xAF, 0xF3, 0xB5, 0xA0, 0x3B, 0xAD, 0x9D,
    1928             :         0xD7, 0x5E, 0x2C, 0x71, 0xA9, 0x93, 0x62, 0x56, 0x7D, 0x54, 0x53, 0xF7,
    1929             :         0xFA, 0x6E, 0x22, 0x7E, 0xC8, 0x33,
    1930             :         /* order */
    1931             :         0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
    1932             :         0x55, 0x55, 0x55, 0x3C, 0x6F, 0x28, 0x85, 0x25, 0x9C, 0x31, 0xE3, 0xFC,
    1933             :         0xDF, 0x15, 0x46, 0x24, 0x52, 0x2D
    1934             :     }
    1935             : };
    1936             : 
    1937             : static const struct {
    1938             :     EC_CURVE_DATA h;
    1939             :     unsigned char data[20 + 30 * 6];
    1940             : } _EC_X9_62_CHAR2_239V3 = {
    1941             :     {
    1942             :         NID_X9_62_characteristic_two_field, 20, 30, 0xA
    1943             :     },
    1944             :     {
    1945             :         /* seed */
    1946             :         0x9E, 0x07, 0x6F, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75,
    1947             :         0xE1, 0x1E, 0x9F, 0xDD, 0x77, 0xF9, 0x20, 0x41,
    1948             :         /* p */
    1949             :         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1950             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1951             :         0x00, 0x10, 0x00, 0x00, 0x00, 0x01,
    1952             :         /* a */
    1953             :         0x01, 0x23, 0x87, 0x74, 0x66, 0x6A, 0x67, 0x76, 0x6D, 0x66, 0x76, 0xF7,
    1954             :         0x78, 0xE6, 0x76, 0xB6, 0x69, 0x99, 0x17, 0x66, 0x66, 0xE6, 0x87, 0x66,
    1955             :         0x6D, 0x87, 0x66, 0xC6, 0x6A, 0x9F,
    1956             :         /* b */
    1957             :         0x6A, 0x94, 0x19, 0x77, 0xBA, 0x9F, 0x6A, 0x43, 0x51, 0x99, 0xAC, 0xFC,
    1958             :         0x51, 0x06, 0x7E, 0xD5, 0x87, 0xF5, 0x19, 0xC5, 0xEC, 0xB5, 0x41, 0xB8,
    1959             :         0xE4, 0x41, 0x11, 0xDE, 0x1D, 0x40,
    1960             :         /* x */
    1961             :         0x70, 0xF6, 0xE9, 0xD0, 0x4D, 0x28, 0x9C, 0x4E, 0x89, 0x91, 0x3C, 0xE3,
    1962             :         0x53, 0x0B, 0xFD, 0xE9, 0x03, 0x97, 0x7D, 0x42, 0xB1, 0x46, 0xD5, 0x39,
    1963             :         0xBF, 0x1B, 0xDE, 0x4E, 0x9C, 0x92,
    1964             :         /* y */
    1965             :         0x2E, 0x5A, 0x0E, 0xAF, 0x6E, 0x5E, 0x13, 0x05, 0xB9, 0x00, 0x4D, 0xCE,
    1966             :         0x5C, 0x0E, 0xD7, 0xFE, 0x59, 0xA3, 0x56, 0x08, 0xF3, 0x38, 0x37, 0xC8,
    1967             :         0x16, 0xD8, 0x0B, 0x79, 0xF4, 0x61,
    1968             :         /* order */
    1969             :         0x0C, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
    1970             :         0xCC, 0xCC, 0xCC, 0xAC, 0x49, 0x12, 0xD2, 0xD9, 0xDF, 0x90, 0x3E, 0xF9,
    1971             :         0x88, 0x8B, 0x8A, 0x0E, 0x4C, 0xFF
    1972             :     }
    1973             : };
    1974             : 
    1975             : static const struct {
    1976             :     EC_CURVE_DATA h;
    1977             :     unsigned char data[0 + 35 * 6];
    1978             : } _EC_X9_62_CHAR2_272W1 = {
    1979             :     {
    1980             :         NID_X9_62_characteristic_two_field, 0, 35, 0xFF06
    1981             :     },
    1982             :     {
    1983             :         /* no seed */
    1984             :         /* p */
    1985             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1986             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    1987             :         0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B,
    1988             :         /* a */
    1989             :         0x00, 0x91, 0xA0, 0x91, 0xF0, 0x3B, 0x5F, 0xBA, 0x4A, 0xB2, 0xCC, 0xF4,
    1990             :         0x9C, 0x4E, 0xDD, 0x22, 0x0F, 0xB0, 0x28, 0x71, 0x2D, 0x42, 0xBE, 0x75,
    1991             :         0x2B, 0x2C, 0x40, 0x09, 0x4D, 0xBA, 0xCD, 0xB5, 0x86, 0xFB, 0x20,
    1992             :         /* b */
    1993             :         0x00, 0x71, 0x67, 0xEF, 0xC9, 0x2B, 0xB2, 0xE3, 0xCE, 0x7C, 0x8A, 0xAA,
    1994             :         0xFF, 0x34, 0xE1, 0x2A, 0x9C, 0x55, 0x70, 0x03, 0xD7, 0xC7, 0x3A, 0x6F,
    1995             :         0xAF, 0x00, 0x3F, 0x99, 0xF6, 0xCC, 0x84, 0x82, 0xE5, 0x40, 0xF7,
    1996             :         /* x */
    1997             :         0x00, 0x61, 0x08, 0xBA, 0xBB, 0x2C, 0xEE, 0xBC, 0xF7, 0x87, 0x05, 0x8A,
    1998             :         0x05, 0x6C, 0xBE, 0x0C, 0xFE, 0x62, 0x2D, 0x77, 0x23, 0xA2, 0x89, 0xE0,
    1999             :         0x8A, 0x07, 0xAE, 0x13, 0xEF, 0x0D, 0x10, 0xD1, 0x71, 0xDD, 0x8D,
    2000             :         /* y */
    2001             :         0x00, 0x10, 0xC7, 0x69, 0x57, 0x16, 0x85, 0x1E, 0xEF, 0x6B, 0xA7, 0xF6,
    2002             :         0x87, 0x2E, 0x61, 0x42, 0xFB, 0xD2, 0x41, 0xB8, 0x30, 0xFF, 0x5E, 0xFC,
    2003             :         0xAC, 0xEC, 0xCA, 0xB0, 0x5E, 0x02, 0x00, 0x5D, 0xDE, 0x9D, 0x23,
    2004             :         /* order */
    2005             :         0x00, 0x00, 0x01, 0x00, 0xFA, 0xF5, 0x13, 0x54, 0xE0, 0xE3, 0x9E, 0x48,
    2006             :         0x92, 0xDF, 0x6E, 0x31, 0x9C, 0x72, 0xC8, 0x16, 0x16, 0x03, 0xFA, 0x45,
    2007             :         0xAA, 0x7B, 0x99, 0x8A, 0x16, 0x7B, 0x8F, 0x1E, 0x62, 0x95, 0x21
    2008             :     }
    2009             : };
    2010             : 
    2011             : static const struct {
    2012             :     EC_CURVE_DATA h;
    2013             :     unsigned char data[0 + 39 * 6];
    2014             : } _EC_X9_62_CHAR2_304W1 = {
    2015             :     {
    2016             :         NID_X9_62_characteristic_two_field, 0, 39, 0xFE2E
    2017             :     },
    2018             :     {
    2019             :         /* no seed */
    2020             :         /* p */
    2021             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2022             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2023             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2024             :         0x00, 0x08, 0x07,
    2025             :         /* a */
    2026             :         0x00, 0xFD, 0x0D, 0x69, 0x31, 0x49, 0xA1, 0x18, 0xF6, 0x51, 0xE6, 0xDC,
    2027             :         0xE6, 0x80, 0x20, 0x85, 0x37, 0x7E, 0x5F, 0x88, 0x2D, 0x1B, 0x51, 0x0B,
    2028             :         0x44, 0x16, 0x00, 0x74, 0xC1, 0x28, 0x80, 0x78, 0x36, 0x5A, 0x03, 0x96,
    2029             :         0xC8, 0xE6, 0x81,
    2030             :         /* b */
    2031             :         0x00, 0xBD, 0xDB, 0x97, 0xE5, 0x55, 0xA5, 0x0A, 0x90, 0x8E, 0x43, 0xB0,
    2032             :         0x1C, 0x79, 0x8E, 0xA5, 0xDA, 0xA6, 0x78, 0x8F, 0x1E, 0xA2, 0x79, 0x4E,
    2033             :         0xFC, 0xF5, 0x71, 0x66, 0xB8, 0xC1, 0x40, 0x39, 0x60, 0x1E, 0x55, 0x82,
    2034             :         0x73, 0x40, 0xBE,
    2035             :         /* x */
    2036             :         0x00, 0x19, 0x7B, 0x07, 0x84, 0x5E, 0x9B, 0xE2, 0xD9, 0x6A, 0xDB, 0x0F,
    2037             :         0x5F, 0x3C, 0x7F, 0x2C, 0xFF, 0xBD, 0x7A, 0x3E, 0xB8, 0xB6, 0xFE, 0xC3,
    2038             :         0x5C, 0x7F, 0xD6, 0x7F, 0x26, 0xDD, 0xF6, 0x28, 0x5A, 0x64, 0x4F, 0x74,
    2039             :         0x0A, 0x26, 0x14,
    2040             :         /* y */
    2041             :         0x00, 0xE1, 0x9F, 0xBE, 0xB7, 0x6E, 0x0D, 0xA1, 0x71, 0x51, 0x7E, 0xCF,
    2042             :         0x40, 0x1B, 0x50, 0x28, 0x9B, 0xF0, 0x14, 0x10, 0x32, 0x88, 0x52, 0x7A,
    2043             :         0x9B, 0x41, 0x6A, 0x10, 0x5E, 0x80, 0x26, 0x0B, 0x54, 0x9F, 0xDC, 0x1B,
    2044             :         0x92, 0xC0, 0x3B,
    2045             :         /* order */
    2046             :         0x00, 0x00, 0x01, 0x01, 0xD5, 0x56, 0x57, 0x2A, 0xAB, 0xAC, 0x80, 0x01,
    2047             :         0x01, 0xD5, 0x56, 0x57, 0x2A, 0xAB, 0xAC, 0x80, 0x01, 0x02, 0x2D, 0x5C,
    2048             :         0x91, 0xDD, 0x17, 0x3F, 0x8F, 0xB5, 0x61, 0xDA, 0x68, 0x99, 0x16, 0x44,
    2049             :         0x43, 0x05, 0x1D
    2050             :     }
    2051             : };
    2052             : 
    2053             : static const struct {
    2054             :     EC_CURVE_DATA h;
    2055             :     unsigned char data[20 + 45 * 6];
    2056             : } _EC_X9_62_CHAR2_359V1 = {
    2057             :     {
    2058             :         NID_X9_62_characteristic_two_field, 20, 45, 0x4C
    2059             :     },
    2060             :     {
    2061             :         /* seed */
    2062             :         0x2B, 0x35, 0x49, 0x20, 0xB7, 0x24, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56,
    2063             :         0x15, 0x17, 0x58, 0x5B, 0xA1, 0x33, 0x2D, 0xC6,
    2064             :         /* p */
    2065             :         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2066             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2067             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2068             :         0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    2069             :         /* a */
    2070             :         0x56, 0x67, 0x67, 0x6A, 0x65, 0x4B, 0x20, 0x75, 0x4F, 0x35, 0x6E, 0xA9,
    2071             :         0x20, 0x17, 0xD9, 0x46, 0x56, 0x7C, 0x46, 0x67, 0x55, 0x56, 0xF1, 0x95,
    2072             :         0x56, 0xA0, 0x46, 0x16, 0xB5, 0x67, 0xD2, 0x23, 0xA5, 0xE0, 0x56, 0x56,
    2073             :         0xFB, 0x54, 0x90, 0x16, 0xA9, 0x66, 0x56, 0xA5, 0x57,
    2074             :         /* b */
    2075             :         0x24, 0x72, 0xE2, 0xD0, 0x19, 0x7C, 0x49, 0x36, 0x3F, 0x1F, 0xE7, 0xF5,
    2076             :         0xB6, 0xDB, 0x07, 0x5D, 0x52, 0xB6, 0x94, 0x7D, 0x13, 0x5D, 0x8C, 0xA4,
    2077             :         0x45, 0x80, 0x5D, 0x39, 0xBC, 0x34, 0x56, 0x26, 0x08, 0x96, 0x87, 0x74,
    2078             :         0x2B, 0x63, 0x29, 0xE7, 0x06, 0x80, 0x23, 0x19, 0x88,
    2079             :         /* x */
    2080             :         0x3C, 0x25, 0x8E, 0xF3, 0x04, 0x77, 0x67, 0xE7, 0xED, 0xE0, 0xF1, 0xFD,
    2081             :         0xAA, 0x79, 0xDA, 0xEE, 0x38, 0x41, 0x36, 0x6A, 0x13, 0x2E, 0x16, 0x3A,
    2082             :         0xCE, 0xD4, 0xED, 0x24, 0x01, 0xDF, 0x9C, 0x6B, 0xDC, 0xDE, 0x98, 0xE8,
    2083             :         0xE7, 0x07, 0xC0, 0x7A, 0x22, 0x39, 0xB1, 0xB0, 0x97,
    2084             :         /* y */
    2085             :         0x53, 0xD7, 0xE0, 0x85, 0x29, 0x54, 0x70, 0x48, 0x12, 0x1E, 0x9C, 0x95,
    2086             :         0xF3, 0x79, 0x1D, 0xD8, 0x04, 0x96, 0x39, 0x48, 0xF3, 0x4F, 0xAE, 0x7B,
    2087             :         0xF4, 0x4E, 0xA8, 0x23, 0x65, 0xDC, 0x78, 0x68, 0xFE, 0x57, 0xE4, 0xAE,
    2088             :         0x2D, 0xE2, 0x11, 0x30, 0x5A, 0x40, 0x71, 0x04, 0xBD,
    2089             :         /* order */
    2090             :         0x01, 0xAF, 0x28, 0x6B, 0xCA, 0x1A, 0xF2, 0x86, 0xBC, 0xA1, 0xAF, 0x28,
    2091             :         0x6B, 0xCA, 0x1A, 0xF2, 0x86, 0xBC, 0xA1, 0xAF, 0x28, 0x6B, 0xC9, 0xFB,
    2092             :         0x8F, 0x6B, 0x85, 0xC5, 0x56, 0x89, 0x2C, 0x20, 0xA7, 0xEB, 0x96, 0x4F,
    2093             :         0xE7, 0x71, 0x9E, 0x74, 0xF4, 0x90, 0x75, 0x8D, 0x3B
    2094             :     }
    2095             : };
    2096             : 
    2097             : static const struct {
    2098             :     EC_CURVE_DATA h;
    2099             :     unsigned char data[0 + 47 * 6];
    2100             : } _EC_X9_62_CHAR2_368W1 = {
    2101             :     {
    2102             :         NID_X9_62_characteristic_two_field, 0, 47, 0xFF70
    2103             :     },
    2104             :     {
    2105             :         /* no seed */
    2106             :         /* p */
    2107             :         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2108             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2109             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2110             :         0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
    2111             :         /* a */
    2112             :         0x00, 0xE0, 0xD2, 0xEE, 0x25, 0x09, 0x52, 0x06, 0xF5, 0xE2, 0xA4, 0xF9,
    2113             :         0xED, 0x22, 0x9F, 0x1F, 0x25, 0x6E, 0x79, 0xA0, 0xE2, 0xB4, 0x55, 0x97,
    2114             :         0x0D, 0x8D, 0x0D, 0x86, 0x5B, 0xD9, 0x47, 0x78, 0xC5, 0x76, 0xD6, 0x2F,
    2115             :         0x0A, 0xB7, 0x51, 0x9C, 0xCD, 0x2A, 0x1A, 0x90, 0x6A, 0xE3, 0x0D,
    2116             :         /* b */
    2117             :         0x00, 0xFC, 0x12, 0x17, 0xD4, 0x32, 0x0A, 0x90, 0x45, 0x2C, 0x76, 0x0A,
    2118             :         0x58, 0xED, 0xCD, 0x30, 0xC8, 0xDD, 0x06, 0x9B, 0x3C, 0x34, 0x45, 0x38,
    2119             :         0x37, 0xA3, 0x4E, 0xD5, 0x0C, 0xB5, 0x49, 0x17, 0xE1, 0xC2, 0x11, 0x2D,
    2120             :         0x84, 0xD1, 0x64, 0xF4, 0x44, 0xF8, 0xF7, 0x47, 0x86, 0x04, 0x6A,
    2121             :         /* x */
    2122             :         0x00, 0x10, 0x85, 0xE2, 0x75, 0x53, 0x81, 0xDC, 0xCC, 0xE3, 0xC1, 0x55,
    2123             :         0x7A, 0xFA, 0x10, 0xC2, 0xF0, 0xC0, 0xC2, 0x82, 0x56, 0x46, 0xC5, 0xB3,
    2124             :         0x4A, 0x39, 0x4C, 0xBC, 0xFA, 0x8B, 0xC1, 0x6B, 0x22, 0xE7, 0xE7, 0x89,
    2125             :         0xE9, 0x27, 0xBE, 0x21, 0x6F, 0x02, 0xE1, 0xFB, 0x13, 0x6A, 0x5F,
    2126             :         /* y */
    2127             :         0x00, 0x7B, 0x3E, 0xB1, 0xBD, 0xDC, 0xBA, 0x62, 0xD5, 0xD8, 0xB2, 0x05,
    2128             :         0x9B, 0x52, 0x57, 0x97, 0xFC, 0x73, 0x82, 0x2C, 0x59, 0x05, 0x9C, 0x62,
    2129             :         0x3A, 0x45, 0xFF, 0x38, 0x43, 0xCE, 0xE8, 0xF8, 0x7C, 0xD1, 0x85, 0x5A,
    2130             :         0xDA, 0xA8, 0x1E, 0x2A, 0x07, 0x50, 0xB8, 0x0F, 0xDA, 0x23, 0x10,
    2131             :         /* order */
    2132             :         0x00, 0x00, 0x01, 0x00, 0x90, 0x51, 0x2D, 0xA9, 0xAF, 0x72, 0xB0, 0x83,
    2133             :         0x49, 0xD9, 0x8A, 0x5D, 0xD4, 0xC7, 0xB0, 0x53, 0x2E, 0xCA, 0x51, 0xCE,
    2134             :         0x03, 0xE2, 0xD1, 0x0F, 0x3B, 0x7A, 0xC5, 0x79, 0xBD, 0x87, 0xE9, 0x09,
    2135             :         0xAE, 0x40, 0xA6, 0xF1, 0x31, 0xE9, 0xCF, 0xCE, 0x5B, 0xD9, 0x67
    2136             :     }
    2137             : };
    2138             : 
    2139             : static const struct {
    2140             :     EC_CURVE_DATA h;
    2141             :     unsigned char data[0 + 54 * 6];
    2142             : } _EC_X9_62_CHAR2_431R1 = {
    2143             :     {
    2144             :         NID_X9_62_characteristic_two_field, 0, 54, 0x2760
    2145             :     },
    2146             :     {
    2147             :         /* no seed */
    2148             :         /* p */
    2149             :         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2150             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2151             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2152             :         0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2153             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    2154             :         /* a */
    2155             :         0x1A, 0x82, 0x7E, 0xF0, 0x0D, 0xD6, 0xFC, 0x0E, 0x23, 0x4C, 0xAF, 0x04,
    2156             :         0x6C, 0x6A, 0x5D, 0x8A, 0x85, 0x39, 0x5B, 0x23, 0x6C, 0xC4, 0xAD, 0x2C,
    2157             :         0xF3, 0x2A, 0x0C, 0xAD, 0xBD, 0xC9, 0xDD, 0xF6, 0x20, 0xB0, 0xEB, 0x99,
    2158             :         0x06, 0xD0, 0x95, 0x7F, 0x6C, 0x6F, 0xEA, 0xCD, 0x61, 0x54, 0x68, 0xDF,
    2159             :         0x10, 0x4D, 0xE2, 0x96, 0xCD, 0x8F,
    2160             :         /* b */
    2161             :         0x10, 0xD9, 0xB4, 0xA3, 0xD9, 0x04, 0x7D, 0x8B, 0x15, 0x43, 0x59, 0xAB,
    2162             :         0xFB, 0x1B, 0x7F, 0x54, 0x85, 0xB0, 0x4C, 0xEB, 0x86, 0x82, 0x37, 0xDD,
    2163             :         0xC9, 0xDE, 0xDA, 0x98, 0x2A, 0x67, 0x9A, 0x5A, 0x91, 0x9B, 0x62, 0x6D,
    2164             :         0x4E, 0x50, 0xA8, 0xDD, 0x73, 0x1B, 0x10, 0x7A, 0x99, 0x62, 0x38, 0x1F,
    2165             :         0xB5, 0xD8, 0x07, 0xBF, 0x26, 0x18,
    2166             :         /* x */
    2167             :         0x12, 0x0F, 0xC0, 0x5D, 0x3C, 0x67, 0xA9, 0x9D, 0xE1, 0x61, 0xD2, 0xF4,
    2168             :         0x09, 0x26, 0x22, 0xFE, 0xCA, 0x70, 0x1B, 0xE4, 0xF5, 0x0F, 0x47, 0x58,
    2169             :         0x71, 0x4E, 0x8A, 0x87, 0xBB, 0xF2, 0xA6, 0x58, 0xEF, 0x8C, 0x21, 0xE7,
    2170             :         0xC5, 0xEF, 0xE9, 0x65, 0x36, 0x1F, 0x6C, 0x29, 0x99, 0xC0, 0xC2, 0x47,
    2171             :         0xB0, 0xDB, 0xD7, 0x0C, 0xE6, 0xB7,
    2172             :         /* y */
    2173             :         0x20, 0xD0, 0xAF, 0x89, 0x03, 0xA9, 0x6F, 0x8D, 0x5F, 0xA2, 0xC2, 0x55,
    2174             :         0x74, 0x5D, 0x3C, 0x45, 0x1B, 0x30, 0x2C, 0x93, 0x46, 0xD9, 0xB7, 0xE4,
    2175             :         0x85, 0xE7, 0xBC, 0xE4, 0x1F, 0x6B, 0x59, 0x1F, 0x3E, 0x8F, 0x6A, 0xDD,
    2176             :         0xCB, 0xB0, 0xBC, 0x4C, 0x2F, 0x94, 0x7A, 0x7D, 0xE1, 0xA8, 0x9B, 0x62,
    2177             :         0x5D, 0x6A, 0x59, 0x8B, 0x37, 0x60,
    2178             :         /* order */
    2179             :         0x00, 0x03, 0x40, 0x34, 0x03, 0x40, 0x34, 0x03, 0x40, 0x34, 0x03, 0x40,
    2180             :         0x34, 0x03, 0x40, 0x34, 0x03, 0x40, 0x34, 0x03, 0x40, 0x34, 0x03, 0x40,
    2181             :         0x34, 0x03, 0x40, 0x34, 0x03, 0x23, 0xC3, 0x13, 0xFA, 0xB5, 0x05, 0x89,
    2182             :         0x70, 0x3B, 0x5E, 0xC6, 0x8D, 0x35, 0x87, 0xFE, 0xC6, 0x0D, 0x16, 0x1C,
    2183             :         0xC1, 0x49, 0xC1, 0xAD, 0x4A, 0x91
    2184             :     }
    2185             : };
    2186             : 
    2187             : static const struct {
    2188             :     EC_CURVE_DATA h;
    2189             :     unsigned char data[0 + 15 * 6];
    2190             : } _EC_WTLS_1 = {
    2191             :     {
    2192             :         NID_X9_62_characteristic_two_field, 0, 15, 2
    2193             :     },
    2194             :     {
    2195             :         /* no seed */
    2196             :         /* p */
    2197             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2198             :         0x00, 0x02, 0x01,
    2199             :         /* a */
    2200             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2201             :         0x00, 0x00, 0x01,
    2202             :         /* b */
    2203             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2204             :         0x00, 0x00, 0x01,
    2205             :         /* x */
    2206             :         0x01, 0x66, 0x79, 0x79, 0xA4, 0x0B, 0xA4, 0x97, 0xE5, 0xD5, 0xC2, 0x70,
    2207             :         0x78, 0x06, 0x17,
    2208             :         /* y */
    2209             :         0x00, 0xF4, 0x4B, 0x4A, 0xF1, 0xEC, 0xC2, 0x63, 0x0E, 0x08, 0x78, 0x5C,
    2210             :         0xEB, 0xCC, 0x15,
    2211             :         /* order */
    2212             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xBF, 0x91, 0xAF,
    2213             :         0x6D, 0xEA, 0x73
    2214             :     }
    2215             : };
    2216             : 
    2217             : /* IPSec curves */
    2218             : /*
    2219             :  * NOTE: The of curves over a extension field of non prime degree is not
    2220             :  * recommended (Weil-descent). As the group order is not a prime this curve
    2221             :  * is not suitable for ECDSA.
    2222             :  */
    2223             : static const struct {
    2224             :     EC_CURVE_DATA h;
    2225             :     unsigned char data[0 + 20 * 6];
    2226             : } _EC_IPSEC_155_ID3 = {
    2227             :     {
    2228             :         NID_X9_62_characteristic_two_field, 0, 20, 3
    2229             :     },
    2230             :     {
    2231             :         /* no seed */
    2232             :         /* p */
    2233             :         0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2234             :         0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    2235             :         /* a */
    2236             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2237             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2238             :         /* b */
    2239             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2240             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x33, 0x8f,
    2241             :         /* x */
    2242             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2243             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b,
    2244             :         /* y */
    2245             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2246             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc8,
    2247             :         /* order */
    2248             :         0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xC7, 0xF3,
    2249             :         0xC7, 0x88, 0x1B, 0xD0, 0x86, 0x8F, 0xA8, 0x6C
    2250             :     }
    2251             : };
    2252             : 
    2253             : /*
    2254             :  * NOTE: The of curves over a extension field of non prime degree is not
    2255             :  * recommended (Weil-descent). As the group order is not a prime this curve
    2256             :  * is not suitable for ECDSA.
    2257             :  */
    2258             : static const struct {
    2259             :     EC_CURVE_DATA h;
    2260             :     unsigned char data[0 + 24 * 6];
    2261             : } _EC_IPSEC_185_ID4 = {
    2262             :     {
    2263             :         NID_X9_62_characteristic_two_field, 0, 24, 2
    2264             :     },
    2265             :     {
    2266             :         /* no seed */
    2267             :         /* p */
    2268             :         0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2269             :         0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    2270             :         /* a */
    2271             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2272             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2273             :         /* b */
    2274             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2275             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xe9,
    2276             :         /* x */
    2277             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2278             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
    2279             :         /* y */
    2280             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    2281             :         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
    2282             :         /* order */
    2283             :         0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    2284             :         0xED, 0xF9, 0x7C, 0x44, 0xDB, 0x9F, 0x24, 0x20, 0xBA, 0xFC, 0xA7, 0x5E
    2285             :     }
    2286             : };
    2287             : 
    2288             : #endif
    2289             : 
    2290             : /*
    2291             :  * These curves were added by Annie Yousar <a.yousar@informatik.hu-berlin.de>
    2292             :  * For the definition of RFC 5639 curves see
    2293             :  * http://www.ietf.org/rfc/rfc5639.txt These curves are generated verifiable
    2294             :  * at random, nevertheless the seed is omitted as parameter because the
    2295             :  * generation mechanism is different from those defined in ANSI X9.62.
    2296             :  */
    2297             : 
    2298             : static const struct {
    2299             :     EC_CURVE_DATA h;
    2300             :     unsigned char data[0 + 20 * 6];
    2301             : } _EC_brainpoolP160r1 = {
    2302             :     {
    2303             :         NID_X9_62_prime_field, 0, 20, 1
    2304             :     },
    2305             :     {
    2306             :         /* no seed */
    2307             :         /* p */
    2308             :         0xE9, 0x5E, 0x4A, 0x5F, 0x73, 0x70, 0x59, 0xDC, 0x60, 0xDF, 0xC7, 0xAD,
    2309             :         0x95, 0xB3, 0xD8, 0x13, 0x95, 0x15, 0x62, 0x0F,
    2310             :         /* a */
    2311             :         0x34, 0x0E, 0x7B, 0xE2, 0xA2, 0x80, 0xEB, 0x74, 0xE2, 0xBE, 0x61, 0xBA,
    2312             :         0xDA, 0x74, 0x5D, 0x97, 0xE8, 0xF7, 0xC3, 0x00,
    2313             :         /* b */
    2314             :         0x1E, 0x58, 0x9A, 0x85, 0x95, 0x42, 0x34, 0x12, 0x13, 0x4F, 0xAA, 0x2D,
    2315             :         0xBD, 0xEC, 0x95, 0xC8, 0xD8, 0x67, 0x5E, 0x58,
    2316             :         /* x */
    2317             :         0xBE, 0xD5, 0xAF, 0x16, 0xEA, 0x3F, 0x6A, 0x4F, 0x62, 0x93, 0x8C, 0x46,
    2318             :         0x31, 0xEB, 0x5A, 0xF7, 0xBD, 0xBC, 0xDB, 0xC3,
    2319             :         /* y */
    2320             :         0x16, 0x67, 0xCB, 0x47, 0x7A, 0x1A, 0x8E, 0xC3, 0x38, 0xF9, 0x47, 0x41,
    2321             :         0x66, 0x9C, 0x97, 0x63, 0x16, 0xDA, 0x63, 0x21,
    2322             :         /* order */
    2323             :         0xE9, 0x5E, 0x4A, 0x5F, 0x73, 0x70, 0x59, 0xDC, 0x60, 0xDF, 0x59, 0x91,
    2324             :         0xD4, 0x50, 0x29, 0x40, 0x9E, 0x60, 0xFC, 0x09
    2325             :     }
    2326             : };
    2327             : 
    2328             : static const struct {
    2329             :     EC_CURVE_DATA h;
    2330             :     unsigned char data[0 + 20 * 6];
    2331             : } _EC_brainpoolP160t1 = {
    2332             :     {
    2333             :         NID_X9_62_prime_field, 0, 20, 1
    2334             :     },
    2335             :     {
    2336             :         /* no seed */
    2337             :         /* p */
    2338             :         0xE9, 0x5E, 0x4A, 0x5F, 0x73, 0x70, 0x59, 0xDC, 0x60, 0xDF, 0xC7, 0xAD,
    2339             :         0x95, 0xB3, 0xD8, 0x13, 0x95, 0x15, 0x62, 0x0F,
    2340             :         /* a */
    2341             :         0xE9, 0x5E, 0x4A, 0x5F, 0x73, 0x70, 0x59, 0xDC, 0x60, 0xDF, 0xC7, 0xAD,
    2342             :         0x95, 0xB3, 0xD8, 0x13, 0x95, 0x15, 0x62, 0x0C,
    2343             :         /* b */
    2344             :         0x7A, 0x55, 0x6B, 0x6D, 0xAE, 0x53, 0x5B, 0x7B, 0x51, 0xED, 0x2C, 0x4D,
    2345             :         0x7D, 0xAA, 0x7A, 0x0B, 0x5C, 0x55, 0xF3, 0x80,
    2346             :         /* x */
    2347             :         0xB1, 0x99, 0xB1, 0x3B, 0x9B, 0x34, 0xEF, 0xC1, 0x39, 0x7E, 0x64, 0xBA,
    2348             :         0xEB, 0x05, 0xAC, 0xC2, 0x65, 0xFF, 0x23, 0x78,
    2349             :         /* y */
    2350             :         0xAD, 0xD6, 0x71, 0x8B, 0x7C, 0x7C, 0x19, 0x61, 0xF0, 0x99, 0x1B, 0x84,
    2351             :         0x24, 0x43, 0x77, 0x21, 0x52, 0xC9, 0xE0, 0xAD,
    2352             :         /* order */
    2353             :         0xE9, 0x5E, 0x4A, 0x5F, 0x73, 0x70, 0x59, 0xDC, 0x60, 0xDF, 0x59, 0x91,
    2354             :         0xD4, 0x50, 0x29, 0x40, 0x9E, 0x60, 0xFC, 0x09
    2355             :     }
    2356             : };
    2357             : 
    2358             : static const struct {
    2359             :     EC_CURVE_DATA h;
    2360             :     unsigned char data[0 + 24 * 6];
    2361             : } _EC_brainpoolP192r1 = {
    2362             :     {
    2363             :         NID_X9_62_prime_field, 0, 24, 1
    2364             :     },
    2365             :     {
    2366             :         /* no seed */
    2367             :         /* p */
    2368             :         0xC3, 0x02, 0xF4, 0x1D, 0x93, 0x2A, 0x36, 0xCD, 0xA7, 0xA3, 0x46, 0x30,
    2369             :         0x93, 0xD1, 0x8D, 0xB7, 0x8F, 0xCE, 0x47, 0x6D, 0xE1, 0xA8, 0x62, 0x97,
    2370             :         /* a */
    2371             :         0x6A, 0x91, 0x17, 0x40, 0x76, 0xB1, 0xE0, 0xE1, 0x9C, 0x39, 0xC0, 0x31,
    2372             :         0xFE, 0x86, 0x85, 0xC1, 0xCA, 0xE0, 0x40, 0xE5, 0xC6, 0x9A, 0x28, 0xEF,
    2373             :         /* b */
    2374             :         0x46, 0x9A, 0x28, 0xEF, 0x7C, 0x28, 0xCC, 0xA3, 0xDC, 0x72, 0x1D, 0x04,
    2375             :         0x4F, 0x44, 0x96, 0xBC, 0xCA, 0x7E, 0xF4, 0x14, 0x6F, 0xBF, 0x25, 0xC9,
    2376             :         /* x */
    2377             :         0xC0, 0xA0, 0x64, 0x7E, 0xAA, 0xB6, 0xA4, 0x87, 0x53, 0xB0, 0x33, 0xC5,
    2378             :         0x6C, 0xB0, 0xF0, 0x90, 0x0A, 0x2F, 0x5C, 0x48, 0x53, 0x37, 0x5F, 0xD6,
    2379             :         /* y */
    2380             :         0x14, 0xB6, 0x90, 0x86, 0x6A, 0xBD, 0x5B, 0xB8, 0x8B, 0x5F, 0x48, 0x28,
    2381             :         0xC1, 0x49, 0x00, 0x02, 0xE6, 0x77, 0x3F, 0xA2, 0xFA, 0x29, 0x9B, 0x8F,
    2382             :         /* order */
    2383             :         0xC3, 0x02, 0xF4, 0x1D, 0x93, 0x2A, 0x36, 0xCD, 0xA7, 0xA3, 0x46, 0x2F,
    2384             :         0x9E, 0x9E, 0x91, 0x6B, 0x5B, 0xE8, 0xF1, 0x02, 0x9A, 0xC4, 0xAC, 0xC1
    2385             :     }
    2386             : };
    2387             : 
    2388             : static const struct {
    2389             :     EC_CURVE_DATA h;
    2390             :     unsigned char data[0 + 24 * 6];
    2391             : } _EC_brainpoolP192t1 = {
    2392             :     {
    2393             :         NID_X9_62_prime_field, 0, 24, 1
    2394             :     },
    2395             :     {
    2396             :         /* no seed */
    2397             :         /* p */
    2398             :         0xC3, 0x02, 0xF4, 0x1D, 0x93, 0x2A, 0x36, 0xCD, 0xA7, 0xA3, 0x46, 0x30,
    2399             :         0x93, 0xD1, 0x8D, 0xB7, 0x8F, 0xCE, 0x47, 0x6D, 0xE1, 0xA8, 0x62, 0x97,
    2400             :         /* a */
    2401             :         0xC3, 0x02, 0xF4, 0x1D, 0x93, 0x2A, 0x36, 0xCD, 0xA7, 0xA3, 0x46, 0x30,
    2402             :         0x93, 0xD1, 0x8D, 0xB7, 0x8F, 0xCE, 0x47, 0x6D, 0xE1, 0xA8, 0x62, 0x94,
    2403             :         /* b */
    2404             :         0x13, 0xD5, 0x6F, 0xFA, 0xEC, 0x78, 0x68, 0x1E, 0x68, 0xF9, 0xDE, 0xB4,
    2405             :         0x3B, 0x35, 0xBE, 0xC2, 0xFB, 0x68, 0x54, 0x2E, 0x27, 0x89, 0x7B, 0x79,
    2406             :         /* x */
    2407             :         0x3A, 0xE9, 0xE5, 0x8C, 0x82, 0xF6, 0x3C, 0x30, 0x28, 0x2E, 0x1F, 0xE7,
    2408             :         0xBB, 0xF4, 0x3F, 0xA7, 0x2C, 0x44, 0x6A, 0xF6, 0xF4, 0x61, 0x81, 0x29,
    2409             :         /* y */
    2410             :         0x09, 0x7E, 0x2C, 0x56, 0x67, 0xC2, 0x22, 0x3A, 0x90, 0x2A, 0xB5, 0xCA,
    2411             :         0x44, 0x9D, 0x00, 0x84, 0xB7, 0xE5, 0xB3, 0xDE, 0x7C, 0xCC, 0x01, 0xC9,
    2412             :         /* order */
    2413             :         0xC3, 0x02, 0xF4, 0x1D, 0x93, 0x2A, 0x36, 0xCD, 0xA7, 0xA3, 0x46, 0x2F,
    2414             :         0x9E, 0x9E, 0x91, 0x6B, 0x5B, 0xE8, 0xF1, 0x02, 0x9A, 0xC4, 0xAC, 0xC1
    2415             :     }
    2416             : };
    2417             : 
    2418             : static const struct {
    2419             :     EC_CURVE_DATA h;
    2420             :     unsigned char data[0 + 28 * 6];
    2421             : } _EC_brainpoolP224r1 = {
    2422             :     {
    2423             :         NID_X9_62_prime_field, 0, 28, 1
    2424             :     },
    2425             :     {
    2426             :         /* no seed */
    2427             :         /* p */
    2428             :         0xD7, 0xC1, 0x34, 0xAA, 0x26, 0x43, 0x66, 0x86, 0x2A, 0x18, 0x30, 0x25,
    2429             :         0x75, 0xD1, 0xD7, 0x87, 0xB0, 0x9F, 0x07, 0x57, 0x97, 0xDA, 0x89, 0xF5,
    2430             :         0x7E, 0xC8, 0xC0, 0xFF,
    2431             :         /* a */
    2432             :         0x68, 0xA5, 0xE6, 0x2C, 0xA9, 0xCE, 0x6C, 0x1C, 0x29, 0x98, 0x03, 0xA6,
    2433             :         0xC1, 0x53, 0x0B, 0x51, 0x4E, 0x18, 0x2A, 0xD8, 0xB0, 0x04, 0x2A, 0x59,
    2434             :         0xCA, 0xD2, 0x9F, 0x43,
    2435             :         /* b */
    2436             :         0x25, 0x80, 0xF6, 0x3C, 0xCF, 0xE4, 0x41, 0x38, 0x87, 0x07, 0x13, 0xB1,
    2437             :         0xA9, 0x23, 0x69, 0xE3, 0x3E, 0x21, 0x35, 0xD2, 0x66, 0xDB, 0xB3, 0x72,
    2438             :         0x38, 0x6C, 0x40, 0x0B,
    2439             :         /* x */
    2440             :         0x0D, 0x90, 0x29, 0xAD, 0x2C, 0x7E, 0x5C, 0xF4, 0x34, 0x08, 0x23, 0xB2,
    2441             :         0xA8, 0x7D, 0xC6, 0x8C, 0x9E, 0x4C, 0xE3, 0x17, 0x4C, 0x1E, 0x6E, 0xFD,
    2442             :         0xEE, 0x12, 0xC0, 0x7D,
    2443             :         /* y */
    2444             :         0x58, 0xAA, 0x56, 0xF7, 0x72, 0xC0, 0x72, 0x6F, 0x24, 0xC6, 0xB8, 0x9E,
    2445             :         0x4E, 0xCD, 0xAC, 0x24, 0x35, 0x4B, 0x9E, 0x99, 0xCA, 0xA3, 0xF6, 0xD3,
    2446             :         0x76, 0x14, 0x02, 0xCD,
    2447             :         /* order */
    2448             :         0xD7, 0xC1, 0x34, 0xAA, 0x26, 0x43, 0x66, 0x86, 0x2A, 0x18, 0x30, 0x25,
    2449             :         0x75, 0xD0, 0xFB, 0x98, 0xD1, 0x16, 0xBC, 0x4B, 0x6D, 0xDE, 0xBC, 0xA3,
    2450             :         0xA5, 0xA7, 0x93, 0x9F
    2451             :     }
    2452             : };
    2453             : 
    2454             : static const struct {
    2455             :     EC_CURVE_DATA h;
    2456             :     unsigned char data[0 + 28 * 6];
    2457             : } _EC_brainpoolP224t1 = {
    2458             :     {
    2459             :         NID_X9_62_prime_field, 0, 28, 1
    2460             :     },
    2461             :     {
    2462             :         /* no seed */
    2463             :         /* p */
    2464             :         0xD7, 0xC1, 0x34, 0xAA, 0x26, 0x43, 0x66, 0x86, 0x2A, 0x18, 0x30, 0x25,
    2465             :         0x75, 0xD1, 0xD7, 0x87, 0xB0, 0x9F, 0x07, 0x57, 0x97, 0xDA, 0x89, 0xF5,
    2466             :         0x7E, 0xC8, 0xC0, 0xFF,
    2467             :         /* a */
    2468             :         0xD7, 0xC1, 0x34, 0xAA, 0x26, 0x43, 0x66, 0x86, 0x2A, 0x18, 0x30, 0x25,
    2469             :         0x75, 0xD1, 0xD7, 0x87, 0xB0, 0x9F, 0x07, 0x57, 0x97, 0xDA, 0x89, 0xF5,
    2470             :         0x7E, 0xC8, 0xC0, 0xFC,
    2471             :         /* b */
    2472             :         0x4B, 0x33, 0x7D, 0x93, 0x41, 0x04, 0xCD, 0x7B, 0xEF, 0x27, 0x1B, 0xF6,
    2473             :         0x0C, 0xED, 0x1E, 0xD2, 0x0D, 0xA1, 0x4C, 0x08, 0xB3, 0xBB, 0x64, 0xF1,
    2474             :         0x8A, 0x60, 0x88, 0x8D,
    2475             :         /* x */
    2476             :         0x6A, 0xB1, 0xE3, 0x44, 0xCE, 0x25, 0xFF, 0x38, 0x96, 0x42, 0x4E, 0x7F,
    2477             :         0xFE, 0x14, 0x76, 0x2E, 0xCB, 0x49, 0xF8, 0x92, 0x8A, 0xC0, 0xC7, 0x60,
    2478             :         0x29, 0xB4, 0xD5, 0x80,
    2479             :         /* y */
    2480             :         0x03, 0x74, 0xE9, 0xF5, 0x14, 0x3E, 0x56, 0x8C, 0xD2, 0x3F, 0x3F, 0x4D,
    2481             :         0x7C, 0x0D, 0x4B, 0x1E, 0x41, 0xC8, 0xCC, 0x0D, 0x1C, 0x6A, 0xBD, 0x5F,
    2482             :         0x1A, 0x46, 0xDB, 0x4C,
    2483             :         /* order */
    2484             :         0xD7, 0xC1, 0x34, 0xAA, 0x26, 0x43, 0x66, 0x86, 0x2A, 0x18, 0x30, 0x25,
    2485             :         0x75, 0xD0, 0xFB, 0x98, 0xD1, 0x16, 0xBC, 0x4B, 0x6D, 0xDE, 0xBC, 0xA3,
    2486             :         0xA5, 0xA7, 0x93, 0x9F
    2487             :     }
    2488             : };
    2489             : 
    2490             : static const struct {
    2491             :     EC_CURVE_DATA h;
    2492             :     unsigned char data[0 + 32 * 6];
    2493             : } _EC_brainpoolP256r1 = {
    2494             :     {
    2495             :         NID_X9_62_prime_field, 0, 32, 1
    2496             :     },
    2497             :     {
    2498             :         /* no seed */
    2499             :         /* p */
    2500             :         0xA9, 0xFB, 0x57, 0xDB, 0xA1, 0xEE, 0xA9, 0xBC, 0x3E, 0x66, 0x0A, 0x90,
    2501             :         0x9D, 0x83, 0x8D, 0x72, 0x6E, 0x3B, 0xF6, 0x23, 0xD5, 0x26, 0x20, 0x28,
    2502             :         0x20, 0x13, 0x48, 0x1D, 0x1F, 0x6E, 0x53, 0x77,
    2503             :         /* a */
    2504             :         0x7D, 0x5A, 0x09, 0x75, 0xFC, 0x2C, 0x30, 0x57, 0xEE, 0xF6, 0x75, 0x30,
    2505             :         0x41, 0x7A, 0xFF, 0xE7, 0xFB, 0x80, 0x55, 0xC1, 0x26, 0xDC, 0x5C, 0x6C,
    2506             :         0xE9, 0x4A, 0x4B, 0x44, 0xF3, 0x30, 0xB5, 0xD9,
    2507             :         /* b */
    2508             :         0x26, 0xDC, 0x5C, 0x6C, 0xE9, 0x4A, 0x4B, 0x44, 0xF3, 0x30, 0xB5, 0xD9,
    2509             :         0xBB, 0xD7, 0x7C, 0xBF, 0x95, 0x84, 0x16, 0x29, 0x5C, 0xF7, 0xE1, 0xCE,
    2510             :         0x6B, 0xCC, 0xDC, 0x18, 0xFF, 0x8C, 0x07, 0xB6,
    2511             :         /* x */
    2512             :         0x8B, 0xD2, 0xAE, 0xB9, 0xCB, 0x7E, 0x57, 0xCB, 0x2C, 0x4B, 0x48, 0x2F,
    2513             :         0xFC, 0x81, 0xB7, 0xAF, 0xB9, 0xDE, 0x27, 0xE1, 0xE3, 0xBD, 0x23, 0xC2,
    2514             :         0x3A, 0x44, 0x53, 0xBD, 0x9A, 0xCE, 0x32, 0x62,
    2515             :         /* y */
    2516             :         0x54, 0x7E, 0xF8, 0x35, 0xC3, 0xDA, 0xC4, 0xFD, 0x97, 0xF8, 0x46, 0x1A,
    2517             :         0x14, 0x61, 0x1D, 0xC9, 0xC2, 0x77, 0x45, 0x13, 0x2D, 0xED, 0x8E, 0x54,
    2518             :         0x5C, 0x1D, 0x54, 0xC7, 0x2F, 0x04, 0x69, 0x97,
    2519             :         /* order */
    2520             :         0xA9, 0xFB, 0x57, 0xDB, 0xA1, 0xEE, 0xA9, 0xBC, 0x3E, 0x66, 0x0A, 0x90,
    2521             :         0x9D, 0x83, 0x8D, 0x71, 0x8C, 0x39, 0x7A, 0xA3, 0xB5, 0x61, 0xA6, 0xF7,
    2522             :         0x90, 0x1E, 0x0E, 0x82, 0x97, 0x48, 0x56, 0xA7
    2523             :     }
    2524             : };
    2525             : 
    2526             : static const struct {
    2527             :     EC_CURVE_DATA h;
    2528             :     unsigned char data[0 + 32 * 6];
    2529             : } _EC_brainpoolP256t1 = {
    2530             :     {
    2531             :         NID_X9_62_prime_field, 0, 32, 1
    2532             :     },
    2533             :     {
    2534             :         /* no seed */
    2535             :         /* p */
    2536             :         0xA9, 0xFB, 0x57, 0xDB, 0xA1, 0xEE, 0xA9, 0xBC, 0x3E, 0x66, 0x0A, 0x90,
    2537             :         0x9D, 0x83, 0x8D, 0x72, 0x6E, 0x3B, 0xF6, 0x23, 0xD5, 0x26, 0x20, 0x28,
    2538             :         0x20, 0x13, 0x48, 0x1D, 0x1F, 0x6E, 0x53, 0x77,
    2539             :         /* a */
    2540             :         0xA9, 0xFB, 0x57, 0xDB, 0xA1, 0xEE, 0xA9, 0xBC, 0x3E, 0x66, 0x0A, 0x90,
    2541             :         0x9D, 0x83, 0x8D, 0x72, 0x6E, 0x3B, 0xF6, 0x23, 0xD5, 0x26, 0x20, 0x28,
    2542             :         0x20, 0x13, 0x48, 0x1D, 0x1F, 0x6E, 0x53, 0x74,
    2543             :         /* b */
    2544             :         0x66, 0x2C, 0x61, 0xC4, 0x30, 0xD8, 0x4E, 0xA4, 0xFE, 0x66, 0xA7, 0x73,
    2545             :         0x3D, 0x0B, 0x76, 0xB7, 0xBF, 0x93, 0xEB, 0xC4, 0xAF, 0x2F, 0x49, 0x25,
    2546             :         0x6A, 0xE5, 0x81, 0x01, 0xFE, 0xE9, 0x2B, 0x04,
    2547             :         /* x */
    2548             :         0xA3, 0xE8, 0xEB, 0x3C, 0xC1, 0xCF, 0xE7, 0xB7, 0x73, 0x22, 0x13, 0xB2,
    2549             :         0x3A, 0x65, 0x61, 0x49, 0xAF, 0xA1, 0x42, 0xC4, 0x7A, 0xAF, 0xBC, 0x2B,
    2550             :         0x79, 0xA1, 0x91, 0x56, 0x2E, 0x13, 0x05, 0xF4,
    2551             :         /* y */
    2552             :         0x2D, 0x99, 0x6C, 0x82, 0x34, 0x39, 0xC5, 0x6D, 0x7F, 0x7B, 0x22, 0xE1,
    2553             :         0x46, 0x44, 0x41, 0x7E, 0x69, 0xBC, 0xB6, 0xDE, 0x39, 0xD0, 0x27, 0x00,
    2554             :         0x1D, 0xAB, 0xE8, 0xF3, 0x5B, 0x25, 0xC9, 0xBE,
    2555             :         /* order */
    2556             :         0xA9, 0xFB, 0x57, 0xDB, 0xA1, 0xEE, 0xA9, 0xBC, 0x3E, 0x66, 0x0A, 0x90,
    2557             :         0x9D, 0x83, 0x8D, 0x71, 0x8C, 0x39, 0x7A, 0xA3, 0xB5, 0x61, 0xA6, 0xF7,
    2558             :         0x90, 0x1E, 0x0E, 0x82, 0x97, 0x48, 0x56, 0xA7
    2559             :     }
    2560             : };
    2561             : 
    2562             : static const struct {
    2563             :     EC_CURVE_DATA h;
    2564             :     unsigned char data[0 + 40 * 6];
    2565             : } _EC_brainpoolP320r1 = {
    2566             :     {
    2567             :         NID_X9_62_prime_field, 0, 40, 1
    2568             :     },
    2569             :     {
    2570             :         /* no seed */
    2571             :         /* p */
    2572             :         0xD3, 0x5E, 0x47, 0x20, 0x36, 0xBC, 0x4F, 0xB7, 0xE1, 0x3C, 0x78, 0x5E,
    2573             :         0xD2, 0x01, 0xE0, 0x65, 0xF9, 0x8F, 0xCF, 0xA6, 0xF6, 0xF4, 0x0D, 0xEF,
    2574             :         0x4F, 0x92, 0xB9, 0xEC, 0x78, 0x93, 0xEC, 0x28, 0xFC, 0xD4, 0x12, 0xB1,
    2575             :         0xF1, 0xB3, 0x2E, 0x27,
    2576             :         /* a */
    2577             :         0x3E, 0xE3, 0x0B, 0x56, 0x8F, 0xBA, 0xB0, 0xF8, 0x83, 0xCC, 0xEB, 0xD4,
    2578             :         0x6D, 0x3F, 0x3B, 0xB8, 0xA2, 0xA7, 0x35, 0x13, 0xF5, 0xEB, 0x79, 0xDA,
    2579             :         0x66, 0x19, 0x0E, 0xB0, 0x85, 0xFF, 0xA9, 0xF4, 0x92, 0xF3, 0x75, 0xA9,
    2580             :         0x7D, 0x86, 0x0E, 0xB4,
    2581             :         /* b */
    2582             :         0x52, 0x08, 0x83, 0x94, 0x9D, 0xFD, 0xBC, 0x42, 0xD3, 0xAD, 0x19, 0x86,
    2583             :         0x40, 0x68, 0x8A, 0x6F, 0xE1, 0x3F, 0x41, 0x34, 0x95, 0x54, 0xB4, 0x9A,
    2584             :         0xCC, 0x31, 0xDC, 0xCD, 0x88, 0x45, 0x39, 0x81, 0x6F, 0x5E, 0xB4, 0xAC,
    2585             :         0x8F, 0xB1, 0xF1, 0xA6,
    2586             :         /* x */
    2587             :         0x43, 0xBD, 0x7E, 0x9A, 0xFB, 0x53, 0xD8, 0xB8, 0x52, 0x89, 0xBC, 0xC4,
    2588             :         0x8E, 0xE5, 0xBF, 0xE6, 0xF2, 0x01, 0x37, 0xD1, 0x0A, 0x08, 0x7E, 0xB6,
    2589             :         0xE7, 0x87, 0x1E, 0x2A, 0x10, 0xA5, 0x99, 0xC7, 0x10, 0xAF, 0x8D, 0x0D,
    2590             :         0x39, 0xE2, 0x06, 0x11,
    2591             :         /* y */
    2592             :         0x14, 0xFD, 0xD0, 0x55, 0x45, 0xEC, 0x1C, 0xC8, 0xAB, 0x40, 0x93, 0x24,
    2593             :         0x7F, 0x77, 0x27, 0x5E, 0x07, 0x43, 0xFF, 0xED, 0x11, 0x71, 0x82, 0xEA,
    2594             :         0xA9, 0xC7, 0x78, 0x77, 0xAA, 0xAC, 0x6A, 0xC7, 0xD3, 0x52, 0x45, 0xD1,
    2595             :         0x69, 0x2E, 0x8E, 0xE1,
    2596             :         /* order */
    2597             :         0xD3, 0x5E, 0x47, 0x20, 0x36, 0xBC, 0x4F, 0xB7, 0xE1, 0x3C, 0x78, 0x5E,
    2598             :         0xD2, 0x01, 0xE0, 0x65, 0xF9, 0x8F, 0xCF, 0xA5, 0xB6, 0x8F, 0x12, 0xA3,
    2599             :         0x2D, 0x48, 0x2E, 0xC7, 0xEE, 0x86, 0x58, 0xE9, 0x86, 0x91, 0x55, 0x5B,
    2600             :         0x44, 0xC5, 0x93, 0x11
    2601             :     }
    2602             : };
    2603             : 
    2604             : static const struct {
    2605             :     EC_CURVE_DATA h;
    2606             :     unsigned char data[0 + 40 * 6];
    2607             : } _EC_brainpoolP320t1 = {
    2608             :     {
    2609             :         NID_X9_62_prime_field, 0, 40, 1
    2610             :     },
    2611             :     {
    2612             :         /* no seed */
    2613             :         /* p */
    2614             :         0xD3, 0x5E, 0x47, 0x20, 0x36, 0xBC, 0x4F, 0xB7, 0xE1, 0x3C, 0x78, 0x5E,
    2615             :         0xD2, 0x01, 0xE0, 0x65, 0xF9, 0x8F, 0xCF, 0xA6, 0xF6, 0xF4, 0x0D, 0xEF,
    2616             :         0x4F, 0x92, 0xB9, 0xEC, 0x78, 0x93, 0xEC, 0x28, 0xFC, 0xD4, 0x12, 0xB1,
    2617             :         0xF1, 0xB3, 0x2E, 0x27,
    2618             :         /* a */
    2619             :         0xD3, 0x5E, 0x47, 0x20, 0x36, 0xBC, 0x4F, 0xB7, 0xE1, 0x3C, 0x78, 0x5E,
    2620             :         0xD2, 0x01, 0xE0, 0x65, 0xF9, 0x8F, 0xCF, 0xA6, 0xF6, 0xF4, 0x0D, 0xEF,
    2621             :         0x4F, 0x92, 0xB9, 0xEC, 0x78, 0x93, 0xEC, 0x28, 0xFC, 0xD4, 0x12, 0xB1,
    2622             :         0xF1, 0xB3, 0x2E, 0x24,
    2623             :         /* b */
    2624             :         0xA7, 0xF5, 0x61, 0xE0, 0x38, 0xEB, 0x1E, 0xD5, 0x60, 0xB3, 0xD1, 0x47,
    2625             :         0xDB, 0x78, 0x20, 0x13, 0x06, 0x4C, 0x19, 0xF2, 0x7E, 0xD2, 0x7C, 0x67,
    2626             :         0x80, 0xAA, 0xF7, 0x7F, 0xB8, 0xA5, 0x47, 0xCE, 0xB5, 0xB4, 0xFE, 0xF4,
    2627             :         0x22, 0x34, 0x03, 0x53,
    2628             :         /* x */
    2629             :         0x92, 0x5B, 0xE9, 0xFB, 0x01, 0xAF, 0xC6, 0xFB, 0x4D, 0x3E, 0x7D, 0x49,
    2630             :         0x90, 0x01, 0x0F, 0x81, 0x34, 0x08, 0xAB, 0x10, 0x6C, 0x4F, 0x09, 0xCB,
    2631             :         0x7E, 0xE0, 0x78, 0x68, 0xCC, 0x13, 0x6F, 0xFF, 0x33, 0x57, 0xF6, 0x24,
    2632             :         0xA2, 0x1B, 0xED, 0x52,
    2633             :         /* y */
    2634             :         0x63, 0xBA, 0x3A, 0x7A, 0x27, 0x48, 0x3E, 0xBF, 0x66, 0x71, 0xDB, 0xEF,
    2635             :         0x7A, 0xBB, 0x30, 0xEB, 0xEE, 0x08, 0x4E, 0x58, 0xA0, 0xB0, 0x77, 0xAD,
    2636             :         0x42, 0xA5, 0xA0, 0x98, 0x9D, 0x1E, 0xE7, 0x1B, 0x1B, 0x9B, 0xC0, 0x45,
    2637             :         0x5F, 0xB0, 0xD2, 0xC3,
    2638             :         /* order */
    2639             :         0xD3, 0x5E, 0x47, 0x20, 0x36, 0xBC, 0x4F, 0xB7, 0xE1, 0x3C, 0x78, 0x5E,
    2640             :         0xD2, 0x01, 0xE0, 0x65, 0xF9, 0x8F, 0xCF, 0xA5, 0xB6, 0x8F, 0x12, 0xA3,
    2641             :         0x2D, 0x48, 0x2E, 0xC7, 0xEE, 0x86, 0x58, 0xE9, 0x86, 0x91, 0x55, 0x5B,
    2642             :         0x44, 0xC5, 0x93, 0x11
    2643             :     }
    2644             : };
    2645             : 
    2646             : static const struct {
    2647             :     EC_CURVE_DATA h;
    2648             :     unsigned char data[0 + 48 * 6];
    2649             : } _EC_brainpoolP384r1 = {
    2650             :     {
    2651             :         NID_X9_62_prime_field, 0, 48, 1
    2652             :     },
    2653             :     {
    2654             :         /* no seed */
    2655             :         /* p */
    2656             :         0x8C, 0xB9, 0x1E, 0x82, 0xA3, 0x38, 0x6D, 0x28, 0x0F, 0x5D, 0x6F, 0x7E,
    2657             :         0x50, 0xE6, 0x41, 0xDF, 0x15, 0x2F, 0x71, 0x09, 0xED, 0x54, 0x56, 0xB4,
    2658             :         0x12, 0xB1, 0xDA, 0x19, 0x7F, 0xB7, 0x11, 0x23, 0xAC, 0xD3, 0xA7, 0x29,
    2659             :         0x90, 0x1D, 0x1A, 0x71, 0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xEC, 0x53,
    2660             :         /* a */
    2661             :         0x7B, 0xC3, 0x82, 0xC6, 0x3D, 0x8C, 0x15, 0x0C, 0x3C, 0x72, 0x08, 0x0A,
    2662             :         0xCE, 0x05, 0xAF, 0xA0, 0xC2, 0xBE, 0xA2, 0x8E, 0x4F, 0xB2, 0x27, 0x87,
    2663             :         0x13, 0x91, 0x65, 0xEF, 0xBA, 0x91, 0xF9, 0x0F, 0x8A, 0xA5, 0x81, 0x4A,
    2664             :         0x50, 0x3A, 0xD4, 0xEB, 0x04, 0xA8, 0xC7, 0xDD, 0x22, 0xCE, 0x28, 0x26,
    2665             :         /* b */
    2666             :         0x04, 0xA8, 0xC7, 0xDD, 0x22, 0xCE, 0x28, 0x26, 0x8B, 0x39, 0xB5, 0x54,
    2667             :         0x16, 0xF0, 0x44, 0x7C, 0x2F, 0xB7, 0x7D, 0xE1, 0x07, 0xDC, 0xD2, 0xA6,
    2668             :         0x2E, 0x88, 0x0E, 0xA5, 0x3E, 0xEB, 0x62, 0xD5, 0x7C, 0xB4, 0x39, 0x02,
    2669             :         0x95, 0xDB, 0xC9, 0x94, 0x3A, 0xB7, 0x86, 0x96, 0xFA, 0x50, 0x4C, 0x11,
    2670             :         /* x */
    2671             :         0x1D, 0x1C, 0x64, 0xF0, 0x68, 0xCF, 0x45, 0xFF, 0xA2, 0xA6, 0x3A, 0x81,
    2672             :         0xB7, 0xC1, 0x3F, 0x6B, 0x88, 0x47, 0xA3, 0xE7, 0x7E, 0xF1, 0x4F, 0xE3,
    2673             :         0xDB, 0x7F, 0xCA, 0xFE, 0x0C, 0xBD, 0x10, 0xE8, 0xE8, 0x26, 0xE0, 0x34,
    2674             :         0x36, 0xD6, 0x46, 0xAA, 0xEF, 0x87, 0xB2, 0xE2, 0x47, 0xD4, 0xAF, 0x1E,
    2675             :         /* y */
    2676             :         0x8A, 0xBE, 0x1D, 0x75, 0x20, 0xF9, 0xC2, 0xA4, 0x5C, 0xB1, 0xEB, 0x8E,
    2677             :         0x95, 0xCF, 0xD5, 0x52, 0x62, 0xB7, 0x0B, 0x29, 0xFE, 0xEC, 0x58, 0x64,
    2678             :         0xE1, 0x9C, 0x05, 0x4F, 0xF9, 0x91, 0x29, 0x28, 0x0E, 0x46, 0x46, 0x21,
    2679             :         0x77, 0x91, 0x81, 0x11, 0x42, 0x82, 0x03, 0x41, 0x26, 0x3C, 0x53, 0x15,
    2680             :         /* order */
    2681             :         0x8C, 0xB9, 0x1E, 0x82, 0xA3, 0x38, 0x6D, 0x28, 0x0F, 0x5D, 0x6F, 0x7E,
    2682             :         0x50, 0xE6, 0x41, 0xDF, 0x15, 0x2F, 0x71, 0x09, 0xED, 0x54, 0x56, 0xB3,
    2683             :         0x1F, 0x16, 0x6E, 0x6C, 0xAC, 0x04, 0x25, 0xA7, 0xCF, 0x3A, 0xB6, 0xAF,
    2684             :         0x6B, 0x7F, 0xC3, 0x10, 0x3B, 0x88, 0x32, 0x02, 0xE9, 0x04, 0x65, 0x65
    2685             :     }
    2686             : };
    2687             : 
    2688             : static const struct {
    2689             :     EC_CURVE_DATA h;
    2690             :     unsigned char data[0 + 48 * 6];
    2691             : } _EC_brainpoolP384t1 = {
    2692             :     {
    2693             :         NID_X9_62_prime_field, 0, 48, 1
    2694             :     },
    2695             :     {
    2696             :         /* no seed */
    2697             :         /* p */
    2698             :         0x8C, 0xB9, 0x1E, 0x82, 0xA3, 0x38, 0x6D, 0x28, 0x0F, 0x5D, 0x6F, 0x7E,
    2699             :         0x50, 0xE6, 0x41, 0xDF, 0x15, 0x2F, 0x71, 0x09, 0xED, 0x54, 0x56, 0xB4,
    2700             :         0x12, 0xB1, 0xDA, 0x19, 0x7F, 0xB7, 0x11, 0x23, 0xAC, 0xD3, 0xA7, 0x29,
    2701             :         0x90, 0x1D, 0x1A, 0x71, 0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xEC, 0x53,
    2702             :         /* a */
    2703             :         0x8C, 0xB9, 0x1E, 0x82, 0xA3, 0x38, 0x6D, 0x28, 0x0F, 0x5D, 0x6F, 0x7E,
    2704             :         0x50, 0xE6, 0x41, 0xDF, 0x15, 0x2F, 0x71, 0x09, 0xED, 0x54, 0x56, 0xB4,
    2705             :         0x12, 0xB1, 0xDA, 0x19, 0x7F, 0xB7, 0x11, 0x23, 0xAC, 0xD3, 0xA7, 0x29,
    2706             :         0x90, 0x1D, 0x1A, 0x71, 0x87, 0x47, 0x00, 0x13, 0x31, 0x07, 0xEC, 0x50,
    2707             :         /* b */
    2708             :         0x7F, 0x51, 0x9E, 0xAD, 0xA7, 0xBD, 0xA8, 0x1B, 0xD8, 0x26, 0xDB, 0xA6,
    2709             :         0x47, 0x91, 0x0F, 0x8C, 0x4B, 0x93, 0x46, 0xED, 0x8C, 0xCD, 0xC6, 0x4E,
    2710             :         0x4B, 0x1A, 0xBD, 0x11, 0x75, 0x6D, 0xCE, 0x1D, 0x20, 0x74, 0xAA, 0x26,
    2711             :         0x3B, 0x88, 0x80, 0x5C, 0xED, 0x70, 0x35, 0x5A, 0x33, 0xB4, 0x71, 0xEE,
    2712             :         /* x */
    2713             :         0x18, 0xDE, 0x98, 0xB0, 0x2D, 0xB9, 0xA3, 0x06, 0xF2, 0xAF, 0xCD, 0x72,
    2714             :         0x35, 0xF7, 0x2A, 0x81, 0x9B, 0x80, 0xAB, 0x12, 0xEB, 0xD6, 0x53, 0x17,
    2715             :         0x24, 0x76, 0xFE, 0xCD, 0x46, 0x2A, 0xAB, 0xFF, 0xC4, 0xFF, 0x19, 0x1B,
    2716             :         0x94, 0x6A, 0x5F, 0x54, 0xD8, 0xD0, 0xAA, 0x2F, 0x41, 0x88, 0x08, 0xCC,
    2717             :         /* y */
    2718             :         0x25, 0xAB, 0x05, 0x69, 0x62, 0xD3, 0x06, 0x51, 0xA1, 0x14, 0xAF, 0xD2,
    2719             :         0x75, 0x5A, 0xD3, 0x36, 0x74, 0x7F, 0x93, 0x47, 0x5B, 0x7A, 0x1F, 0xCA,
    2720             :         0x3B, 0x88, 0xF2, 0xB6, 0xA2, 0x08, 0xCC, 0xFE, 0x46, 0x94, 0x08, 0x58,
    2721             :         0x4D, 0xC2, 0xB2, 0x91, 0x26, 0x75, 0xBF, 0x5B, 0x9E, 0x58, 0x29, 0x28,
    2722             :         /* order */
    2723             :         0x8C, 0xB9, 0x1E, 0x82, 0xA3, 0x38, 0x6D, 0x28, 0x0F, 0x5D, 0x6F, 0x7E,
    2724             :         0x50, 0xE6, 0x41, 0xDF, 0x15, 0x2F, 0x71, 0x09, 0xED, 0x54, 0x56, 0xB3,
    2725             :         0x1F, 0x16, 0x6E, 0x6C, 0xAC, 0x04, 0x25, 0xA7, 0xCF, 0x3A, 0xB6, 0xAF,
    2726             :         0x6B, 0x7F, 0xC3, 0x10, 0x3B, 0x88, 0x32, 0x02, 0xE9, 0x04, 0x65, 0x65
    2727             :     }
    2728             : };
    2729             : 
    2730             : static const struct {
    2731             :     EC_CURVE_DATA h;
    2732             :     unsigned char data[0 + 64 * 6];
    2733             : } _EC_brainpoolP512r1 = {
    2734             :     {
    2735             :         NID_X9_62_prime_field, 0, 64, 1
    2736             :     },
    2737             :     {
    2738             :         /* no seed */
    2739             :         /* p */
    2740             :         0xAA, 0xDD, 0x9D, 0xB8, 0xDB, 0xE9, 0xC4, 0x8B, 0x3F, 0xD4, 0xE6, 0xAE,
    2741             :         0x33, 0xC9, 0xFC, 0x07, 0xCB, 0x30, 0x8D, 0xB3, 0xB3, 0xC9, 0xD2, 0x0E,
    2742             :         0xD6, 0x63, 0x9C, 0xCA, 0x70, 0x33, 0x08, 0x71, 0x7D, 0x4D, 0x9B, 0x00,
    2743             :         0x9B, 0xC6, 0x68, 0x42, 0xAE, 0xCD, 0xA1, 0x2A, 0xE6, 0xA3, 0x80, 0xE6,
    2744             :         0x28, 0x81, 0xFF, 0x2F, 0x2D, 0x82, 0xC6, 0x85, 0x28, 0xAA, 0x60, 0x56,
    2745             :         0x58, 0x3A, 0x48, 0xF3,
    2746             :         /* a */
    2747             :         0x78, 0x30, 0xA3, 0x31, 0x8B, 0x60, 0x3B, 0x89, 0xE2, 0x32, 0x71, 0x45,
    2748             :         0xAC, 0x23, 0x4C, 0xC5, 0x94, 0xCB, 0xDD, 0x8D, 0x3D, 0xF9, 0x16, 0x10,
    2749             :         0xA8, 0x34, 0x41, 0xCA, 0xEA, 0x98, 0x63, 0xBC, 0x2D, 0xED, 0x5D, 0x5A,
    2750             :         0xA8, 0x25, 0x3A, 0xA1, 0x0A, 0x2E, 0xF1, 0xC9, 0x8B, 0x9A, 0xC8, 0xB5,
    2751             :         0x7F, 0x11, 0x17, 0xA7, 0x2B, 0xF2, 0xC7, 0xB9, 0xE7, 0xC1, 0xAC, 0x4D,
    2752             :         0x77, 0xFC, 0x94, 0xCA,
    2753             :         /* b */
    2754             :         0x3D, 0xF9, 0x16, 0x10, 0xA8, 0x34, 0x41, 0xCA, 0xEA, 0x98, 0x63, 0xBC,
    2755             :         0x2D, 0xED, 0x5D, 0x5A, 0xA8, 0x25, 0x3A, 0xA1, 0x0A, 0x2E, 0xF1, 0xC9,
    2756             :         0x8B, 0x9A, 0xC8, 0xB5, 0x7F, 0x11, 0x17, 0xA7, 0x2B, 0xF2, 0xC7, 0xB9,
    2757             :         0xE7, 0xC1, 0xAC, 0x4D, 0x77, 0xFC, 0x94, 0xCA, 0xDC, 0x08, 0x3E, 0x67,
    2758             :         0x98, 0x40, 0x50, 0xB7, 0x5E, 0xBA, 0xE5, 0xDD, 0x28, 0x09, 0xBD, 0x63,
    2759             :         0x80, 0x16, 0xF7, 0x23,
    2760             :         /* x */
    2761             :         0x81, 0xAE, 0xE4, 0xBD, 0xD8, 0x2E, 0xD9, 0x64, 0x5A, 0x21, 0x32, 0x2E,
    2762             :         0x9C, 0x4C, 0x6A, 0x93, 0x85, 0xED, 0x9F, 0x70, 0xB5, 0xD9, 0x16, 0xC1,
    2763             :         0xB4, 0x3B, 0x62, 0xEE, 0xF4, 0xD0, 0x09, 0x8E, 0xFF, 0x3B, 0x1F, 0x78,
    2764             :         0xE2, 0xD0, 0xD4, 0x8D, 0x50, 0xD1, 0x68, 0x7B, 0x93, 0xB9, 0x7D, 0x5F,
    2765             :         0x7C, 0x6D, 0x50, 0x47, 0x40, 0x6A, 0x5E, 0x68, 0x8B, 0x35, 0x22, 0x09,
    2766             :         0xBC, 0xB9, 0xF8, 0x22,
    2767             :         /* y */
    2768             :         0x7D, 0xDE, 0x38, 0x5D, 0x56, 0x63, 0x32, 0xEC, 0xC0, 0xEA, 0xBF, 0xA9,
    2769             :         0xCF, 0x78, 0x22, 0xFD, 0xF2, 0x09, 0xF7, 0x00, 0x24, 0xA5, 0x7B, 0x1A,
    2770             :         0xA0, 0x00, 0xC5, 0x5B, 0x88, 0x1F, 0x81, 0x11, 0xB2, 0xDC, 0xDE, 0x49,
    2771             :         0x4A, 0x5F, 0x48, 0x5E, 0x5B, 0xCA, 0x4B, 0xD8, 0x8A, 0x27, 0x63, 0xAE,
    2772             :         0xD1, 0xCA, 0x2B, 0x2F, 0xA8, 0xF0, 0x54, 0x06, 0x78, 0xCD, 0x1E, 0x0F,
    2773             :         0x3A, 0xD8, 0x08, 0x92,
    2774             :         /* order */
    2775             :         0xAA, 0xDD, 0x9D, 0xB8, 0xDB, 0xE9, 0xC4, 0x8B, 0x3F, 0xD4, 0xE6, 0xAE,
    2776             :         0x33, 0xC9, 0xFC, 0x07, 0xCB, 0x30, 0x8D, 0xB3, 0xB3, 0xC9, 0xD2, 0x0E,
    2777             :         0xD6, 0x63, 0x9C, 0xCA, 0x70, 0x33, 0x08, 0x70, 0x55, 0x3E, 0x5C, 0x41,
    2778             :         0x4C, 0xA9, 0x26, 0x19, 0x41, 0x86, 0x61, 0x19, 0x7F, 0xAC, 0x10, 0x47,
    2779             :         0x1D, 0xB1, 0xD3, 0x81, 0x08, 0x5D, 0xDA, 0xDD, 0xB5, 0x87, 0x96, 0x82,
    2780             :         0x9C, 0xA9, 0x00, 0x69
    2781             :     }
    2782             : };
    2783             : 
    2784             : static const struct {
    2785             :     EC_CURVE_DATA h;
    2786             :     unsigned char data[0 + 64 * 6];
    2787             : } _EC_brainpoolP512t1 = {
    2788             :     {
    2789             :         NID_X9_62_prime_field, 0, 64, 1
    2790             :     },
    2791             :     {
    2792             :         /* no seed */
    2793             :         /* p */
    2794             :         0xAA, 0xDD, 0x9D, 0xB8, 0xDB, 0xE9, 0xC4, 0x8B, 0x3F, 0xD4, 0xE6, 0xAE,
    2795             :         0x33, 0xC9, 0xFC, 0x07, 0xCB, 0x30, 0x8D, 0xB3, 0xB3, 0xC9, 0xD2, 0x0E,
    2796             :         0xD6, 0x63, 0x9C, 0xCA, 0x70, 0x33, 0x08, 0x71, 0x7D, 0x4D, 0x9B, 0x00,
    2797             :         0x9B, 0xC6, 0x68, 0x42, 0xAE, 0xCD, 0xA1, 0x2A, 0xE6, 0xA3, 0x80, 0xE6,
    2798             :         0x28, 0x81, 0xFF, 0x2F, 0x2D, 0x82, 0xC6, 0x85, 0x28, 0xAA, 0x60, 0x56,
    2799             :         0x58, 0x3A, 0x48, 0xF3,
    2800             :         /* a */
    2801             :         0xAA, 0xDD, 0x9D, 0xB8, 0xDB, 0xE9, 0xC4, 0x8B, 0x3F, 0xD4, 0xE6, 0xAE,
    2802             :         0x33, 0xC9, 0xFC, 0x07, 0xCB, 0x30, 0x8D, 0xB3, 0xB3, 0xC9, 0xD2, 0x0E,
    2803             :         0xD6, 0x63, 0x9C, 0xCA, 0x70, 0x33, 0x08, 0x71, 0x7D, 0x4D, 0x9B, 0x00,
    2804             :         0x9B, 0xC6, 0x68, 0x42, 0xAE, 0xCD, 0xA1, 0x2A, 0xE6, 0xA3, 0x80, 0xE6,
    2805             :         0x28, 0x81, 0xFF, 0x2F, 0x2D, 0x82, 0xC6, 0x85, 0x28, 0xAA, 0x60, 0x56,
    2806             :         0x58, 0x3A, 0x48, 0xF0,
    2807             :         /* b */
    2808             :         0x7C, 0xBB, 0xBC, 0xF9, 0x44, 0x1C, 0xFA, 0xB7, 0x6E, 0x18, 0x90, 0xE4,
    2809             :         0x68, 0x84, 0xEA, 0xE3, 0x21, 0xF7, 0x0C, 0x0B, 0xCB, 0x49, 0x81, 0x52,
    2810             :         0x78, 0x97, 0x50, 0x4B, 0xEC, 0x3E, 0x36, 0xA6, 0x2B, 0xCD, 0xFA, 0x23,
    2811             :         0x04, 0x97, 0x65, 0x40, 0xF6, 0x45, 0x00, 0x85, 0xF2, 0xDA, 0xE1, 0x45,
    2812             :         0xC2, 0x25, 0x53, 0xB4, 0x65, 0x76, 0x36, 0x89, 0x18, 0x0E, 0xA2, 0x57,
    2813             :         0x18, 0x67, 0x42, 0x3E,
    2814             :         /* x */
    2815             :         0x64, 0x0E, 0xCE, 0x5C, 0x12, 0x78, 0x87, 0x17, 0xB9, 0xC1, 0xBA, 0x06,
    2816             :         0xCB, 0xC2, 0xA6, 0xFE, 0xBA, 0x85, 0x84, 0x24, 0x58, 0xC5, 0x6D, 0xDE,
    2817             :         0x9D, 0xB1, 0x75, 0x8D, 0x39, 0xC0, 0x31, 0x3D, 0x82, 0xBA, 0x51, 0x73,
    2818             :         0x5C, 0xDB, 0x3E, 0xA4, 0x99, 0xAA, 0x77, 0xA7, 0xD6, 0x94, 0x3A, 0x64,
    2819             :         0xF7, 0xA3, 0xF2, 0x5F, 0xE2, 0x6F, 0x06, 0xB5, 0x1B, 0xAA, 0x26, 0x96,
    2820             :         0xFA, 0x90, 0x35, 0xDA,
    2821             :         /* y */
    2822             :         0x5B, 0x53, 0x4B, 0xD5, 0x95, 0xF5, 0xAF, 0x0F, 0xA2, 0xC8, 0x92, 0x37,
    2823             :         0x6C, 0x84, 0xAC, 0xE1, 0xBB, 0x4E, 0x30, 0x19, 0xB7, 0x16, 0x34, 0xC0,
    2824             :         0x11, 0x31, 0x15, 0x9C, 0xAE, 0x03, 0xCE, 0xE9, 0xD9, 0x93, 0x21, 0x84,
    2825             :         0xBE, 0xEF, 0x21, 0x6B, 0xD7, 0x1D, 0xF2, 0xDA, 0xDF, 0x86, 0xA6, 0x27,
    2826             :         0x30, 0x6E, 0xCF, 0xF9, 0x6D, 0xBB, 0x8B, 0xAC, 0xE1, 0x98, 0xB6, 0x1E,
    2827             :         0x00, 0xF8, 0xB3, 0x32,
    2828             :         /* order */
    2829             :         0xAA, 0xDD, 0x9D, 0xB8, 0xDB, 0xE9, 0xC4, 0x8B, 0x3F, 0xD4, 0xE6, 0xAE,
    2830             :         0x33, 0xC9, 0xFC, 0x07, 0xCB, 0x30, 0x8D, 0xB3, 0xB3, 0xC9, 0xD2, 0x0E,
    2831             :         0xD6, 0x63, 0x9C, 0xCA, 0x70, 0x33, 0x08, 0x70, 0x55, 0x3E, 0x5C, 0x41,
    2832             :         0x4C, 0xA9, 0x26, 0x19, 0x41, 0x86, 0x61, 0x19, 0x7F, 0xAC, 0x10, 0x47,
    2833             :         0x1D, 0xB1, 0xD3, 0x81, 0x08, 0x5D, 0xDA, 0xDD, 0xB5, 0x87, 0x96, 0x82,
    2834             :         0x9C, 0xA9, 0x00, 0x69
    2835             :     }
    2836             : };
    2837             : 
    2838             : typedef struct _ec_list_element_st {
    2839             :     int nid;
    2840             :     const EC_CURVE_DATA *data;
    2841             :     const EC_METHOD *(*meth) (void);
    2842             :     const char *comment;
    2843             : } ec_list_element;
    2844             : 
    2845             : static const ec_list_element curve_list[] = {
    2846             :     /* prime field curves */
    2847             :     /* secg curves */
    2848             :     {NID_secp112r1, &_EC_SECG_PRIME_112R1.h, 0,
    2849             :      "SECG/WTLS curve over a 112 bit prime field"},
    2850             :     {NID_secp112r2, &_EC_SECG_PRIME_112R2.h, 0,
    2851             :      "SECG curve over a 112 bit prime field"},
    2852             :     {NID_secp128r1, &_EC_SECG_PRIME_128R1.h, 0,
    2853             :      "SECG curve over a 128 bit prime field"},
    2854             :     {NID_secp128r2, &_EC_SECG_PRIME_128R2.h, 0,
    2855             :      "SECG curve over a 128 bit prime field"},
    2856             :     {NID_secp160k1, &_EC_SECG_PRIME_160K1.h, 0,
    2857             :      "SECG curve over a 160 bit prime field"},
    2858             :     {NID_secp160r1, &_EC_SECG_PRIME_160R1.h, 0,
    2859             :      "SECG curve over a 160 bit prime field"},
    2860             :     {NID_secp160r2, &_EC_SECG_PRIME_160R2.h, 0,
    2861             :      "SECG/WTLS curve over a 160 bit prime field"},
    2862             :     /* SECG secp192r1 is the same as X9.62 prime192v1 and hence omitted */
    2863             :     {NID_secp192k1, &_EC_SECG_PRIME_192K1.h, 0,
    2864             :      "SECG curve over a 192 bit prime field"},
    2865             :     {NID_secp224k1, &_EC_SECG_PRIME_224K1.h, 0,
    2866             :      "SECG curve over a 224 bit prime field"},
    2867             : #ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
    2868             :     {NID_secp224r1, &_EC_NIST_PRIME_224.h, EC_GFp_nistp224_method,
    2869             :      "NIST/SECG curve over a 224 bit prime field"},
    2870             : #else
    2871             :     {NID_secp224r1, &_EC_NIST_PRIME_224.h, 0,
    2872             :      "NIST/SECG curve over a 224 bit prime field"},
    2873             : #endif
    2874             :     {NID_secp256k1, &_EC_SECG_PRIME_256K1.h, 0,
    2875             :      "SECG curve over a 256 bit prime field"},
    2876             :     /* SECG secp256r1 is the same as X9.62 prime256v1 and hence omitted */
    2877             :     {NID_secp384r1, &_EC_NIST_PRIME_384.h, 0,
    2878             :      "NIST/SECG curve over a 384 bit prime field"},
    2879             : #ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
    2880             :     {NID_secp521r1, &_EC_NIST_PRIME_521.h, EC_GFp_nistp521_method,
    2881             :      "NIST/SECG curve over a 521 bit prime field"},
    2882             : #else
    2883             :     {NID_secp521r1, &_EC_NIST_PRIME_521.h, 0,
    2884             :      "NIST/SECG curve over a 521 bit prime field"},
    2885             : #endif
    2886             :     /* X9.62 curves */
    2887             :     {NID_X9_62_prime192v1, &_EC_NIST_PRIME_192.h, 0,
    2888             :      "NIST/X9.62/SECG curve over a 192 bit prime field"},
    2889             :     {NID_X9_62_prime192v2, &_EC_X9_62_PRIME_192V2.h, 0,
    2890             :      "X9.62 curve over a 192 bit prime field"},
    2891             :     {NID_X9_62_prime192v3, &_EC_X9_62_PRIME_192V3.h, 0,
    2892             :      "X9.62 curve over a 192 bit prime field"},
    2893             :     {NID_X9_62_prime239v1, &_EC_X9_62_PRIME_239V1.h, 0,
    2894             :      "X9.62 curve over a 239 bit prime field"},
    2895             :     {NID_X9_62_prime239v2, &_EC_X9_62_PRIME_239V2.h, 0,
    2896             :      "X9.62 curve over a 239 bit prime field"},
    2897             :     {NID_X9_62_prime239v3, &_EC_X9_62_PRIME_239V3.h, 0,
    2898             :      "X9.62 curve over a 239 bit prime field"},
    2899             :     {NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h,
    2900             : #if defined(ECP_NISTZ256_ASM)
    2901             :      EC_GFp_nistz256_method,
    2902             : #elif !defined(OPENSSL_NO_EC_NISTP_64_GCC_128)
    2903             :      EC_GFp_nistp256_method,
    2904             : #else
    2905             :      0,
    2906             : #endif
    2907             :      "X9.62/SECG curve over a 256 bit prime field"},
    2908             : #ifndef OPENSSL_NO_EC2M
    2909             :     /* characteristic two field curves */
    2910             :     /* NIST/SECG curves */
    2911             :     {NID_sect113r1, &_EC_SECG_CHAR2_113R1.h, 0,
    2912             :      "SECG curve over a 113 bit binary field"},
    2913             :     {NID_sect113r2, &_EC_SECG_CHAR2_113R2.h, 0,
    2914             :      "SECG curve over a 113 bit binary field"},
    2915             :     {NID_sect131r1, &_EC_SECG_CHAR2_131R1.h, 0,
    2916             :      "SECG/WTLS curve over a 131 bit binary field"},
    2917             :     {NID_sect131r2, &_EC_SECG_CHAR2_131R2.h, 0,
    2918             :      "SECG curve over a 131 bit binary field"},
    2919             :     {NID_sect163k1, &_EC_NIST_CHAR2_163K.h, 0,
    2920             :      "NIST/SECG/WTLS curve over a 163 bit binary field"},
    2921             :     {NID_sect163r1, &_EC_SECG_CHAR2_163R1.h, 0,
    2922             :      "SECG curve over a 163 bit binary field"},
    2923             :     {NID_sect163r2, &_EC_NIST_CHAR2_163B.h, 0,
    2924             :      "NIST/SECG curve over a 163 bit binary field"},
    2925             :     {NID_sect193r1, &_EC_SECG_CHAR2_193R1.h, 0,
    2926             :      "SECG curve over a 193 bit binary field"},
    2927             :     {NID_sect193r2, &_EC_SECG_CHAR2_193R2.h, 0,
    2928             :      "SECG curve over a 193 bit binary field"},
    2929             :     {NID_sect233k1, &_EC_NIST_CHAR2_233K.h, 0,
    2930             :      "NIST/SECG/WTLS curve over a 233 bit binary field"},
    2931             :     {NID_sect233r1, &_EC_NIST_CHAR2_233B.h, 0,
    2932             :      "NIST/SECG/WTLS curve over a 233 bit binary field"},
    2933             :     {NID_sect239k1, &_EC_SECG_CHAR2_239K1.h, 0,
    2934             :      "SECG curve over a 239 bit binary field"},
    2935             :     {NID_sect283k1, &_EC_NIST_CHAR2_283K.h, 0,
    2936             :      "NIST/SECG curve over a 283 bit binary field"},
    2937             :     {NID_sect283r1, &_EC_NIST_CHAR2_283B.h, 0,
    2938             :      "NIST/SECG curve over a 283 bit binary field"},
    2939             :     {NID_sect409k1, &_EC_NIST_CHAR2_409K.h, 0,
    2940             :      "NIST/SECG curve over a 409 bit binary field"},
    2941             :     {NID_sect409r1, &_EC_NIST_CHAR2_409B.h, 0,
    2942             :      "NIST/SECG curve over a 409 bit binary field"},
    2943             :     {NID_sect571k1, &_EC_NIST_CHAR2_571K.h, 0,
    2944             :      "NIST/SECG curve over a 571 bit binary field"},
    2945             :     {NID_sect571r1, &_EC_NIST_CHAR2_571B.h, 0,
    2946             :      "NIST/SECG curve over a 571 bit binary field"},
    2947             :     /* X9.62 curves */
    2948             :     {NID_X9_62_c2pnb163v1, &_EC_X9_62_CHAR2_163V1.h, 0,
    2949             :      "X9.62 curve over a 163 bit binary field"},
    2950             :     {NID_X9_62_c2pnb163v2, &_EC_X9_62_CHAR2_163V2.h, 0,
    2951             :      "X9.62 curve over a 163 bit binary field"},
    2952             :     {NID_X9_62_c2pnb163v3, &_EC_X9_62_CHAR2_163V3.h, 0,
    2953             :      "X9.62 curve over a 163 bit binary field"},
    2954             :     {NID_X9_62_c2pnb176v1, &_EC_X9_62_CHAR2_176V1.h, 0,
    2955             :      "X9.62 curve over a 176 bit binary field"},
    2956             :     {NID_X9_62_c2tnb191v1, &_EC_X9_62_CHAR2_191V1.h, 0,
    2957             :      "X9.62 curve over a 191 bit binary field"},
    2958             :     {NID_X9_62_c2tnb191v2, &_EC_X9_62_CHAR2_191V2.h, 0,
    2959             :      "X9.62 curve over a 191 bit binary field"},
    2960             :     {NID_X9_62_c2tnb191v3, &_EC_X9_62_CHAR2_191V3.h, 0,
    2961             :      "X9.62 curve over a 191 bit binary field"},
    2962             :     {NID_X9_62_c2pnb208w1, &_EC_X9_62_CHAR2_208W1.h, 0,
    2963             :      "X9.62 curve over a 208 bit binary field"},
    2964             :     {NID_X9_62_c2tnb239v1, &_EC_X9_62_CHAR2_239V1.h, 0,
    2965             :      "X9.62 curve over a 239 bit binary field"},
    2966             :     {NID_X9_62_c2tnb239v2, &_EC_X9_62_CHAR2_239V2.h, 0,
    2967             :      "X9.62 curve over a 239 bit binary field"},
    2968             :     {NID_X9_62_c2tnb239v3, &_EC_X9_62_CHAR2_239V3.h, 0,
    2969             :      "X9.62 curve over a 239 bit binary field"},
    2970             :     {NID_X9_62_c2pnb272w1, &_EC_X9_62_CHAR2_272W1.h, 0,
    2971             :      "X9.62 curve over a 272 bit binary field"},
    2972             :     {NID_X9_62_c2pnb304w1, &_EC_X9_62_CHAR2_304W1.h, 0,
    2973             :      "X9.62 curve over a 304 bit binary field"},
    2974             :     {NID_X9_62_c2tnb359v1, &_EC_X9_62_CHAR2_359V1.h, 0,
    2975             :      "X9.62 curve over a 359 bit binary field"},
    2976             :     {NID_X9_62_c2pnb368w1, &_EC_X9_62_CHAR2_368W1.h, 0,
    2977             :      "X9.62 curve over a 368 bit binary field"},
    2978             :     {NID_X9_62_c2tnb431r1, &_EC_X9_62_CHAR2_431R1.h, 0,
    2979             :      "X9.62 curve over a 431 bit binary field"},
    2980             :     /*
    2981             :      * the WAP/WTLS curves [unlike SECG, spec has its own OIDs for curves
    2982             :      * from X9.62]
    2983             :      */
    2984             :     {NID_wap_wsg_idm_ecid_wtls1, &_EC_WTLS_1.h, 0,
    2985             :      "WTLS curve over a 113 bit binary field"},
    2986             :     {NID_wap_wsg_idm_ecid_wtls3, &_EC_NIST_CHAR2_163K.h, 0,
    2987             :      "NIST/SECG/WTLS curve over a 163 bit binary field"},
    2988             :     {NID_wap_wsg_idm_ecid_wtls4, &_EC_SECG_CHAR2_113R1.h, 0,
    2989             :      "SECG curve over a 113 bit binary field"},
    2990             :     {NID_wap_wsg_idm_ecid_wtls5, &_EC_X9_62_CHAR2_163V1.h, 0,
    2991             :      "X9.62 curve over a 163 bit binary field"},
    2992             : #endif
    2993             :     {NID_wap_wsg_idm_ecid_wtls6, &_EC_SECG_PRIME_112R1.h, 0,
    2994             :      "SECG/WTLS curve over a 112 bit prime field"},
    2995             :     {NID_wap_wsg_idm_ecid_wtls7, &_EC_SECG_PRIME_160R2.h, 0,
    2996             :      "SECG/WTLS curve over a 160 bit prime field"},
    2997             :     {NID_wap_wsg_idm_ecid_wtls8, &_EC_WTLS_8.h, 0,
    2998             :      "WTLS curve over a 112 bit prime field"},
    2999             :     {NID_wap_wsg_idm_ecid_wtls9, &_EC_WTLS_9.h, 0,
    3000             :      "WTLS curve over a 160 bit prime field"},
    3001             : #ifndef OPENSSL_NO_EC2M
    3002             :     {NID_wap_wsg_idm_ecid_wtls10, &_EC_NIST_CHAR2_233K.h, 0,
    3003             :      "NIST/SECG/WTLS curve over a 233 bit binary field"},
    3004             :     {NID_wap_wsg_idm_ecid_wtls11, &_EC_NIST_CHAR2_233B.h, 0,
    3005             :      "NIST/SECG/WTLS curve over a 233 bit binary field"},
    3006             : #endif
    3007             :     {NID_wap_wsg_idm_ecid_wtls12, &_EC_WTLS_12.h, 0,
    3008             :      "WTLS curvs over a 224 bit prime field"},
    3009             : #ifndef OPENSSL_NO_EC2M
    3010             :     /* IPSec curves */
    3011             :     {NID_ipsec3, &_EC_IPSEC_155_ID3.h, 0,
    3012             :      "\n\tIPSec/IKE/Oakley curve #3 over a 155 bit binary field.\n"
    3013             :      "\tNot suitable for ECDSA.\n\tQuestionable extension field!"},
    3014             :     {NID_ipsec4, &_EC_IPSEC_185_ID4.h, 0,
    3015             :      "\n\tIPSec/IKE/Oakley curve #4 over a 185 bit binary field.\n"
    3016             :      "\tNot suitable for ECDSA.\n\tQuestionable extension field!"},
    3017             : #endif
    3018             :     /* brainpool curves */
    3019             :     {NID_brainpoolP160r1, &_EC_brainpoolP160r1.h, 0,
    3020             :      "RFC 5639 curve over a 160 bit prime field"},
    3021             :     {NID_brainpoolP160t1, &_EC_brainpoolP160t1.h, 0,
    3022             :      "RFC 5639 curve over a 160 bit prime field"},
    3023             :     {NID_brainpoolP192r1, &_EC_brainpoolP192r1.h, 0,
    3024             :      "RFC 5639 curve over a 192 bit prime field"},
    3025             :     {NID_brainpoolP192t1, &_EC_brainpoolP192t1.h, 0,
    3026             :      "RFC 5639 curve over a 192 bit prime field"},
    3027             :     {NID_brainpoolP224r1, &_EC_brainpoolP224r1.h, 0,
    3028             :      "RFC 5639 curve over a 224 bit prime field"},
    3029             :     {NID_brainpoolP224t1, &_EC_brainpoolP224t1.h, 0,
    3030             :      "RFC 5639 curve over a 224 bit prime field"},
    3031             :     {NID_brainpoolP256r1, &_EC_brainpoolP256r1.h, 0,
    3032             :      "RFC 5639 curve over a 256 bit prime field"},
    3033             :     {NID_brainpoolP256t1, &_EC_brainpoolP256t1.h, 0,
    3034             :      "RFC 5639 curve over a 256 bit prime field"},
    3035             :     {NID_brainpoolP320r1, &_EC_brainpoolP320r1.h, 0,
    3036             :      "RFC 5639 curve over a 320 bit prime field"},
    3037             :     {NID_brainpoolP320t1, &_EC_brainpoolP320t1.h, 0,
    3038             :      "RFC 5639 curve over a 320 bit prime field"},
    3039             :     {NID_brainpoolP384r1, &_EC_brainpoolP384r1.h, 0,
    3040             :      "RFC 5639 curve over a 384 bit prime field"},
    3041             :     {NID_brainpoolP384t1, &_EC_brainpoolP384t1.h, 0,
    3042             :      "RFC 5639 curve over a 384 bit prime field"},
    3043             :     {NID_brainpoolP512r1, &_EC_brainpoolP512r1.h, 0,
    3044             :      "RFC 5639 curve over a 512 bit prime field"},
    3045             :     {NID_brainpoolP512t1, &_EC_brainpoolP512t1.h, 0,
    3046             :      "RFC 5639 curve over a 512 bit prime field"},
    3047             : };
    3048             : 
    3049             : #define curve_list_length (sizeof(curve_list)/sizeof(ec_list_element))
    3050             : 
    3051        1242 : static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
    3052             : {
    3053             :     EC_GROUP *group = NULL;
    3054             :     EC_POINT *P = NULL;
    3055             :     BN_CTX *ctx = NULL;
    3056             :     BIGNUM *p = NULL, *a = NULL, *b = NULL, *x = NULL, *y = NULL, *order =
    3057             :         NULL;
    3058             :     int ok = 0;
    3059             :     int seed_len, param_len;
    3060             :     const EC_METHOD *meth;
    3061             :     const EC_CURVE_DATA *data;
    3062             :     const unsigned char *params;
    3063             : 
    3064        1242 :     if ((ctx = BN_CTX_new()) == NULL) {
    3065           0 :         ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_MALLOC_FAILURE);
    3066             :         goto err;
    3067             :     }
    3068             : 
    3069        1242 :     data = curve.data;
    3070        1242 :     seed_len = data->seed_len;
    3071        1242 :     param_len = data->param_len;
    3072        1242 :     params = (const unsigned char *)(data + 1); /* skip header */
    3073        1242 :     params += seed_len;         /* skip seed */
    3074             : 
    3075        1242 :     if (!(p = BN_bin2bn(params + 0 * param_len, param_len, NULL))
    3076        1242 :         || !(a = BN_bin2bn(params + 1 * param_len, param_len, NULL))
    3077        1242 :         || !(b = BN_bin2bn(params + 2 * param_len, param_len, NULL))) {
    3078           0 :         ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
    3079             :         goto err;
    3080             :     }
    3081             : 
    3082        1242 :     if (curve.meth != 0) {
    3083           0 :         meth = curve.meth();
    3084           0 :         if (((group = EC_GROUP_new(meth)) == NULL) ||
    3085           0 :             (!(group->meth->group_set_curve(group, p, a, b, ctx)))) {
    3086           0 :             ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
    3087             :             goto err;
    3088             :         }
    3089        1242 :     } else if (data->field_type == NID_X9_62_prime_field) {
    3090        1242 :         if ((group = EC_GROUP_new_curve_GFp(p, a, b, ctx)) == NULL) {
    3091           0 :             ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
    3092             :             goto err;
    3093             :         }
    3094             :     }
    3095             : #ifndef OPENSSL_NO_EC2M
    3096             :     else {                      /* field_type ==
    3097             :                                  * NID_X9_62_characteristic_two_field */
    3098             : 
    3099           0 :         if ((group = EC_GROUP_new_curve_GF2m(p, a, b, ctx)) == NULL) {
    3100           0 :             ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
    3101             :             goto err;
    3102             :         }
    3103             :     }
    3104             : #endif
    3105             : 
    3106        1242 :     if ((P = EC_POINT_new(group)) == NULL) {
    3107           0 :         ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
    3108             :         goto err;
    3109             :     }
    3110             : 
    3111        1242 :     if (!(x = BN_bin2bn(params + 3 * param_len, param_len, NULL))
    3112        1242 :         || !(y = BN_bin2bn(params + 4 * param_len, param_len, NULL))) {
    3113           0 :         ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
    3114             :         goto err;
    3115             :     }
    3116        1242 :     if (!EC_POINT_set_affine_coordinates_GFp(group, P, x, y, ctx)) {
    3117           0 :         ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
    3118             :         goto err;
    3119             :     }
    3120        1242 :     if (!(order = BN_bin2bn(params + 5 * param_len, param_len, NULL))
    3121        1242 :         || !BN_set_word(x, (BN_ULONG)data->cofactor)) {
    3122           0 :         ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
    3123             :         goto err;
    3124             :     }
    3125        1242 :     if (!EC_GROUP_set_generator(group, P, order, x)) {
    3126           0 :         ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
    3127             :         goto err;
    3128             :     }
    3129        1242 :     if (seed_len) {
    3130        1242 :         if (!EC_GROUP_set_seed(group, params - seed_len, seed_len)) {
    3131           0 :             ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
    3132             :             goto err;
    3133             :         }
    3134             :     }
    3135             :     ok = 1;
    3136             :  err:
    3137        1242 :     if (!ok) {
    3138           0 :         EC_GROUP_free(group);
    3139             :         group = NULL;
    3140             :     }
    3141        1242 :     if (P)
    3142        1242 :         EC_POINT_free(P);
    3143        1242 :     if (ctx)
    3144        1242 :         BN_CTX_free(ctx);
    3145        1242 :     if (p)
    3146        1242 :         BN_free(p);
    3147        1242 :     if (a)
    3148        1242 :         BN_free(a);
    3149        1242 :     if (b)
    3150        1242 :         BN_free(b);
    3151        1242 :     if (order)
    3152        1242 :         BN_free(order);
    3153        1242 :     if (x)
    3154        1242 :         BN_free(x);
    3155        1242 :     if (y)
    3156        1242 :         BN_free(y);
    3157        1242 :     return group;
    3158             : }
    3159             : 
    3160        1242 : EC_GROUP *EC_GROUP_new_by_curve_name(int nid)
    3161             : {
    3162             :     size_t i;
    3163             :     EC_GROUP *ret = NULL;
    3164             : 
    3165             : #ifdef OPENSSL_FIPS
    3166             :     if (FIPS_mode())
    3167             :         return FIPS_ec_group_new_by_curve_name(nid);
    3168             : #endif
    3169        1242 :     if (nid <= 0)
    3170             :         return NULL;
    3171             : 
    3172       23598 :     for (i = 0; i < curve_list_length; i++)
    3173       24840 :         if (curve_list[i].nid == nid) {
    3174        1242 :             ret = ec_group_new_from_data(curve_list[i]);
    3175        1242 :             break;
    3176             :         }
    3177             : 
    3178        1242 :     if (ret == NULL) {
    3179           0 :         ECerr(EC_F_EC_GROUP_NEW_BY_CURVE_NAME, EC_R_UNKNOWN_GROUP);
    3180           0 :         return NULL;
    3181             :     }
    3182             : 
    3183        1242 :     EC_GROUP_set_curve_name(ret, nid);
    3184             : 
    3185        1242 :     return ret;
    3186             : }
    3187             : 
    3188           0 : size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems)
    3189             : {
    3190             :     size_t i, min;
    3191             : 
    3192           0 :     if (r == NULL || nitems == 0)
    3193             :         return curve_list_length;
    3194             : 
    3195           0 :     min = nitems < curve_list_length ? nitems : curve_list_length;
    3196             : 
    3197           0 :     for (i = 0; i < min; i++) {
    3198           0 :         r[i].nid = curve_list[i].nid;
    3199           0 :         r[i].comment = curve_list[i].comment;
    3200             :     }
    3201             : 
    3202             :     return curve_list_length;
    3203             : }
    3204             : 
    3205             : /* Functions to translate between common NIST curve names and NIDs */
    3206             : 
    3207             : typedef struct {
    3208             :     const char *name;           /* NIST Name of curve */
    3209             :     int nid;                    /* Curve NID */
    3210             : } EC_NIST_NAME;
    3211             : 
    3212             : static EC_NIST_NAME nist_curves[] = {
    3213             :     {"B-163", NID_sect163r2},
    3214             :     {"B-233", NID_sect233r1},
    3215             :     {"B-283", NID_sect283r1},
    3216             :     {"B-409", NID_sect409r1},
    3217             :     {"B-571", NID_sect571r1},
    3218             :     {"K-163", NID_sect163k1},
    3219             :     {"K-233", NID_sect233k1},
    3220             :     {"K-283", NID_sect283k1},
    3221             :     {"K-409", NID_sect409k1},
    3222             :     {"K-571", NID_sect571k1},
    3223             :     {"P-192", NID_X9_62_prime192v1},
    3224             :     {"P-224", NID_secp224r1},
    3225             :     {"P-256", NID_X9_62_prime256v1},
    3226             :     {"P-384", NID_secp384r1},
    3227             :     {"P-521", NID_secp521r1}
    3228             : };
    3229             : 
    3230           0 : const char *EC_curve_nid2nist(int nid)
    3231             : {
    3232             :     size_t i;
    3233           0 :     for (i = 0; i < sizeof(nist_curves) / sizeof(EC_NIST_NAME); i++) {
    3234           0 :         if (nist_curves[i].nid == nid)
    3235           0 :             return nist_curves[i].name;
    3236             :     }
    3237             :     return NULL;
    3238             : }
    3239             : 
    3240           0 : int EC_curve_nist2nid(const char *name)
    3241             : {
    3242             :     size_t i;
    3243           0 :     for (i = 0; i < sizeof(nist_curves) / sizeof(EC_NIST_NAME); i++) {
    3244           0 :         if (!strcmp(nist_curves[i].name, name))
    3245           0 :             return nist_curves[i].nid;
    3246             :     }
    3247             :     return NID_undef;
    3248             : }

Generated by: LCOV version 1.10