2002-02-13 17:22:59 +00:00
/* crypto/ec/ec_curve.c */
2002-08-15 09:21:31 +00:00
/*
* Written by Nils Larsch for the OpenSSL project .
*/
2002-02-13 17:22:59 +00:00
/* ====================================================================
2004-07-06 15:50:04 +00:00
* Copyright ( c ) 1998 - 2004 The OpenSSL Project . All rights reserved .
2002-02-13 17:22:59 +00:00
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
*
* 1. Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in
* the documentation and / or other materials provided with the
* distribution .
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment :
* " This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit . ( http : //www.openssl.org/)"
*
* 4. The names " OpenSSL Toolkit " and " OpenSSL Project " must not be used to
* endorse or promote products derived from this software without
* prior written permission . For written permission , please contact
* openssl - core @ openssl . org .
*
* 5. Products derived from this software may not be called " OpenSSL "
* nor may " OpenSSL " appear in their names without prior written
* permission of the OpenSSL Project .
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment :
* " This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit ( http : //www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ` ` AS IS ' ' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
* SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT
* NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
* LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION )
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT ,
* STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE )
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE .
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
*
* This product includes cryptographic software written by Eric Young
* ( eay @ cryptsoft . com ) . This product includes software written by Tim
* Hudson ( tjh @ cryptsoft . com ) .
*
*/
2002-08-02 13:42:24 +00:00
/* ====================================================================
* Copyright 2002 Sun Microsystems , Inc . ALL RIGHTS RESERVED .
*
* Portions of the attached software ( " Contribution " ) are developed by
* SUN MICROSYSTEMS , INC . , and are contributed to the OpenSSL project .
*
* The Contribution is licensed pursuant to the OpenSSL open source
* license provided above .
*
* The elliptic curve binary polynomial software is originally written by
* Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories .
*
*/
2002-02-13 17:22:59 +00:00
# include "ec_lcl.h"
# include <openssl/err.h>
# include <openssl/obj_mac.h>
2007-08-31 09:36:43 +00:00
typedef struct {
int field_type , /* either NID_X9_62_prime_field or
2002-08-15 09:21:31 +00:00
* NID_X9_62_characteristic_two_field */
2007-08-31 09:36:43 +00:00
seed_len ,
param_len ;
unsigned int cofactor ; /* promoted to BN_ULONG */
2002-08-15 09:21:31 +00:00
} EC_CURVE_DATA ;
2002-03-07 12:14:03 +00:00
/* the nist prime curves */
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 24 * 6 ] ; }
_EC_NIST_PRIME_192 = {
{ NID_X9_62_prime_field , 20 , 24 , 1 } ,
{ 0x30 , 0x45 , 0xAE , 0x6F , 0xC8 , 0x42 , 0x2F , 0x64 , 0xED , 0x57 , /* seed */
0x95 , 0x28 , 0xD3 , 0x81 , 0x20 , 0xEA , 0xE1 , 0x21 , 0x96 , 0xD5 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFC ,
0x64 , 0x21 , 0x05 , 0x19 , 0xE5 , 0x9C , 0x80 , 0xE7 , 0x0F , 0xA7 , /* b */
0xE9 , 0xAB , 0x72 , 0x24 , 0x30 , 0x49 , 0xFE , 0xB8 , 0xDE , 0xEC ,
0xC1 , 0x46 , 0xB9 , 0xB1 ,
0x18 , 0x8D , 0xA8 , 0x0E , 0xB0 , 0x30 , 0x90 , 0xF6 , 0x7C , 0xBF , /* x */
0x20 , 0xEB , 0x43 , 0xA1 , 0x88 , 0x00 , 0xF4 , 0xFF , 0x0A , 0xFD ,
0x82 , 0xFF , 0x10 , 0x12 ,
0x07 , 0x19 , 0x2b , 0x95 , 0xff , 0xc8 , 0xda , 0x78 , 0x63 , 0x10 , /* y */
0x11 , 0xed , 0x6b , 0x24 , 0xcd , 0xd5 , 0x73 , 0xf9 , 0x77 , 0xa1 ,
0x1e , 0x79 , 0x48 , 0x11 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0x99 , 0xDE , 0xF8 , 0x36 , 0x14 , 0x6B , 0xC9 , 0xB1 ,
0xB4 , 0xD2 , 0x28 , 0x31 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 28 * 6 ] ; }
_EC_NIST_PRIME_224 = {
{ NID_X9_62_prime_field , 20 , 28 , 1 } ,
{ 0xBD , 0x71 , 0x34 , 0x47 , 0x99 , 0xD5 , 0xC7 , 0xFC , 0xDC , 0x45 , /* seed */
0xB5 , 0x9F , 0xA3 , 0xB9 , 0xAB , 0x8F , 0x6A , 0x94 , 0x8B , 0xC5 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE ,
0xB4 , 0x05 , 0x0A , 0x85 , 0x0C , 0x04 , 0xB3 , 0xAB , 0xF5 , 0x41 , /* b */
0x32 , 0x56 , 0x50 , 0x44 , 0xB0 , 0xB7 , 0xD7 , 0xBF , 0xD8 , 0xBA ,
0x27 , 0x0B , 0x39 , 0x43 , 0x23 , 0x55 , 0xFF , 0xB4 ,
0xB7 , 0x0E , 0x0C , 0xBD , 0x6B , 0xB4 , 0xBF , 0x7F , 0x32 , 0x13 , /* x */
0x90 , 0xB9 , 0x4A , 0x03 , 0xC1 , 0xD3 , 0x56 , 0xC2 , 0x11 , 0x22 ,
0x34 , 0x32 , 0x80 , 0xD6 , 0x11 , 0x5C , 0x1D , 0x21 ,
0xbd , 0x37 , 0x63 , 0x88 , 0xb5 , 0xf7 , 0x23 , 0xfb , 0x4c , 0x22 , /* y */
0xdf , 0xe6 , 0xcd , 0x43 , 0x75 , 0xa0 , 0x5a , 0x07 , 0x47 , 0x64 ,
0x44 , 0xd5 , 0x81 , 0x99 , 0x85 , 0x00 , 0x7e , 0x34 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0x16 , 0xA2 , 0xE0 , 0xB8 , 0xF0 , 0x3E ,
0x13 , 0xDD , 0x29 , 0x45 , 0x5C , 0x5C , 0x2A , 0x3D }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 48 * 6 ] ; }
_EC_NIST_PRIME_384 = {
{ NID_X9_62_prime_field , 20 , 48 , 1 } ,
{ 0xA3 , 0x35 , 0x92 , 0x6A , 0xA3 , 0x19 , 0xA2 , 0x7A , 0x1D , 0x00 , /* seed */
0x89 , 0x6A , 0x67 , 0x73 , 0xA4 , 0x82 , 0x7A , 0xCD , 0xAC , 0x73 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFC ,
0xB3 , 0x31 , 0x2F , 0xA7 , 0xE2 , 0x3E , 0xE7 , 0xE4 , 0x98 , 0x8E , /* b */
0x05 , 0x6B , 0xE3 , 0xF8 , 0x2D , 0x19 , 0x18 , 0x1D , 0x9C , 0x6E ,
0xFE , 0x81 , 0x41 , 0x12 , 0x03 , 0x14 , 0x08 , 0x8F , 0x50 , 0x13 ,
0x87 , 0x5A , 0xC6 , 0x56 , 0x39 , 0x8D , 0x8A , 0x2E , 0xD1 , 0x9D ,
0x2A , 0x85 , 0xC8 , 0xED , 0xD3 , 0xEC , 0x2A , 0xEF ,
0xAA , 0x87 , 0xCA , 0x22 , 0xBE , 0x8B , 0x05 , 0x37 , 0x8E , 0xB1 , /* x */
0xC7 , 0x1E , 0xF3 , 0x20 , 0xAD , 0x74 , 0x6E , 0x1D , 0x3B , 0x62 ,
0x8B , 0xA7 , 0x9B , 0x98 , 0x59 , 0xF7 , 0x41 , 0xE0 , 0x82 , 0x54 ,
0x2A , 0x38 , 0x55 , 0x02 , 0xF2 , 0x5D , 0xBF , 0x55 , 0x29 , 0x6C ,
0x3A , 0x54 , 0x5E , 0x38 , 0x72 , 0x76 , 0x0A , 0xB7 ,
0x36 , 0x17 , 0xde , 0x4a , 0x96 , 0x26 , 0x2c , 0x6f , 0x5d , 0x9e , /* y */
0x98 , 0xbf , 0x92 , 0x92 , 0xdc , 0x29 , 0xf8 , 0xf4 , 0x1d , 0xbd ,
0x28 , 0x9a , 0x14 , 0x7c , 0xe9 , 0xda , 0x31 , 0x13 , 0xb5 , 0xf0 ,
0xb8 , 0xc0 , 0x0a , 0x60 , 0xb1 , 0xce , 0x1d , 0x7e , 0x81 , 0x9d ,
0x7a , 0x43 , 0x1d , 0x7c , 0x90 , 0xea , 0x0e , 0x5f ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xC7 , 0x63 , 0x4D , 0x81 , 0xF4 , 0x37 ,
0x2D , 0xDF , 0x58 , 0x1A , 0x0D , 0xB2 , 0x48 , 0xB0 , 0xA7 , 0x7A ,
0xEC , 0xEC , 0x19 , 0x6A , 0xCC , 0xC5 , 0x29 , 0x73 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 66 * 6 ] ; }
_EC_NIST_PRIME_521 = {
{ NID_X9_62_prime_field , 20 , 66 , 1 } ,
{ 0xD0 , 0x9E , 0x88 , 0x00 , 0x29 , 0x1C , 0xB8 , 0x53 , 0x96 , 0xCC , /* seed */
0x67 , 0x17 , 0x39 , 0x32 , 0x84 , 0xAA , 0xA0 , 0xDA , 0x64 , 0xBA ,
0x01 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0x01 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFC ,
0x00 , 0x51 , 0x95 , 0x3E , 0xB9 , 0x61 , 0x8E , 0x1C , 0x9A , 0x1F , /* b */
0x92 , 0x9A , 0x21 , 0xA0 , 0xB6 , 0x85 , 0x40 , 0xEE , 0xA2 , 0xDA ,
0x72 , 0x5B , 0x99 , 0xB3 , 0x15 , 0xF3 , 0xB8 , 0xB4 , 0x89 , 0x91 ,
0x8E , 0xF1 , 0x09 , 0xE1 , 0x56 , 0x19 , 0x39 , 0x51 , 0xEC , 0x7E ,
0x93 , 0x7B , 0x16 , 0x52 , 0xC0 , 0xBD , 0x3B , 0xB1 , 0xBF , 0x07 ,
0x35 , 0x73 , 0xDF , 0x88 , 0x3D , 0x2C , 0x34 , 0xF1 , 0xEF , 0x45 ,
0x1F , 0xD4 , 0x6B , 0x50 , 0x3F , 0x00 ,
0x00 , 0xC6 , 0x85 , 0x8E , 0x06 , 0xB7 , 0x04 , 0x04 , 0xE9 , 0xCD , /* x */
0x9E , 0x3E , 0xCB , 0x66 , 0x23 , 0x95 , 0xB4 , 0x42 , 0x9C , 0x64 ,
0x81 , 0x39 , 0x05 , 0x3F , 0xB5 , 0x21 , 0xF8 , 0x28 , 0xAF , 0x60 ,
0x6B , 0x4D , 0x3D , 0xBA , 0xA1 , 0x4B , 0x5E , 0x77 , 0xEF , 0xE7 ,
0x59 , 0x28 , 0xFE , 0x1D , 0xC1 , 0x27 , 0xA2 , 0xFF , 0xA8 , 0xDE ,
0x33 , 0x48 , 0xB3 , 0xC1 , 0x85 , 0x6A , 0x42 , 0x9B , 0xF9 , 0x7E ,
0x7E , 0x31 , 0xC2 , 0xE5 , 0xBD , 0x66 ,
0x01 , 0x18 , 0x39 , 0x29 , 0x6a , 0x78 , 0x9a , 0x3b , 0xc0 , 0x04 , /* y */
0x5c , 0x8a , 0x5f , 0xb4 , 0x2c , 0x7d , 0x1b , 0xd9 , 0x98 , 0xf5 ,
0x44 , 0x49 , 0x57 , 0x9b , 0x44 , 0x68 , 0x17 , 0xaf , 0xbd , 0x17 ,
0x27 , 0x3e , 0x66 , 0x2c , 0x97 , 0xee , 0x72 , 0x99 , 0x5e , 0xf4 ,
0x26 , 0x40 , 0xc5 , 0x50 , 0xb9 , 0x01 , 0x3f , 0xad , 0x07 , 0x61 ,
0x35 , 0x3c , 0x70 , 0x86 , 0xa2 , 0x72 , 0xc2 , 0x40 , 0x88 , 0xbe ,
0x94 , 0x76 , 0x9f , 0xd1 , 0x66 , 0x50 ,
0x01 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFA , 0x51 , 0x86 , 0x87 , 0x83 , 0xBF , 0x2F ,
0x96 , 0x6B , 0x7F , 0xCC , 0x01 , 0x48 , 0xF7 , 0x09 , 0xA5 , 0xD0 ,
0x3B , 0xB5 , 0xC9 , 0xB8 , 0x89 , 0x9C , 0x47 , 0xAE , 0xBB , 0x6F ,
0xB7 , 0x1E , 0x91 , 0x38 , 0x64 , 0x09 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
2002-03-07 12:21:31 +00:00
/* the x9.62 prime curves (minus the nist prime curves) */
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 24 * 6 ] ; }
_EC_X9_62_PRIME_192V2 = {
{ NID_X9_62_prime_field , 20 , 24 , 1 } ,
{ 0x31 , 0xA9 , 0x2E , 0xE2 , 0x02 , 0x9F , 0xD1 , 0x0D , 0x90 , 0x1B , /* seed */
0x11 , 0x3E , 0x99 , 0x07 , 0x10 , 0xF0 , 0xD2 , 0x1A , 0xC6 , 0xB6 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFC ,
0xCC , 0x22 , 0xD6 , 0xDF , 0xB9 , 0x5C , 0x6B , 0x25 , 0xE4 , 0x9C , /* b */
0x0D , 0x63 , 0x64 , 0xA4 , 0xE5 , 0x98 , 0x0C , 0x39 , 0x3A , 0xA2 ,
0x16 , 0x68 , 0xD9 , 0x53 ,
0xEE , 0xA2 , 0xBA , 0xE7 , 0xE1 , 0x49 , 0x78 , 0x42 , 0xF2 , 0xDE , /* x */
0x77 , 0x69 , 0xCF , 0xE9 , 0xC9 , 0x89 , 0xC0 , 0x72 , 0xAD , 0x69 ,
0x6F , 0x48 , 0x03 , 0x4A ,
0x65 , 0x74 , 0xd1 , 0x1d , 0x69 , 0xb6 , 0xec , 0x7a , 0x67 , 0x2b , /* y */
0xb8 , 0x2a , 0x08 , 0x3d , 0xf2 , 0xf2 , 0xb0 , 0x84 , 0x7d , 0xe9 ,
0x70 , 0xb2 , 0xde , 0x15 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFE , 0x5F , 0xB1 , 0xA7 , 0x24 , 0xDC , 0x80 , 0x41 , 0x86 ,
0x48 , 0xD8 , 0xDD , 0x31 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 24 * 6 ] ; }
_EC_X9_62_PRIME_192V3 = {
{ NID_X9_62_prime_field , 20 , 24 , 1 } ,
{ 0xC4 , 0x69 , 0x68 , 0x44 , 0x35 , 0xDE , 0xB3 , 0x78 , 0xC4 , 0xB6 , /* seed */
0x5C , 0xA9 , 0x59 , 0x1E , 0x2A , 0x57 , 0x63 , 0x05 , 0x9A , 0x2E ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFC ,
0x22 , 0x12 , 0x3D , 0xC2 , 0x39 , 0x5A , 0x05 , 0xCA , 0xA7 , 0x42 , /* b */
0x3D , 0xAE , 0xCC , 0xC9 , 0x47 , 0x60 , 0xA7 , 0xD4 , 0x62 , 0x25 ,
0x6B , 0xD5 , 0x69 , 0x16 ,
0x7D , 0x29 , 0x77 , 0x81 , 0x00 , 0xC6 , 0x5A , 0x1D , 0xA1 , 0x78 , /* x */
0x37 , 0x16 , 0x58 , 0x8D , 0xCE , 0x2B , 0x8B , 0x4A , 0xEE , 0x8E ,
0x22 , 0x8F , 0x18 , 0x96 ,
0x38 , 0xa9 , 0x0f , 0x22 , 0x63 , 0x73 , 0x37 , 0x33 , 0x4b , 0x49 , /* y */
0xdc , 0xb6 , 0x6a , 0x6d , 0xc8 , 0xf9 , 0x97 , 0x8a , 0xca , 0x76 ,
0x48 , 0xa9 , 0x43 , 0xb0 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0x7A , 0x62 , 0xD0 , 0x31 , 0xC8 , 0x3F , 0x42 , 0x94 ,
0xF6 , 0x40 , 0xEC , 0x13 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 30 * 6 ] ; }
_EC_X9_62_PRIME_239V1 = {
{ NID_X9_62_prime_field , 20 , 30 , 1 } ,
{ 0xE4 , 0x3B , 0xB4 , 0x60 , 0xF0 , 0xB8 , 0x0C , 0xC0 , 0xC0 , 0xB0 , /* seed */
0x75 , 0x79 , 0x8E , 0x94 , 0x80 , 0x60 , 0xF8 , 0x32 , 0x1B , 0x7D ,
0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x80 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x80 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFC ,
0x6B , 0x01 , 0x6C , 0x3B , 0xDC , 0xF1 , 0x89 , 0x41 , 0xD0 , 0xD6 , /* b */
0x54 , 0x92 , 0x14 , 0x75 , 0xCA , 0x71 , 0xA9 , 0xDB , 0x2F , 0xB2 ,
0x7D , 0x1D , 0x37 , 0x79 , 0x61 , 0x85 , 0xC2 , 0x94 , 0x2C , 0x0A ,
0x0F , 0xFA , 0x96 , 0x3C , 0xDC , 0xA8 , 0x81 , 0x6C , 0xCC , 0x33 , /* x */
0xB8 , 0x64 , 0x2B , 0xED , 0xF9 , 0x05 , 0xC3 , 0xD3 , 0x58 , 0x57 ,
0x3D , 0x3F , 0x27 , 0xFB , 0xBD , 0x3B , 0x3C , 0xB9 , 0xAA , 0xAF ,
0x7d , 0xeb , 0xe8 , 0xe4 , 0xe9 , 0x0a , 0x5d , 0xae , 0x6e , 0x40 , /* y */
0x54 , 0xca , 0x53 , 0x0b , 0xa0 , 0x46 , 0x54 , 0xb3 , 0x68 , 0x18 ,
0xce , 0x22 , 0x6b , 0x39 , 0xfc , 0xcb , 0x7b , 0x02 , 0xf1 , 0xae ,
0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0x7F , 0xFF , 0xFF , 0x9E , 0x5E , 0x9A , 0x9F , 0x5D ,
0x90 , 0x71 , 0xFB , 0xD1 , 0x52 , 0x26 , 0x88 , 0x90 , 0x9D , 0x0B }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 30 * 6 ] ; }
_EC_X9_62_PRIME_239V2 = {
{ NID_X9_62_prime_field , 20 , 30 , 1 } ,
{ 0xE8 , 0xB4 , 0x01 , 0x16 , 0x04 , 0x09 , 0x53 , 0x03 , 0xCA , 0x3B , /* seed */
0x80 , 0x99 , 0x98 , 0x2B , 0xE0 , 0x9F , 0xCB , 0x9A , 0xE6 , 0x16 ,
0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x80 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x80 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFC ,
0x61 , 0x7F , 0xAB , 0x68 , 0x32 , 0x57 , 0x6C , 0xBB , 0xFE , 0xD5 , /* b */
0x0D , 0x99 , 0xF0 , 0x24 , 0x9C , 0x3F , 0xEE , 0x58 , 0xB9 , 0x4B ,
0xA0 , 0x03 , 0x8C , 0x7A , 0xE8 , 0x4C , 0x8C , 0x83 , 0x2F , 0x2C ,
0x38 , 0xAF , 0x09 , 0xD9 , 0x87 , 0x27 , 0x70 , 0x51 , 0x20 , 0xC9 , /* x */
0x21 , 0xBB , 0x5E , 0x9E , 0x26 , 0x29 , 0x6A , 0x3C , 0xDC , 0xF2 ,
0xF3 , 0x57 , 0x57 , 0xA0 , 0xEA , 0xFD , 0x87 , 0xB8 , 0x30 , 0xE7 ,
0x5b , 0x01 , 0x25 , 0xe4 , 0xdb , 0xea , 0x0e , 0xc7 , 0x20 , 0x6d , /* y */
0xa0 , 0xfc , 0x01 , 0xd9 , 0xb0 , 0x81 , 0x32 , 0x9f , 0xb5 , 0x55 ,
0xde , 0x6e , 0xf4 , 0x60 , 0x23 , 0x7d , 0xff , 0x8b , 0xe4 , 0xba ,
0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0x80 , 0x00 , 0x00 , 0xCF , 0xA7 , 0xE8 , 0x59 , 0x43 ,
0x77 , 0xD4 , 0x14 , 0xC0 , 0x38 , 0x21 , 0xBC , 0x58 , 0x20 , 0x63 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 30 * 6 ] ; }
_EC_X9_62_PRIME_239V3 = {
{ NID_X9_62_prime_field , 20 , 30 , 1 } ,
{ 0x7D , 0x73 , 0x74 , 0x16 , 0x8F , 0xFE , 0x34 , 0x71 , 0xB6 , 0x0A , /* seed */
0x85 , 0x76 , 0x86 , 0xA1 , 0x94 , 0x75 , 0xD3 , 0xBF , 0xA2 , 0xFF ,
0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x80 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x80 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFC ,
0x25 , 0x57 , 0x05 , 0xFA , 0x2A , 0x30 , 0x66 , 0x54 , 0xB1 , 0xF4 , /* b */
0xCB , 0x03 , 0xD6 , 0xA7 , 0x50 , 0xA3 , 0x0C , 0x25 , 0x01 , 0x02 ,
0xD4 , 0x98 , 0x87 , 0x17 , 0xD9 , 0xBA , 0x15 , 0xAB , 0x6D , 0x3E ,
0x67 , 0x68 , 0xAE , 0x8E , 0x18 , 0xBB , 0x92 , 0xCF , 0xCF , 0x00 , /* x */
0x5C , 0x94 , 0x9A , 0xA2 , 0xC6 , 0xD9 , 0x48 , 0x53 , 0xD0 , 0xE6 ,
0x60 , 0xBB , 0xF8 , 0x54 , 0xB1 , 0xC9 , 0x50 , 0x5F , 0xE9 , 0x5A ,
0x16 , 0x07 , 0xe6 , 0x89 , 0x8f , 0x39 , 0x0c , 0x06 , 0xbc , 0x1d , /* y */
0x55 , 0x2b , 0xad , 0x22 , 0x6f , 0x3b , 0x6f , 0xcf , 0xe4 , 0x8b ,
0x6e , 0x81 , 0x84 , 0x99 , 0xaf , 0x18 , 0xe3 , 0xed , 0x6c , 0xf3 ,
0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0x7F , 0xFF , 0xFF , 0x97 , 0x5D , 0xEB , 0x41 , 0xB3 ,
0xA6 , 0x05 , 0x7C , 0x3C , 0x43 , 0x21 , 0x46 , 0x52 , 0x65 , 0x51 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 32 * 6 ] ; }
_EC_X9_62_PRIME_256V1 = {
{ NID_X9_62_prime_field , 20 , 32 , 1 } ,
{ 0xC4 , 0x9D , 0x36 , 0x08 , 0x86 , 0xE7 , 0x04 , 0x93 , 0x6A , 0x66 , /* seed */
0x78 , 0xE1 , 0x13 , 0x9D , 0x26 , 0xB7 , 0x81 , 0x9F , 0x7E , 0x90 ,
0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFC ,
0x5A , 0xC6 , 0x35 , 0xD8 , 0xAA , 0x3A , 0x93 , 0xE7 , 0xB3 , 0xEB , /* b */
0xBD , 0x55 , 0x76 , 0x98 , 0x86 , 0xBC , 0x65 , 0x1D , 0x06 , 0xB0 ,
0xCC , 0x53 , 0xB0 , 0xF6 , 0x3B , 0xCE , 0x3C , 0x3E , 0x27 , 0xD2 ,
0x60 , 0x4B ,
0x6B , 0x17 , 0xD1 , 0xF2 , 0xE1 , 0x2C , 0x42 , 0x47 , 0xF8 , 0xBC , /* x */
0xE6 , 0xE5 , 0x63 , 0xA4 , 0x40 , 0xF2 , 0x77 , 0x03 , 0x7D , 0x81 ,
0x2D , 0xEB , 0x33 , 0xA0 , 0xF4 , 0xA1 , 0x39 , 0x45 , 0xD8 , 0x98 ,
0xC2 , 0x96 ,
0x4f , 0xe3 , 0x42 , 0xe2 , 0xfe , 0x1a , 0x7f , 0x9b , 0x8e , 0xe7 , /* y */
0xeb , 0x4a , 0x7c , 0x0f , 0x9e , 0x16 , 0x2b , 0xce , 0x33 , 0x57 ,
0x6b , 0x31 , 0x5e , 0xce , 0xcb , 0xb6 , 0x40 , 0x68 , 0x37 , 0xbf ,
0x51 , 0xf5 ,
0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xBC , 0xE6 , 0xFA , 0xAD ,
0xA7 , 0x17 , 0x9E , 0x84 , 0xF3 , 0xB9 , 0xCA , 0xC2 , 0xFC , 0x63 ,
0x25 , 0x51 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
2002-03-07 12:21:31 +00:00
/* the secg prime curves (minus the nist and x9.62 prime curves) */
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 14 * 6 ] ; }
_EC_SECG_PRIME_112R1 = {
{ NID_X9_62_prime_field , 20 , 14 , 1 } ,
{ 0x00 , 0xF5 , 0x0B , 0x02 , 0x8E , 0x4D , 0x69 , 0x6E , 0x67 , 0x68 , /* seed */
0x75 , 0x61 , 0x51 , 0x75 , 0x29 , 0x04 , 0x72 , 0x78 , 0x3F , 0xB1 ,
0xDB , 0x7C , 0x2A , 0xBF , 0x62 , 0xE3 , 0x5E , 0x66 , 0x80 , 0x76 , /* p */
0xBE , 0xAD , 0x20 , 0x8B ,
0xDB , 0x7C , 0x2A , 0xBF , 0x62 , 0xE3 , 0x5E , 0x66 , 0x80 , 0x76 , /* a */
0xBE , 0xAD , 0x20 , 0x88 ,
0x65 , 0x9E , 0xF8 , 0xBA , 0x04 , 0x39 , 0x16 , 0xEE , 0xDE , 0x89 , /* b */
0x11 , 0x70 , 0x2B , 0x22 ,
0x09 , 0x48 , 0x72 , 0x39 , 0x99 , 0x5A , 0x5E , 0xE7 , 0x6B , 0x55 , /* x */
0xF9 , 0xC2 , 0xF0 , 0x98 ,
0xa8 , 0x9c , 0xe5 , 0xaf , 0x87 , 0x24 , 0xc0 , 0xa2 , 0x3e , 0x0e , /* y */
0x0f , 0xf7 , 0x75 , 0x00 ,
0xDB , 0x7C , 0x2A , 0xBF , 0x62 , 0xE3 , 0x5E , 0x76 , 0x28 , 0xDF , /* order */
0xAC , 0x65 , 0x61 , 0xC5 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 14 * 6 ] ; }
_EC_SECG_PRIME_112R2 = {
{ NID_X9_62_prime_field , 20 , 14 , 4 } ,
{ 0x00 , 0x27 , 0x57 , 0xA1 , 0x11 , 0x4D , 0x69 , 0x6E , 0x67 , 0x68 , /* seed */
0x75 , 0x61 , 0x51 , 0x75 , 0x53 , 0x16 , 0xC0 , 0x5E , 0x0B , 0xD4 ,
0xDB , 0x7C , 0x2A , 0xBF , 0x62 , 0xE3 , 0x5E , 0x66 , 0x80 , 0x76 , /* p */
0xBE , 0xAD , 0x20 , 0x8B ,
0x61 , 0x27 , 0xC2 , 0x4C , 0x05 , 0xF3 , 0x8A , 0x0A , 0xAA , 0xF6 , /* a */
0x5C , 0x0E , 0xF0 , 0x2C ,
0x51 , 0xDE , 0xF1 , 0x81 , 0x5D , 0xB5 , 0xED , 0x74 , 0xFC , 0xC3 , /* b */
0x4C , 0x85 , 0xD7 , 0x09 ,
0x4B , 0xA3 , 0x0A , 0xB5 , 0xE8 , 0x92 , 0xB4 , 0xE1 , 0x64 , 0x9D , /* x */
0xD0 , 0x92 , 0x86 , 0x43 ,
0xad , 0xcd , 0x46 , 0xf5 , 0x88 , 0x2e , 0x37 , 0x47 , 0xde , 0xf3 , /* y */
0x6e , 0x95 , 0x6e , 0x97 ,
0x36 , 0xDF , 0x0A , 0xAF , 0xD8 , 0xB8 , 0xD7 , 0x59 , 0x7C , 0xA1 , /* order */
0x05 , 0x20 , 0xD0 , 0x4B }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 16 * 6 ] ; }
_EC_SECG_PRIME_128R1 = {
{ NID_X9_62_prime_field , 20 , 16 , 1 } ,
{ 0x00 , 0x0E , 0x0D , 0x4D , 0x69 , 0x6E , 0x67 , 0x68 , 0x75 , 0x61 , /* seed */
0x51 , 0x75 , 0x0C , 0xC0 , 0x3A , 0x44 , 0x73 , 0xD0 , 0x36 , 0x79 ,
0xFF , 0xFF , 0xFF , 0xFD , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFD , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFC ,
0xE8 , 0x75 , 0x79 , 0xC1 , 0x10 , 0x79 , 0xF4 , 0x3D , 0xD8 , 0x24 , /* b */
0x99 , 0x3C , 0x2C , 0xEE , 0x5E , 0xD3 ,
0x16 , 0x1F , 0xF7 , 0x52 , 0x8B , 0x89 , 0x9B , 0x2D , 0x0C , 0x28 , /* x */
0x60 , 0x7C , 0xA5 , 0x2C , 0x5B , 0x86 ,
0xcf , 0x5a , 0xc8 , 0x39 , 0x5b , 0xaf , 0xeb , 0x13 , 0xc0 , 0x2d , /* y */
0xa2 , 0x92 , 0xdd , 0xed , 0x7a , 0x83 ,
0xFF , 0xFF , 0xFF , 0xFE , 0x00 , 0x00 , 0x00 , 0x00 , 0x75 , 0xA3 , /* order */
0x0D , 0x1B , 0x90 , 0x38 , 0xA1 , 0x15 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 16 * 6 ] ; }
_EC_SECG_PRIME_128R2 = {
{ NID_X9_62_prime_field , 20 , 16 , 4 } ,
{ 0x00 , 0x4D , 0x69 , 0x6E , 0x67 , 0x68 , 0x75 , 0x61 , 0x51 , 0x75 , /* seed */
0x12 , 0xD8 , 0xF0 , 0x34 , 0x31 , 0xFC , 0xE6 , 0x3B , 0x88 , 0xF4 ,
0xFF , 0xFF , 0xFF , 0xFD , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xD6 , 0x03 , 0x19 , 0x98 , 0xD1 , 0xB3 , 0xBB , 0xFE , 0xBF , 0x59 , /* a */
0xCC , 0x9B , 0xBF , 0xF9 , 0xAE , 0xE1 ,
0x5E , 0xEE , 0xFC , 0xA3 , 0x80 , 0xD0 , 0x29 , 0x19 , 0xDC , 0x2C , /* b */
0x65 , 0x58 , 0xBB , 0x6D , 0x8A , 0x5D ,
0x7B , 0x6A , 0xA5 , 0xD8 , 0x5E , 0x57 , 0x29 , 0x83 , 0xE6 , 0xFB , /* x */
0x32 , 0xA7 , 0xCD , 0xEB , 0xC1 , 0x40 ,
0x27 , 0xb6 , 0x91 , 0x6a , 0x89 , 0x4d , 0x3a , 0xee , 0x71 , 0x06 , /* y */
0xfe , 0x80 , 0x5f , 0xc3 , 0x4b , 0x44 ,
0x3F , 0xFF , 0xFF , 0xFF , 0x7F , 0xFF , 0xFF , 0xFF , 0xBE , 0x00 , /* order */
0x24 , 0x72 , 0x06 , 0x13 , 0xB5 , 0xA3 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 21 * 6 ] ; }
_EC_SECG_PRIME_160K1 = {
{ NID_X9_62_prime_field , 0 , 21 , 1 } ,
{ /* no seed */
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xAC ,
0x73 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x07 ,
0x00 , 0x3B , 0x4C , 0x38 , 0x2C , 0xE3 , 0x7A , 0xA1 , 0x92 , 0xA4 , /* x */
0x01 , 0x9E , 0x76 , 0x30 , 0x36 , 0xF4 , 0xF5 , 0xDD , 0x4D , 0x7E ,
0xBB ,
0x00 , 0x93 , 0x8c , 0xf9 , 0x35 , 0x31 , 0x8f , 0xdc , 0xed , 0x6b , /* y */
0xc2 , 0x82 , 0x86 , 0x53 , 0x17 , 0x33 , 0xc3 , 0xf0 , 0x3c , 0x4f ,
0xee ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x01 , 0xB8 , 0xFA , 0x16 , 0xDF , 0xAB , 0x9A , 0xCA , 0x16 , 0xB6 ,
0xB3 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 21 * 6 ] ; }
_EC_SECG_PRIME_160R1 = {
{ NID_X9_62_prime_field , 20 , 21 , 1 } ,
{ 0x10 , 0x53 , 0xCD , 0xE4 , 0x2C , 0x14 , 0xD6 , 0x96 , 0xE6 , 0x76 , /* seed */
0x87 , 0x56 , 0x15 , 0x17 , 0x53 , 0x3B , 0xF3 , 0xF8 , 0x33 , 0x45 ,
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x7F , 0xFF , 0xFF ,
0xFF ,
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x7F , 0xFF , 0xFF ,
0xFC ,
0x00 , 0x1C , 0x97 , 0xBE , 0xFC , 0x54 , 0xBD , 0x7A , 0x8B , 0x65 , /* b */
0xAC , 0xF8 , 0x9F , 0x81 , 0xD4 , 0xD4 , 0xAD , 0xC5 , 0x65 , 0xFA ,
0x45 ,
0x00 , 0x4A , 0x96 , 0xB5 , 0x68 , 0x8E , 0xF5 , 0x73 , 0x28 , 0x46 , /* x */
0x64 , 0x69 , 0x89 , 0x68 , 0xC3 , 0x8B , 0xB9 , 0x13 , 0xCB , 0xFC ,
0x82 ,
0x00 , 0x23 , 0xa6 , 0x28 , 0x55 , 0x31 , 0x68 , 0x94 , 0x7d , 0x59 , /* y */
0xdc , 0xc9 , 0x12 , 0x04 , 0x23 , 0x51 , 0x37 , 0x7a , 0xc5 , 0xfb ,
0x32 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x01 , 0xF4 , 0xC8 , 0xF9 , 0x27 , 0xAE , 0xD3 , 0xCA , 0x75 , 0x22 ,
0x57 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 21 * 6 ] ; }
_EC_SECG_PRIME_160R2 = {
{ NID_X9_62_prime_field , 20 , 21 , 1 } ,
{ 0xB9 , 0x9B , 0x99 , 0xB0 , 0x99 , 0xB3 , 0x23 , 0xE0 , 0x27 , 0x09 , /* seed */
0xA4 , 0xD6 , 0x96 , 0xE6 , 0x76 , 0x87 , 0x56 , 0x15 , 0x17 , 0x51 ,
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xAC ,
0x73 ,
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xAC ,
0x70 ,
0x00 , 0xB4 , 0xE1 , 0x34 , 0xD3 , 0xFB , 0x59 , 0xEB , 0x8B , 0xAB , /* b */
0x57 , 0x27 , 0x49 , 0x04 , 0x66 , 0x4D , 0x5A , 0xF5 , 0x03 , 0x88 ,
0xBA ,
0x00 , 0x52 , 0xDC , 0xB0 , 0x34 , 0x29 , 0x3A , 0x11 , 0x7E , 0x1F , /* x */
0x4F , 0xF1 , 0x1B , 0x30 , 0xF7 , 0x19 , 0x9D , 0x31 , 0x44 , 0xCE ,
0x6D ,
0x00 , 0xfe , 0xaf , 0xfe , 0xf2 , 0xe3 , 0x31 , 0xf2 , 0x96 , 0xe0 , /* y */
0x71 , 0xfa , 0x0d , 0xf9 , 0x98 , 0x2c , 0xfe , 0xa7 , 0xd4 , 0x3f ,
0x2e ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x35 , 0x1E , 0xE7 , 0x86 , 0xA8 , 0x18 , 0xF3 , 0xA1 , 0xA1 ,
0x6B }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 24 * 6 ] ; }
_EC_SECG_PRIME_192K1 = {
{ NID_X9_62_prime_field , 0 , 24 , 1 } ,
{ /* no seed */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE ,
0xFF , 0xFF , 0xEE , 0x37 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x03 ,
0xDB , 0x4F , 0xF1 , 0x0E , 0xC0 , 0x57 , 0xE9 , 0xAE , 0x26 , 0xB0 , /* x */
0x7D , 0x02 , 0x80 , 0xB7 , 0xF4 , 0x34 , 0x1D , 0xA5 , 0xD1 , 0xB1 ,
0xEA , 0xE0 , 0x6C , 0x7D ,
0x9b , 0x2f , 0x2f , 0x6d , 0x9c , 0x56 , 0x28 , 0xa7 , 0x84 , 0x41 , /* y */
0x63 , 0xd0 , 0x15 , 0xbe , 0x86 , 0x34 , 0x40 , 0x82 , 0xaa , 0x88 ,
0xd9 , 0x5e , 0x2f , 0x9d ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFE , 0x26 , 0xF2 , 0xFC , 0x17 , 0x0F , 0x69 , 0x46 , 0x6A ,
0x74 , 0xDE , 0xFD , 0x8D }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 29 * 6 ] ; }
_EC_SECG_PRIME_224K1 = {
{ NID_X9_62_prime_field , 0 , 29 , 1 } ,
{ /* no seed */
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xE5 , 0x6D ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x05 ,
0x00 , 0xA1 , 0x45 , 0x5B , 0x33 , 0x4D , 0xF0 , 0x99 , 0xDF , 0x30 , /* x */
0xFC , 0x28 , 0xA1 , 0x69 , 0xA4 , 0x67 , 0xE9 , 0xE4 , 0x70 , 0x75 ,
0xA9 , 0x0F , 0x7E , 0x65 , 0x0E , 0xB6 , 0xB7 , 0xA4 , 0x5C ,
0x00 , 0x7e , 0x08 , 0x9f , 0xed , 0x7f , 0xba , 0x34 , 0x42 , 0x82 , /* y */
0xca , 0xfb , 0xd6 , 0xf7 , 0xe3 , 0x19 , 0xf7 , 0xc0 , 0xb0 , 0xbd ,
0x59 , 0xe2 , 0xca , 0x4b , 0xdb , 0x55 , 0x6d , 0x61 , 0xa5 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0xDC , 0xE8 , 0xD2 , 0xEC , 0x61 ,
0x84 , 0xCA , 0xF0 , 0xA9 , 0x71 , 0x76 , 0x9F , 0xB1 , 0xF7 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 32 * 6 ] ; }
_EC_SECG_PRIME_256K1 = {
{ NID_X9_62_prime_field , 0 , 32 , 1 } ,
{ /* no seed */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF ,
0xFC , 0x2F ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x07 ,
0x79 , 0xBE , 0x66 , 0x7E , 0xF9 , 0xDC , 0xBB , 0xAC , 0x55 , 0xA0 , /* x */
0x62 , 0x95 , 0xCE , 0x87 , 0x0B , 0x07 , 0x02 , 0x9B , 0xFC , 0xDB ,
0x2D , 0xCE , 0x28 , 0xD9 , 0x59 , 0xF2 , 0x81 , 0x5B , 0x16 , 0xF8 ,
0x17 , 0x98 ,
0x48 , 0x3a , 0xda , 0x77 , 0x26 , 0xa3 , 0xc4 , 0x65 , 0x5d , 0xa4 , /* y */
0xfb , 0xfc , 0x0e , 0x11 , 0x08 , 0xa8 , 0xfd , 0x17 , 0xb4 , 0x48 ,
0xa6 , 0x85 , 0x54 , 0x19 , 0x9c , 0x47 , 0xd0 , 0x8f , 0xfb , 0x10 ,
0xd4 , 0xb8 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xBA , 0xAE , 0xDC , 0xE6 ,
0xAF , 0x48 , 0xA0 , 0x3B , 0xBF , 0xD2 , 0x5E , 0x8C , 0xD0 , 0x36 ,
0x41 , 0x41 }
2002-08-15 09:21:31 +00:00
} ;
2002-03-18 13:10:45 +00:00
/* some wap/wtls curves */
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 15 * 6 ] ; }
_EC_WTLS_8 = {
{ NID_X9_62_prime_field , 0 , 15 , 1 } ,
{ /* no seed */
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFD , 0xE7 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x03 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* x */
0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* y */
0x00 , 0x00 , 0x00 , 0x00 , 0x02 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0xEC , 0xEA , /* order */
0x55 , 0x1A , 0xD8 , 0x37 , 0xE9 }
2002-08-15 09:21:31 +00:00
} ;
2002-02-13 17:22:59 +00:00
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 21 * 6 ] ; }
_EC_WTLS_9 = {
{ NID_X9_62_prime_field , 0 , 21 , 1 } ,
{ /* no seed */
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFC , 0x80 ,
0x8F ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x03 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* x */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* y */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x02 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x01 , 0xCD , 0xC9 , 0x8A , 0xE0 , 0xE2 , 0xDE , 0x57 , 0x4A , 0xBF ,
0x33 }
2002-08-15 09:21:31 +00:00
} ;
2002-02-13 17:22:59 +00:00
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 28 * 6 ] ; }
_EC_WTLS_12 = {
{ NID_X9_62_prime_field , 0 , 28 , 1 } ,
{ /* no seed */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* p */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* a */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE ,
0xB4 , 0x05 , 0x0A , 0x85 , 0x0C , 0x04 , 0xB3 , 0xAB , 0xF5 , 0x41 , /* b */
0x32 , 0x56 , 0x50 , 0x44 , 0xB0 , 0xB7 , 0xD7 , 0xBF , 0xD8 , 0xBA ,
0x27 , 0x0B , 0x39 , 0x43 , 0x23 , 0x55 , 0xFF , 0xB4 ,
0xB7 , 0x0E , 0x0C , 0xBD , 0x6B , 0xB4 , 0xBF , 0x7F , 0x32 , 0x13 , /* x */
0x90 , 0xB9 , 0x4A , 0x03 , 0xC1 , 0xD3 , 0x56 , 0xC2 , 0x11 , 0x22 ,
0x34 , 0x32 , 0x80 , 0xD6 , 0x11 , 0x5C , 0x1D , 0x21 ,
0xbd , 0x37 , 0x63 , 0x88 , 0xb5 , 0xf7 , 0x23 , 0xfb , 0x4c , 0x22 , /* y */
0xdf , 0xe6 , 0xcd , 0x43 , 0x75 , 0xa0 , 0x5a , 0x07 , 0x47 , 0x64 ,
0x44 , 0xd5 , 0x81 , 0x99 , 0x85 , 0x00 , 0x7e , 0x34 ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0x16 , 0xA2 , 0xE0 , 0xB8 , 0xF0 , 0x3E ,
0x13 , 0xDD , 0x29 , 0x45 , 0x5C , 0x5C , 0x2A , 0x3D }
2002-08-15 09:21:31 +00:00
} ;
/* characteristic two curves */
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 15 * 6 ] ; }
_EC_SECG_CHAR2_113R1 = {
{ NID_X9_62_characteristic_two_field , 20 , 15 , 2 } ,
{ 0x10 , 0xE7 , 0x23 , 0xAB , 0x14 , 0xD6 , 0x96 , 0xE6 , 0x76 , 0x87 , /* seed */
0x56 , 0x15 , 0x17 , 0x56 , 0xFE , 0xBF , 0x8F , 0xCB , 0x49 , 0xA9 ,
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x02 , 0x01 ,
0x00 , 0x30 , 0x88 , 0x25 , 0x0C , 0xA6 , 0xE7 , 0xC7 , 0xFE , 0x64 , /* a */
0x9C , 0xE8 , 0x58 , 0x20 , 0xF7 ,
0x00 , 0xE8 , 0xBE , 0xE4 , 0xD3 , 0xE2 , 0x26 , 0x07 , 0x44 , 0x18 , /* b */
0x8B , 0xE0 , 0xE9 , 0xC7 , 0x23 ,
0x00 , 0x9D , 0x73 , 0x61 , 0x6F , 0x35 , 0xF4 , 0xAB , 0x14 , 0x07 , /* x */
0xD7 , 0x35 , 0x62 , 0xC1 , 0x0F ,
0x00 , 0xA5 , 0x28 , 0x30 , 0x27 , 0x79 , 0x58 , 0xEE , 0x84 , 0xD1 , /* y */
0x31 , 0x5E , 0xD3 , 0x18 , 0x86 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xD9 , 0xCC , /* order */
0xEC , 0x8A , 0x39 , 0xE5 , 0x6F }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 15 * 6 ] ; }
_EC_SECG_CHAR2_113R2 = {
{ NID_X9_62_characteristic_two_field , 20 , 15 , 2 } ,
{ 0x10 , 0xC0 , 0xFB , 0x15 , 0x76 , 0x08 , 0x60 , 0xDE , 0xF1 , 0xEE , /* seed */
0xF4 , 0xD6 , 0x96 , 0xE6 , 0x76 , 0x87 , 0x56 , 0x15 , 0x17 , 0x5D ,
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x02 , 0x01 ,
0x00 , 0x68 , 0x99 , 0x18 , 0xDB , 0xEC , 0x7E , 0x5A , 0x0D , 0xD6 , /* a */
0xDF , 0xC0 , 0xAA , 0x55 , 0xC7 ,
0x00 , 0x95 , 0xE9 , 0xA9 , 0xEC , 0x9B , 0x29 , 0x7B , 0xD4 , 0xBF , /* b */
0x36 , 0xE0 , 0x59 , 0x18 , 0x4F ,
0x01 , 0xA5 , 0x7A , 0x6A , 0x7B , 0x26 , 0xCA , 0x5E , 0xF5 , 0x2F , /* x */
0xCD , 0xB8 , 0x16 , 0x47 , 0x97 ,
0x00 , 0xB3 , 0xAD , 0xC9 , 0x4E , 0xD1 , 0xFE , 0x67 , 0x4C , 0x06 , /* y */
0xE6 , 0x95 , 0xBA , 0xBA , 0x1D ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x08 , 0x78 , /* order */
0x9B , 0x24 , 0x96 , 0xAF , 0x93 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 17 * 6 ] ; }
_EC_SECG_CHAR2_131R1 = {
{ NID_X9_62_characteristic_two_field , 20 , 17 , 2 } ,
{ 0x4D , 0x69 , 0x6E , 0x67 , 0x68 , 0x75 , 0x61 , 0x51 , 0x75 , 0x98 , /* seed */
0x5B , 0xD3 , 0xAD , 0xBA , 0xDA , 0x21 , 0xB4 , 0x3A , 0x97 , 0xE2 ,
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x0D ,
0x07 , 0xA1 , 0x1B , 0x09 , 0xA7 , 0x6B , 0x56 , 0x21 , 0x44 , 0x41 , /* a */
0x8F , 0xF3 , 0xFF , 0x8C , 0x25 , 0x70 , 0xB8 ,
0x02 , 0x17 , 0xC0 , 0x56 , 0x10 , 0x88 , 0x4B , 0x63 , 0xB9 , 0xC6 , /* b */
0xC7 , 0x29 , 0x16 , 0x78 , 0xF9 , 0xD3 , 0x41 ,
0x00 , 0x81 , 0xBA , 0xF9 , 0x1F , 0xDF , 0x98 , 0x33 , 0xC4 , 0x0F , /* x */
0x9C , 0x18 , 0x13 , 0x43 , 0x63 , 0x83 , 0x99 ,
0x07 , 0x8C , 0x6E , 0x7E , 0xA3 , 0x8C , 0x00 , 0x1F , 0x73 , 0xC8 , /* y */
0x13 , 0x4B , 0x1B , 0x4E , 0xF9 , 0xE1 , 0x50 ,
0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x02 , 0x31 , /* order */
0x23 , 0x95 , 0x3A , 0x94 , 0x64 , 0xB5 , 0x4D }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 17 * 6 ] ; }
_EC_SECG_CHAR2_131R2 = {
{ NID_X9_62_characteristic_two_field , 20 , 17 , 2 } ,
{ 0x98 , 0x5B , 0xD3 , 0xAD , 0xBA , 0xD4 , 0xD6 , 0x96 , 0xE6 , 0x76 , /* seed */
0x87 , 0x56 , 0x15 , 0x17 , 0x5A , 0x21 , 0xB4 , 0x3A , 0x97 , 0xE3 ,
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x0D ,
0x03 , 0xE5 , 0xA8 , 0x89 , 0x19 , 0xD7 , 0xCA , 0xFC , 0xBF , 0x41 , /* a */
0x5F , 0x07 , 0xC2 , 0x17 , 0x65 , 0x73 , 0xB2 ,
0x04 , 0xB8 , 0x26 , 0x6A , 0x46 , 0xC5 , 0x56 , 0x57 , 0xAC , 0x73 , /* b */
0x4C , 0xE3 , 0x8F , 0x01 , 0x8F , 0x21 , 0x92 ,
0x03 , 0x56 , 0xDC , 0xD8 , 0xF2 , 0xF9 , 0x50 , 0x31 , 0xAD , 0x65 , /* x */
0x2D , 0x23 , 0x95 , 0x1B , 0xB3 , 0x66 , 0xA8 ,
0x06 , 0x48 , 0xF0 , 0x6D , 0x86 , 0x79 , 0x40 , 0xA5 , 0x36 , 0x6D , /* y */
0x9E , 0x26 , 0x5D , 0xE9 , 0xEB , 0x24 , 0x0F ,
0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x69 , /* order */
0x54 , 0xA2 , 0x33 , 0x04 , 0x9B , 0xA9 , 0x8F }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 21 * 6 ] ; }
_EC_NIST_CHAR2_163K = {
{ NID_X9_62_characteristic_two_field , 0 , 21 , 2 } ,
{ /* no seed */
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0xC9 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x01 ,
0x02 , 0xFE , 0x13 , 0xC0 , 0x53 , 0x7B , 0xBC , 0x11 , 0xAC , 0xAA , /* x */
0x07 , 0xD7 , 0x93 , 0xDE , 0x4E , 0x6D , 0x5E , 0x5C , 0x94 , 0xEE ,
0xE8 ,
0x02 , 0x89 , 0x07 , 0x0F , 0xB0 , 0x5D , 0x38 , 0xFF , 0x58 , 0x32 , /* y */
0x1F , 0x2E , 0x80 , 0x05 , 0x36 , 0xD5 , 0x38 , 0xCC , 0xDA , 0xA3 ,
0xD9 ,
0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x02 , 0x01 , 0x08 , 0xA2 , 0xE0 , 0xCC , 0x0D , 0x99 , 0xF8 , 0xA5 ,
0xEF }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 21 * 6 ] ; }
_EC_SECG_CHAR2_163R1 = {
{ NID_X9_62_characteristic_two_field , 0 , 21 , 2 } ,
{ /* no seed */
#if 0
2004-03-25 03:03:52 +00:00
/* The algorithm used to derive the curve parameters from
* the seed used here is slightly different than the
2007-08-31 09:36:43 +00:00
* algorithm described in X9 .62 . */
0x24 , 0xB7 , 0xB1 , 0x37 , 0xC8 , 0xA1 , 0x4D , 0x69 , 0x6E , 0x67 ,
0x68 , 0x75 , 0x61 , 0x51 , 0x75 , 0x6F , 0xD0 , 0xDA , 0x2E , 0x5C ,
2004-03-25 03:03:52 +00:00
# endif
2007-08-31 09:36:43 +00:00
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0xC9 ,
0x07 , 0xB6 , 0x88 , 0x2C , 0xAA , 0xEF , 0xA8 , 0x4F , 0x95 , 0x54 , /* a */
0xFF , 0x84 , 0x28 , 0xBD , 0x88 , 0xE2 , 0x46 , 0xD2 , 0x78 , 0x2A ,
0xE2 ,
0x07 , 0x13 , 0x61 , 0x2D , 0xCD , 0xDC , 0xB4 , 0x0A , 0xAB , 0x94 , /* b */
0x6B , 0xDA , 0x29 , 0xCA , 0x91 , 0xF7 , 0x3A , 0xF9 , 0x58 , 0xAF ,
0xD9 ,
0x03 , 0x69 , 0x97 , 0x96 , 0x97 , 0xAB , 0x43 , 0x89 , 0x77 , 0x89 , /* x */
0x56 , 0x67 , 0x89 , 0x56 , 0x7F , 0x78 , 0x7A , 0x78 , 0x76 , 0xA6 ,
0x54 ,
0x00 , 0x43 , 0x5E , 0xDB , 0x42 , 0xEF , 0xAF , 0xB2 , 0x98 , 0x9D , /* y */
0x51 , 0xFE , 0xFC , 0xE3 , 0xC8 , 0x09 , 0x88 , 0xF4 , 0x1F , 0xF8 ,
0x83 ,
0x03 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0x48 , 0xAA , 0xB6 , 0x89 , 0xC2 , 0x9C , 0xA7 , 0x10 , 0x27 ,
0x9B }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 21 * 6 ] ; }
_EC_NIST_CHAR2_163B = {
{ NID_X9_62_characteristic_two_field , 0 , 21 , 2 } ,
{ /* no seed */
2004-03-25 03:03:52 +00:00
#if 0
2007-08-31 09:36:43 +00:00
/* The seed here was used to created the curve parameters in normal
* basis representation ( and not the polynomial representation used here ) */
0x85 , 0xE2 , 0x5B , 0xFE , 0x5C , 0x86 , 0x22 , 0x6C , 0xDB , 0x12 ,
0x01 , 0x6F , 0x75 , 0x53 , 0xF9 , 0xD0 , 0xE6 , 0x93 , 0xA2 , 0x68 ,
2004-03-25 03:03:52 +00:00
# endif
2007-08-31 09:36:43 +00:00
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0xC9 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x01 ,
0x02 , 0x0A , 0x60 , 0x19 , 0x07 , 0xB8 , 0xC9 , 0x53 , 0xCA , 0x14 , /* b */
0x81 , 0xEB , 0x10 , 0x51 , 0x2F , 0x78 , 0x74 , 0x4A , 0x32 , 0x05 ,
0xFD ,
0x03 , 0xF0 , 0xEB , 0xA1 , 0x62 , 0x86 , 0xA2 , 0xD5 , 0x7E , 0xA0 , /* x */
0x99 , 0x11 , 0x68 , 0xD4 , 0x99 , 0x46 , 0x37 , 0xE8 , 0x34 , 0x3E ,
0x36 ,
0x00 , 0xD5 , 0x1F , 0xBC , 0x6C , 0x71 , 0xA0 , 0x09 , 0x4F , 0xA2 , /* y */
0xCD , 0xD5 , 0x45 , 0xB1 , 0x1C , 0x5C , 0x0C , 0x79 , 0x73 , 0x24 ,
0xF1 ,
0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x02 , 0x92 , 0xFE , 0x77 , 0xE7 , 0x0C , 0x12 , 0xA4 , 0x23 , 0x4C ,
0x33 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 25 * 6 ] ; }
_EC_SECG_CHAR2_193R1 = {
{ NID_X9_62_characteristic_two_field , 20 , 25 , 2 } ,
{ 0x10 , 0x3F , 0xAE , 0xC7 , 0x4D , 0x69 , 0x6E , 0x67 , 0x68 , 0x75 , /* seed */
0x61 , 0x51 , 0x75 , 0x77 , 0x7F , 0xC5 , 0xB1 , 0x91 , 0xEF , 0x30 ,
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x80 , 0x01 ,
0x00 , 0x17 , 0x85 , 0x8F , 0xEB , 0x7A , 0x98 , 0x97 , 0x51 , 0x69 , /* a */
0xE1 , 0x71 , 0xF7 , 0x7B , 0x40 , 0x87 , 0xDE , 0x09 , 0x8A , 0xC8 ,
0xA9 , 0x11 , 0xDF , 0x7B , 0x01 ,
0x00 , 0xFD , 0xFB , 0x49 , 0xBF , 0xE6 , 0xC3 , 0xA8 , 0x9F , 0xAC , /* b */
0xAD , 0xAA , 0x7A , 0x1E , 0x5B , 0xBC , 0x7C , 0xC1 , 0xC2 , 0xE5 ,
0xD8 , 0x31 , 0x47 , 0x88 , 0x14 ,
0x01 , 0xF4 , 0x81 , 0xBC , 0x5F , 0x0F , 0xF8 , 0x4A , 0x74 , 0xAD , /* x */
0x6C , 0xDF , 0x6F , 0xDE , 0xF4 , 0xBF , 0x61 , 0x79 , 0x62 , 0x53 ,
0x72 , 0xD8 , 0xC0 , 0xC5 , 0xE1 ,
0x00 , 0x25 , 0xE3 , 0x99 , 0xF2 , 0x90 , 0x37 , 0x12 , 0xCC , 0xF3 , /* y */
0xEA , 0x9E , 0x3A , 0x1A , 0xD1 , 0x7F , 0xB0 , 0xB3 , 0x20 , 0x1B ,
0x6A , 0xF7 , 0xCE , 0x1B , 0x05 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x00 , 0xC7 , 0xF3 , 0x4A , 0x77 , 0x8F , 0x44 , 0x3A ,
0xCC , 0x92 , 0x0E , 0xBA , 0x49 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 25 * 6 ] ; }
_EC_SECG_CHAR2_193R2 = {
{ NID_X9_62_characteristic_two_field , 20 , 25 , 2 } ,
{ 0x10 , 0xB7 , 0xB4 , 0xD6 , 0x96 , 0xE6 , 0x76 , 0x87 , 0x56 , 0x15 , /* seed */
0x17 , 0x51 , 0x37 , 0xC8 , 0xA1 , 0x6F , 0xD0 , 0xDA , 0x22 , 0x11 ,
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x80 , 0x01 ,
0x01 , 0x63 , 0xF3 , 0x5A , 0x51 , 0x37 , 0xC2 , 0xCE , 0x3E , 0xA6 , /* a */
0xED , 0x86 , 0x67 , 0x19 , 0x0B , 0x0B , 0xC4 , 0x3E , 0xCD , 0x69 ,
0x97 , 0x77 , 0x02 , 0x70 , 0x9B ,
0x00 , 0xC9 , 0xBB , 0x9E , 0x89 , 0x27 , 0xD4 , 0xD6 , 0x4C , 0x37 , /* b */
0x7E , 0x2A , 0xB2 , 0x85 , 0x6A , 0x5B , 0x16 , 0xE3 , 0xEF , 0xB7 ,
0xF6 , 0x1D , 0x43 , 0x16 , 0xAE ,
0x00 , 0xD9 , 0xB6 , 0x7D , 0x19 , 0x2E , 0x03 , 0x67 , 0xC8 , 0x03 , /* x */
0xF3 , 0x9E , 0x1A , 0x7E , 0x82 , 0xCA , 0x14 , 0xA6 , 0x51 , 0x35 ,
0x0A , 0xAE , 0x61 , 0x7E , 0x8F ,
0x01 , 0xCE , 0x94 , 0x33 , 0x56 , 0x07 , 0xC3 , 0x04 , 0xAC , 0x29 , /* y */
0xE7 , 0xDE , 0xFB , 0xD9 , 0xCA , 0x01 , 0xF5 , 0x96 , 0xF9 , 0x27 ,
0x22 , 0x4C , 0xDE , 0xCF , 0x6C ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x01 , 0x5A , 0xAB , 0x56 , 0x1B , 0x00 , 0x54 , 0x13 ,
0xCC , 0xD4 , 0xEE , 0x99 , 0xD5 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 30 * 6 ] ; }
_EC_NIST_CHAR2_233K = {
{ NID_X9_62_characteristic_two_field , 0 , 30 , 4 } ,
{ /* no seed */
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x01 , 0x72 , 0x32 , 0xBA , 0x85 , 0x3A , 0x7E , 0x73 , 0x1A , 0xF1 , /* x */
0x29 , 0xF2 , 0x2F , 0xF4 , 0x14 , 0x95 , 0x63 , 0xA4 , 0x19 , 0xC2 ,
0x6B , 0xF5 , 0x0A , 0x4C , 0x9D , 0x6E , 0xEF , 0xAD , 0x61 , 0x26 ,
0x01 , 0xDB , 0x53 , 0x7D , 0xEC , 0xE8 , 0x19 , 0xB7 , 0xF7 , 0x0F , /* y */
0x55 , 0x5A , 0x67 , 0xC4 , 0x27 , 0xA8 , 0xCD , 0x9B , 0xF1 , 0x8A ,
0xEB , 0x9B , 0x56 , 0xE0 , 0xC1 , 0x10 , 0x56 , 0xFA , 0xE6 , 0xA3 ,
0x00 , 0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x06 , 0x9D , 0x5B , 0xB9 , 0x15 ,
0xBC , 0xD4 , 0x6E , 0xFB , 0x1A , 0xD5 , 0xF1 , 0x73 , 0xAB , 0xDF }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 30 * 6 ] ; }
_EC_NIST_CHAR2_233B = {
{ NID_X9_62_characteristic_two_field , 20 , 30 , 2 } ,
{ 0x74 , 0xD5 , 0x9F , 0xF0 , 0x7F , 0x6B , 0x41 , 0x3D , 0x0E , 0xA1 , /* seed */
0x4B , 0x34 , 0x4B , 0x20 , 0xA2 , 0xDB , 0x04 , 0x9B , 0x50 , 0xC3 ,
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x00 , 0x66 , 0x64 , 0x7E , 0xDE , 0x6C , 0x33 , 0x2C , 0x7F , 0x8C , /* b */
0x09 , 0x23 , 0xBB , 0x58 , 0x21 , 0x3B , 0x33 , 0x3B , 0x20 , 0xE9 ,
0xCE , 0x42 , 0x81 , 0xFE , 0x11 , 0x5F , 0x7D , 0x8F , 0x90 , 0xAD ,
0x00 , 0xFA , 0xC9 , 0xDF , 0xCB , 0xAC , 0x83 , 0x13 , 0xBB , 0x21 , /* x */
0x39 , 0xF1 , 0xBB , 0x75 , 0x5F , 0xEF , 0x65 , 0xBC , 0x39 , 0x1F ,
0x8B , 0x36 , 0xF8 , 0xF8 , 0xEB , 0x73 , 0x71 , 0xFD , 0x55 , 0x8B ,
0x01 , 0x00 , 0x6A , 0x08 , 0xA4 , 0x19 , 0x03 , 0x35 , 0x06 , 0x78 , /* y */
0xE5 , 0x85 , 0x28 , 0xBE , 0xBF , 0x8A , 0x0B , 0xEF , 0xF8 , 0x67 ,
0xA7 , 0xCA , 0x36 , 0x71 , 0x6F , 0x7E , 0x01 , 0xF8 , 0x10 , 0x52 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x13 , 0xE9 , 0x74 , 0xE7 , 0x2F ,
0x8A , 0x69 , 0x22 , 0x03 , 0x1D , 0x26 , 0x03 , 0xCF , 0xE0 , 0xD7 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 30 * 6 ] ; }
_EC_SECG_CHAR2_239K1 = {
{ NID_X9_62_characteristic_two_field , 0 , 30 , 4 } ,
{ /* no seed */
0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x40 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x29 , 0xA0 , 0xB6 , 0xA8 , 0x87 , 0xA9 , 0x83 , 0xE9 , 0x73 , 0x09 , /* x */
0x88 , 0xA6 , 0x87 , 0x27 , 0xA8 , 0xB2 , 0xD1 , 0x26 , 0xC4 , 0x4C ,
0xC2 , 0xCC , 0x7B , 0x2A , 0x65 , 0x55 , 0x19 , 0x30 , 0x35 , 0xDC ,
0x76 , 0x31 , 0x08 , 0x04 , 0xF1 , 0x2E , 0x54 , 0x9B , 0xDB , 0x01 , /* y */
0x1C , 0x10 , 0x30 , 0x89 , 0xE7 , 0x35 , 0x10 , 0xAC , 0xB2 , 0x75 ,
0xFC , 0x31 , 0x2A , 0x5D , 0xC6 , 0xB7 , 0x65 , 0x53 , 0xF0 , 0xCA ,
0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x5A , 0x79 , 0xFE , 0xC6 , 0x7C ,
0xB6 , 0xE9 , 0x1F , 0x1C , 0x1D , 0xA8 , 0x00 , 0xE4 , 0x78 , 0xA5 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 36 * 6 ] ; }
_EC_NIST_CHAR2_283K = {
{ NID_X9_62_characteristic_two_field , 0 , 36 , 4 } ,
{ /* no seed */
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x10 , 0xA1 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x05 , 0x03 , 0x21 , 0x3F , 0x78 , 0xCA , 0x44 , 0x88 , 0x3F , 0x1A , /* x */
0x3B , 0x81 , 0x62 , 0xF1 , 0x88 , 0xE5 , 0x53 , 0xCD , 0x26 , 0x5F ,
0x23 , 0xC1 , 0x56 , 0x7A , 0x16 , 0x87 , 0x69 , 0x13 , 0xB0 , 0xC2 ,
0xAC , 0x24 , 0x58 , 0x49 , 0x28 , 0x36 ,
0x01 , 0xCC , 0xDA , 0x38 , 0x0F , 0x1C , 0x9E , 0x31 , 0x8D , 0x90 , /* y */
0xF9 , 0x5D , 0x07 , 0xE5 , 0x42 , 0x6F , 0xE8 , 0x7E , 0x45 , 0xC0 ,
0xE8 , 0x18 , 0x46 , 0x98 , 0xE4 , 0x59 , 0x62 , 0x36 , 0x4E , 0x34 ,
0x11 , 0x61 , 0x77 , 0xDD , 0x22 , 0x59 ,
0x01 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xE9 , 0xAE ,
0x2E , 0xD0 , 0x75 , 0x77 , 0x26 , 0x5D , 0xFF , 0x7F , 0x94 , 0x45 ,
0x1E , 0x06 , 0x1E , 0x16 , 0x3C , 0x61 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 36 * 6 ] ; }
_EC_NIST_CHAR2_283B = {
{ NID_X9_62_characteristic_two_field , 20 , 36 , 2 } ,
{ 0x77 , 0xE2 , 0xB0 , 0x73 , 0x70 , 0xEB , 0x0F , 0x83 , 0x2A , 0x6D , /* no seed */
0xD5 , 0xB6 , 0x2D , 0xFC , 0x88 , 0xCD , 0x06 , 0xBB , 0x84 , 0xBE ,
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x10 , 0xA1 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x02 , 0x7B , 0x68 , 0x0A , 0xC8 , 0xB8 , 0x59 , 0x6D , 0xA5 , 0xA4 , /* b */
0xAF , 0x8A , 0x19 , 0xA0 , 0x30 , 0x3F , 0xCA , 0x97 , 0xFD , 0x76 ,
0x45 , 0x30 , 0x9F , 0xA2 , 0xA5 , 0x81 , 0x48 , 0x5A , 0xF6 , 0x26 ,
0x3E , 0x31 , 0x3B , 0x79 , 0xA2 , 0xF5 ,
0x05 , 0xF9 , 0x39 , 0x25 , 0x8D , 0xB7 , 0xDD , 0x90 , 0xE1 , 0x93 , /* x */
0x4F , 0x8C , 0x70 , 0xB0 , 0xDF , 0xEC , 0x2E , 0xED , 0x25 , 0xB8 ,
0x55 , 0x7E , 0xAC , 0x9C , 0x80 , 0xE2 , 0xE1 , 0x98 , 0xF8 , 0xCD ,
0xBE , 0xCD , 0x86 , 0xB1 , 0x20 , 0x53 ,
0x03 , 0x67 , 0x68 , 0x54 , 0xFE , 0x24 , 0x14 , 0x1C , 0xB9 , 0x8F , /* y */
0xE6 , 0xD4 , 0xB2 , 0x0D , 0x02 , 0xB4 , 0x51 , 0x6F , 0xF7 , 0x02 ,
0x35 , 0x0E , 0xDD , 0xB0 , 0x82 , 0x67 , 0x79 , 0xC8 , 0x13 , 0xF0 ,
0xDF , 0x45 , 0xBE , 0x81 , 0x12 , 0xF4 ,
0x03 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xEF , 0x90 ,
0x39 , 0x96 , 0x60 , 0xFC , 0x93 , 0x8A , 0x90 , 0x16 , 0x5B , 0x04 ,
0x2A , 0x7C , 0xEF , 0xAD , 0xB3 , 0x07 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 52 * 6 ] ; }
_EC_NIST_CHAR2_409K = {
{ NID_X9_62_characteristic_two_field , 0 , 52 , 4 } ,
{ /* no seed */
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x01 ,
0x00 , 0x60 , 0xF0 , 0x5F , 0x65 , 0x8F , 0x49 , 0xC1 , 0xAD , 0x3A , /* x */
0xB1 , 0x89 , 0x0F , 0x71 , 0x84 , 0x21 , 0x0E , 0xFD , 0x09 , 0x87 ,
0xE3 , 0x07 , 0xC8 , 0x4C , 0x27 , 0xAC , 0xCF , 0xB8 , 0xF9 , 0xF6 ,
0x7C , 0xC2 , 0xC4 , 0x60 , 0x18 , 0x9E , 0xB5 , 0xAA , 0xAA , 0x62 ,
0xEE , 0x22 , 0x2E , 0xB1 , 0xB3 , 0x55 , 0x40 , 0xCF , 0xE9 , 0x02 ,
0x37 , 0x46 ,
0x01 , 0xE3 , 0x69 , 0x05 , 0x0B , 0x7C , 0x4E , 0x42 , 0xAC , 0xBA , /* y */
0x1D , 0xAC , 0xBF , 0x04 , 0x29 , 0x9C , 0x34 , 0x60 , 0x78 , 0x2F ,
0x91 , 0x8E , 0xA4 , 0x27 , 0xE6 , 0x32 , 0x51 , 0x65 , 0xE9 , 0xEA ,
0x10 , 0xE3 , 0xDA , 0x5F , 0x6C , 0x42 , 0xE9 , 0xC5 , 0x52 , 0x15 ,
0xAA , 0x9C , 0xA2 , 0x7A , 0x58 , 0x63 , 0xEC , 0x48 , 0xD8 , 0xE0 ,
0x28 , 0x6B ,
0x00 , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFE , 0x5F , 0x83 , 0xB2 ,
0xD4 , 0xEA , 0x20 , 0x40 , 0x0E , 0xC4 , 0x55 , 0x7D , 0x5E , 0xD3 ,
0xE3 , 0xE7 , 0xCA , 0x5B , 0x4B , 0x5C , 0x83 , 0xB8 , 0xE0 , 0x1E ,
0x5F , 0xCF }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 52 * 6 ] ; }
_EC_NIST_CHAR2_409B = {
{ NID_X9_62_characteristic_two_field , 20 , 52 , 2 } ,
{ 0x40 , 0x99 , 0xB5 , 0xA4 , 0x57 , 0xF9 , 0xD6 , 0x9F , 0x79 , 0x21 , /* seed */
0x3D , 0x09 , 0x4C , 0x4B , 0xCD , 0x4D , 0x42 , 0x62 , 0x21 , 0x0B ,
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x01 ,
0x00 , 0x21 , 0xA5 , 0xC2 , 0xC8 , 0xEE , 0x9F , 0xEB , 0x5C , 0x4B , /* b */
0x9A , 0x75 , 0x3B , 0x7B , 0x47 , 0x6B , 0x7F , 0xD6 , 0x42 , 0x2E ,
0xF1 , 0xF3 , 0xDD , 0x67 , 0x47 , 0x61 , 0xFA , 0x99 , 0xD6 , 0xAC ,
0x27 , 0xC8 , 0xA9 , 0xA1 , 0x97 , 0xB2 , 0x72 , 0x82 , 0x2F , 0x6C ,
0xD5 , 0x7A , 0x55 , 0xAA , 0x4F , 0x50 , 0xAE , 0x31 , 0x7B , 0x13 ,
0x54 , 0x5F ,
0x01 , 0x5D , 0x48 , 0x60 , 0xD0 , 0x88 , 0xDD , 0xB3 , 0x49 , 0x6B , /* x */
0x0C , 0x60 , 0x64 , 0x75 , 0x62 , 0x60 , 0x44 , 0x1C , 0xDE , 0x4A ,
0xF1 , 0x77 , 0x1D , 0x4D , 0xB0 , 0x1F , 0xFE , 0x5B , 0x34 , 0xE5 ,
0x97 , 0x03 , 0xDC , 0x25 , 0x5A , 0x86 , 0x8A , 0x11 , 0x80 , 0x51 ,
0x56 , 0x03 , 0xAE , 0xAB , 0x60 , 0x79 , 0x4E , 0x54 , 0xBB , 0x79 ,
0x96 , 0xA7 ,
0x00 , 0x61 , 0xB1 , 0xCF , 0xAB , 0x6B , 0xE5 , 0xF3 , 0x2B , 0xBF , /* y */
0xA7 , 0x83 , 0x24 , 0xED , 0x10 , 0x6A , 0x76 , 0x36 , 0xB9 , 0xC5 ,
0xA7 , 0xBD , 0x19 , 0x8D , 0x01 , 0x58 , 0xAA , 0x4F , 0x54 , 0x88 ,
0xD0 , 0x8F , 0x38 , 0x51 , 0x4F , 0x1F , 0xDF , 0x4B , 0x4F , 0x40 ,
0xD2 , 0x18 , 0x1B , 0x36 , 0x81 , 0xC3 , 0x64 , 0xBA , 0x02 , 0x73 ,
0xC7 , 0x06 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0xE2 , 0xAA , 0xD6 ,
0xA6 , 0x12 , 0xF3 , 0x33 , 0x07 , 0xBE , 0x5F , 0xA4 , 0x7C , 0x3C ,
0x9E , 0x05 , 0x2F , 0x83 , 0x81 , 0x64 , 0xCD , 0x37 , 0xD9 , 0xA2 ,
0x11 , 0x73 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 72 * 6 ] ; }
_EC_NIST_CHAR2_571K = {
{ NID_X9_62_characteristic_two_field , 0 , 72 , 4 } ,
{ /* no seed */
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x04 , 0x25 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x01 ,
0x02 , 0x6E , 0xB7 , 0xA8 , 0x59 , 0x92 , 0x3F , 0xBC , 0x82 , 0x18 , /* x */
0x96 , 0x31 , 0xF8 , 0x10 , 0x3F , 0xE4 , 0xAC , 0x9C , 0xA2 , 0x97 ,
0x00 , 0x12 , 0xD5 , 0xD4 , 0x60 , 0x24 , 0x80 , 0x48 , 0x01 , 0x84 ,
0x1C , 0xA4 , 0x43 , 0x70 , 0x95 , 0x84 , 0x93 , 0xB2 , 0x05 , 0xE6 ,
0x47 , 0xDA , 0x30 , 0x4D , 0xB4 , 0xCE , 0xB0 , 0x8C , 0xBB , 0xD1 ,
0xBA , 0x39 , 0x49 , 0x47 , 0x76 , 0xFB , 0x98 , 0x8B , 0x47 , 0x17 ,
0x4D , 0xCA , 0x88 , 0xC7 , 0xE2 , 0x94 , 0x52 , 0x83 , 0xA0 , 0x1C ,
0x89 , 0x72 ,
0x03 , 0x49 , 0xDC , 0x80 , 0x7F , 0x4F , 0xBF , 0x37 , 0x4F , 0x4A , /* y */
0xEA , 0xDE , 0x3B , 0xCA , 0x95 , 0x31 , 0x4D , 0xD5 , 0x8C , 0xEC ,
0x9F , 0x30 , 0x7A , 0x54 , 0xFF , 0xC6 , 0x1E , 0xFC , 0x00 , 0x6D ,
0x8A , 0x2C , 0x9D , 0x49 , 0x79 , 0xC0 , 0xAC , 0x44 , 0xAE , 0xA7 ,
0x4F , 0xBE , 0xBB , 0xB9 , 0xF7 , 0x72 , 0xAE , 0xDC , 0xB6 , 0x20 ,
0xB0 , 0x1A , 0x7B , 0xA7 , 0xAF , 0x1B , 0x32 , 0x04 , 0x30 , 0xC8 ,
0x59 , 0x19 , 0x84 , 0xF6 , 0x01 , 0xCD , 0x4C , 0x14 , 0x3E , 0xF1 ,
0xC7 , 0xA3 ,
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x13 , 0x18 , 0x50 , 0xE1 ,
0xF1 , 0x9A , 0x63 , 0xE4 , 0xB3 , 0x91 , 0xA8 , 0xDB , 0x91 , 0x7F ,
0x41 , 0x38 , 0xB6 , 0x30 , 0xD8 , 0x4B , 0xE5 , 0xD6 , 0x39 , 0x38 ,
0x1E , 0x91 , 0xDE , 0xB4 , 0x5C , 0xFE , 0x77 , 0x8F , 0x63 , 0x7C ,
0x10 , 0x01 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 72 * 6 ] ; }
_EC_NIST_CHAR2_571B = {
{ NID_X9_62_characteristic_two_field , 20 , 72 , 2 } ,
{ 0x2A , 0xA0 , 0x58 , 0xF7 , 0x3A , 0x0E , 0x33 , 0xAB , 0x48 , 0x6B , /* seed */
0x0F , 0x61 , 0x04 , 0x10 , 0xC5 , 0x3A , 0x7F , 0x13 , 0x23 , 0x10 ,
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x04 , 0x25 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x01 ,
0x02 , 0xF4 , 0x0E , 0x7E , 0x22 , 0x21 , 0xF2 , 0x95 , 0xDE , 0x29 , /* b */
0x71 , 0x17 , 0xB7 , 0xF3 , 0xD6 , 0x2F , 0x5C , 0x6A , 0x97 , 0xFF ,
0xCB , 0x8C , 0xEF , 0xF1 , 0xCD , 0x6B , 0xA8 , 0xCE , 0x4A , 0x9A ,
0x18 , 0xAD , 0x84 , 0xFF , 0xAB , 0xBD , 0x8E , 0xFA , 0x59 , 0x33 ,
0x2B , 0xE7 , 0xAD , 0x67 , 0x56 , 0xA6 , 0x6E , 0x29 , 0x4A , 0xFD ,
0x18 , 0x5A , 0x78 , 0xFF , 0x12 , 0xAA , 0x52 , 0x0E , 0x4D , 0xE7 ,
0x39 , 0xBA , 0xCA , 0x0C , 0x7F , 0xFE , 0xFF , 0x7F , 0x29 , 0x55 ,
0x72 , 0x7A ,
0x03 , 0x03 , 0x00 , 0x1D , 0x34 , 0xB8 , 0x56 , 0x29 , 0x6C , 0x16 , /* x */
0xC0 , 0xD4 , 0x0D , 0x3C , 0xD7 , 0x75 , 0x0A , 0x93 , 0xD1 , 0xD2 ,
0x95 , 0x5F , 0xA8 , 0x0A , 0xA5 , 0xF4 , 0x0F , 0xC8 , 0xDB , 0x7B ,
0x2A , 0xBD , 0xBD , 0xE5 , 0x39 , 0x50 , 0xF4 , 0xC0 , 0xD2 , 0x93 ,
0xCD , 0xD7 , 0x11 , 0xA3 , 0x5B , 0x67 , 0xFB , 0x14 , 0x99 , 0xAE ,
0x60 , 0x03 , 0x86 , 0x14 , 0xF1 , 0x39 , 0x4A , 0xBF , 0xA3 , 0xB4 ,
0xC8 , 0x50 , 0xD9 , 0x27 , 0xE1 , 0xE7 , 0x76 , 0x9C , 0x8E , 0xEC ,
0x2D , 0x19 ,
0x03 , 0x7B , 0xF2 , 0x73 , 0x42 , 0xDA , 0x63 , 0x9B , 0x6D , 0xCC , /* y */
0xFF , 0xFE , 0xB7 , 0x3D , 0x69 , 0xD7 , 0x8C , 0x6C , 0x27 , 0xA6 ,
0x00 , 0x9C , 0xBB , 0xCA , 0x19 , 0x80 , 0xF8 , 0x53 , 0x39 , 0x21 ,
0xE8 , 0xA6 , 0x84 , 0x42 , 0x3E , 0x43 , 0xBA , 0xB0 , 0x8A , 0x57 ,
0x62 , 0x91 , 0xAF , 0x8F , 0x46 , 0x1B , 0xB2 , 0xA8 , 0xB3 , 0x53 ,
0x1D , 0x2F , 0x04 , 0x85 , 0xC1 , 0x9B , 0x16 , 0xE2 , 0xF1 , 0x51 ,
0x6E , 0x23 , 0xDD , 0x3C , 0x1A , 0x48 , 0x27 , 0xAF , 0x1B , 0x8A ,
0xC1 , 0x5B ,
0x03 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xE6 , 0x61 , 0xCE , 0x18 ,
0xFF , 0x55 , 0x98 , 0x73 , 0x08 , 0x05 , 0x9B , 0x18 , 0x68 , 0x23 ,
0x85 , 0x1E , 0xC7 , 0xDD , 0x9C , 0xA1 , 0x16 , 0x1D , 0xE9 , 0x3D ,
0x51 , 0x74 , 0xD6 , 0x6E , 0x83 , 0x82 , 0xE9 , 0xBB , 0x2F , 0xE8 ,
0x4E , 0x47 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 21 * 6 ] ; }
_EC_X9_62_CHAR2_163V1 = {
{ NID_X9_62_characteristic_two_field , 20 , 21 , 2 } ,
{ 0xD2 , 0xC0 , 0xFB , 0x15 , 0x76 , 0x08 , 0x60 , 0xDE , 0xF1 , 0xEE ,
0xF4 , 0xD6 , 0x96 , 0xE6 , 0x76 , 0x87 , 0x56 , 0x15 , 0x17 , 0x54 , /* seed */
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x07 ,
0x07 , 0x25 , 0x46 , 0xB5 , 0x43 , 0x52 , 0x34 , 0xA4 , 0x22 , 0xE0 , /* a */
0x78 , 0x96 , 0x75 , 0xF4 , 0x32 , 0xC8 , 0x94 , 0x35 , 0xDE , 0x52 ,
0x42 ,
0x00 , 0xC9 , 0x51 , 0x7D , 0x06 , 0xD5 , 0x24 , 0x0D , 0x3C , 0xFF , /* b */
0x38 , 0xC7 , 0x4B , 0x20 , 0xB6 , 0xCD , 0x4D , 0x6F , 0x9D , 0xD4 ,
0xD9 ,
0x07 , 0xAF , 0x69 , 0x98 , 0x95 , 0x46 , 0x10 , 0x3D , 0x79 , 0x32 , /* x */
0x9F , 0xCC , 0x3D , 0x74 , 0x88 , 0x0F , 0x33 , 0xBB , 0xE8 , 0x03 ,
0xCB ,
0x01 , 0xEC , 0x23 , 0x21 , 0x1B , 0x59 , 0x66 , 0xAD , 0xEA , 0x1D , /* y */
0x3F , 0x87 , 0xF7 , 0xEA , 0x58 , 0x48 , 0xAE , 0xF0 , 0xB7 , 0xCA ,
0x9F ,
0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x01 , 0xE6 , 0x0F , 0xC8 , 0x82 , 0x1C , 0xC7 , 0x4D , 0xAE , 0xAF ,
0xC1 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 21 * 6 ] ; }
_EC_X9_62_CHAR2_163V2 = {
{ NID_X9_62_characteristic_two_field , 20 , 21 , 2 } ,
{ 0x53 , 0x81 , 0x4C , 0x05 , 0x0D , 0x44 , 0xD6 , 0x96 , 0xE6 , 0x76 , /* seed */
0x87 , 0x56 , 0x15 , 0x17 , 0x58 , 0x0C , 0xA4 , 0xE2 , 0x9F , 0xFD ,
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x07 ,
0x01 , 0x08 , 0xB3 , 0x9E , 0x77 , 0xC4 , 0xB1 , 0x08 , 0xBE , 0xD9 , /* a */
0x81 , 0xED , 0x0E , 0x89 , 0x0E , 0x11 , 0x7C , 0x51 , 0x1C , 0xF0 ,
0x72 ,
0x06 , 0x67 , 0xAC , 0xEB , 0x38 , 0xAF , 0x4E , 0x48 , 0x8C , 0x40 , /* b */
0x74 , 0x33 , 0xFF , 0xAE , 0x4F , 0x1C , 0x81 , 0x16 , 0x38 , 0xDF ,
0x20 ,
0x00 , 0x24 , 0x26 , 0x6E , 0x4E , 0xB5 , 0x10 , 0x6D , 0x0A , 0x96 , /* x */
0x4D , 0x92 , 0xC4 , 0x86 , 0x0E , 0x26 , 0x71 , 0xDB , 0x9B , 0x6C ,
0xC5 ,
0x07 , 0x9F , 0x68 , 0x4D , 0xDF , 0x66 , 0x84 , 0xC5 , 0xCD , 0x25 , /* y */
0x8B , 0x38 , 0x90 , 0x02 , 0x1B , 0x23 , 0x86 , 0xDF , 0xD1 , 0x9F ,
0xC5 ,
0x03 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFD , 0xF6 , 0x4D , 0xE1 , 0x15 , 0x1A , 0xDB , 0xB7 , 0x8F , 0x10 ,
0xA7 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 21 * 6 ] ; }
_EC_X9_62_CHAR2_163V3 = {
{ NID_X9_62_characteristic_two_field , 20 , 21 , 2 } ,
{ 0x50 , 0xCB , 0xF1 , 0xD9 , 0x5C , 0xA9 , 0x4D , 0x69 , 0x6E , 0x67 , /* seed */
0x68 , 0x75 , 0x61 , 0x51 , 0x75 , 0xF1 , 0x6A , 0x36 , 0xA3 , 0xB8 ,
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x07 ,
0x07 , 0xA5 , 0x26 , 0xC6 , 0x3D , 0x3E , 0x25 , 0xA2 , 0x56 , 0xA0 , /* a */
0x07 , 0x69 , 0x9F , 0x54 , 0x47 , 0xE3 , 0x2A , 0xE4 , 0x56 , 0xB5 ,
0x0E ,
0x03 , 0xF7 , 0x06 , 0x17 , 0x98 , 0xEB , 0x99 , 0xE2 , 0x38 , 0xFD , /* b */
0x6F , 0x1B , 0xF9 , 0x5B , 0x48 , 0xFE , 0xEB , 0x48 , 0x54 , 0x25 ,
0x2B ,
0x02 , 0xF9 , 0xF8 , 0x7B , 0x7C , 0x57 , 0x4D , 0x0B , 0xDE , 0xCF , /* x */
0x8A , 0x22 , 0xE6 , 0x52 , 0x47 , 0x75 , 0xF9 , 0x8C , 0xDE , 0xBD ,
0xCB ,
0x05 , 0xB9 , 0x35 , 0x59 , 0x0C , 0x15 , 0x5E , 0x17 , 0xEA , 0x48 , /* y */
0xEB , 0x3F , 0xF3 , 0x71 , 0x8B , 0x89 , 0x3D , 0xF5 , 0x9A , 0x05 ,
0xD0 ,
0x03 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFE , 0x1A , 0xEE , 0x14 , 0x0F , 0x11 , 0x0A , 0xFF , 0x96 , 0x13 ,
0x09 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 23 * 6 ] ; }
_EC_X9_62_CHAR2_176V1 = {
{ NID_X9_62_characteristic_two_field , 0 , 23 , 0xFF6E } ,
{ /* no seed */
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x08 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x07 ,
0x00 , 0xE4 , 0xE6 , 0xDB , 0x29 , 0x95 , 0x06 , 0x5C , 0x40 , 0x7D , /* a */
0x9D , 0x39 , 0xB8 , 0xD0 , 0x96 , 0x7B , 0x96 , 0x70 , 0x4B , 0xA8 ,
0xE9 , 0xC9 , 0x0B ,
0x00 , 0x5D , 0xDA , 0x47 , 0x0A , 0xBE , 0x64 , 0x14 , 0xDE , 0x8E , /* b */
0xC1 , 0x33 , 0xAE , 0x28 , 0xE9 , 0xBB , 0xD7 , 0xFC , 0xEC , 0x0A ,
0xE0 , 0xFF , 0xF2 ,
0x00 , 0x8D , 0x16 , 0xC2 , 0x86 , 0x67 , 0x98 , 0xB6 , 0x00 , 0xF9 , /* x */
0xF0 , 0x8B , 0xB4 , 0xA8 , 0xE8 , 0x60 , 0xF3 , 0x29 , 0x8C , 0xE0 ,
0x4A , 0x57 , 0x98 ,
0x00 , 0x6F , 0xA4 , 0x53 , 0x9C , 0x2D , 0xAD , 0xDD , 0xD6 , 0xBA , /* y */
0xB5 , 0x16 , 0x7D , 0x61 , 0xB4 , 0x36 , 0xE1 , 0xD9 , 0x2B , 0xB1 ,
0x6A , 0x56 , 0x2C ,
0x00 , 0x00 , 0x01 , 0x00 , 0x92 , 0x53 , 0x73 , 0x97 , 0xEC , 0xA4 , /* order */
0xF6 , 0x14 , 0x57 , 0x99 , 0xD6 , 0x2B , 0x0A , 0x19 , 0xCE , 0x06 ,
0xFE , 0x26 , 0xAD }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 24 * 6 ] ; }
_EC_X9_62_CHAR2_191V1 = {
{ NID_X9_62_characteristic_two_field , 20 , 24 , 2 } ,
{ 0x4E , 0x13 , 0xCA , 0x54 , 0x27 , 0x44 , 0xD6 , 0x96 , 0xE6 , 0x76 , /* seed */
0x87 , 0x56 , 0x15 , 0x17 , 0x55 , 0x2F , 0x27 , 0x9A , 0x8C , 0x84 ,
0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x02 , 0x01 ,
0x28 , 0x66 , 0x53 , 0x7B , 0x67 , 0x67 , 0x52 , 0x63 , 0x6A , 0x68 , /* a */
0xF5 , 0x65 , 0x54 , 0xE1 , 0x26 , 0x40 , 0x27 , 0x6B , 0x64 , 0x9E ,
0xF7 , 0x52 , 0x62 , 0x67 ,
0x2E , 0x45 , 0xEF , 0x57 , 0x1F , 0x00 , 0x78 , 0x6F , 0x67 , 0xB0 , /* b */
0x08 , 0x1B , 0x94 , 0x95 , 0xA3 , 0xD9 , 0x54 , 0x62 , 0xF5 , 0xDE ,
0x0A , 0xA1 , 0x85 , 0xEC ,
0x36 , 0xB3 , 0xDA , 0xF8 , 0xA2 , 0x32 , 0x06 , 0xF9 , 0xC4 , 0xF2 , /* x */
0x99 , 0xD7 , 0xB2 , 0x1A , 0x9C , 0x36 , 0x91 , 0x37 , 0xF2 , 0xC8 ,
0x4A , 0xE1 , 0xAA , 0x0D ,
0x76 , 0x5B , 0xE7 , 0x34 , 0x33 , 0xB3 , 0xF9 , 0x5E , 0x33 , 0x29 , /* y */
0x32 , 0xE7 , 0x0E , 0xA2 , 0x45 , 0xCA , 0x24 , 0x18 , 0xEA , 0x0E ,
0xF9 , 0x80 , 0x18 , 0xFB ,
0x40 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x04 , 0xA2 , 0x0E , 0x90 , 0xC3 , 0x90 , 0x67 , 0xC8 ,
0x93 , 0xBB , 0xB9 , 0xA5 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 24 * 6 ] ; }
_EC_X9_62_CHAR2_191V2 = {
{ NID_X9_62_characteristic_two_field , 20 , 24 , 4 } ,
{ 0x08 , 0x71 , 0xEF , 0x2F , 0xEF , 0x24 , 0xD6 , 0x96 , 0xE6 , 0x76 , /* seed */
0x87 , 0x56 , 0x15 , 0x17 , 0x58 , 0xBE , 0xE0 , 0xD9 , 0x5C , 0x15 ,
0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x02 , 0x01 ,
0x40 , 0x10 , 0x28 , 0x77 , 0x4D , 0x77 , 0x77 , 0xC7 , 0xB7 , 0x66 , /* a */
0x6D , 0x13 , 0x66 , 0xEA , 0x43 , 0x20 , 0x71 , 0x27 , 0x4F , 0x89 ,
0xFF , 0x01 , 0xE7 , 0x18 ,
0x06 , 0x20 , 0x04 , 0x8D , 0x28 , 0xBC , 0xBD , 0x03 , 0xB6 , 0x24 , /* b */
0x9C , 0x99 , 0x18 , 0x2B , 0x7C , 0x8C , 0xD1 , 0x97 , 0x00 , 0xC3 ,
0x62 , 0xC4 , 0x6A , 0x01 ,
0x38 , 0x09 , 0xB2 , 0xB7 , 0xCC , 0x1B , 0x28 , 0xCC , 0x5A , 0x87 , /* x */
0x92 , 0x6A , 0xAD , 0x83 , 0xFD , 0x28 , 0x78 , 0x9E , 0x81 , 0xE2 ,
0xC9 , 0xE3 , 0xBF , 0x10 ,
0x17 , 0x43 , 0x43 , 0x86 , 0x62 , 0x6D , 0x14 , 0xF3 , 0xDB , 0xF0 , /* y */
0x17 , 0x60 , 0xD9 , 0x21 , 0x3A , 0x3E , 0x1C , 0xF3 , 0x7A , 0xEC ,
0x43 , 0x7D , 0x66 , 0x8A ,
0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x50 , 0x50 , 0x8C , 0xB8 , 0x9F , 0x65 , 0x28 , 0x24 ,
0xE0 , 0x6B , 0x81 , 0x73 }
2002-08-15 09:21:31 +00:00
} ;
2002-02-13 17:22:59 +00:00
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 24 * 6 ] ; }
_EC_X9_62_CHAR2_191V3 = {
{ NID_X9_62_characteristic_two_field , 20 , 24 , 6 } ,
{ 0xE0 , 0x53 , 0x51 , 0x2D , 0xC6 , 0x84 , 0xD6 , 0x96 , 0xE6 , 0x76 , /* seed */
0x87 , 0x56 , 0x15 , 0x17 , 0x50 , 0x67 , 0xAE , 0x78 , 0x6D , 0x1F ,
0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x02 , 0x01 ,
0x6C , 0x01 , 0x07 , 0x47 , 0x56 , 0x09 , 0x91 , 0x22 , 0x22 , 0x10 , /* a */
0x56 , 0x91 , 0x1C , 0x77 , 0xD7 , 0x7E , 0x77 , 0xA7 , 0x77 , 0xE7 ,
0xE7 , 0xE7 , 0x7F , 0xCB ,
0x71 , 0xFE , 0x1A , 0xF9 , 0x26 , 0xCF , 0x84 , 0x79 , 0x89 , 0xEF , /* b */
0xEF , 0x8D , 0xB4 , 0x59 , 0xF6 , 0x63 , 0x94 , 0xD9 , 0x0F , 0x32 ,
0xAD , 0x3F , 0x15 , 0xE8 ,
0x37 , 0x5D , 0x4C , 0xE2 , 0x4F , 0xDE , 0x43 , 0x44 , 0x89 , 0xDE , /* x */
0x87 , 0x46 , 0xE7 , 0x17 , 0x86 , 0x01 , 0x50 , 0x09 , 0xE6 , 0x6E ,
0x38 , 0xA9 , 0x26 , 0xDD ,
0x54 , 0x5A , 0x39 , 0x17 , 0x61 , 0x96 , 0x57 , 0x5D , 0x98 , 0x59 , /* y */
0x99 , 0x36 , 0x6E , 0x6A , 0xD3 , 0x4C , 0xE0 , 0xA7 , 0x7C , 0xD7 ,
0x12 , 0x7B , 0x06 , 0xBE ,
0x15 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , /* order */
0x55 , 0x55 , 0x61 , 0x0C , 0x0B , 0x19 , 0x68 , 0x12 , 0xBF , 0xB6 ,
0x28 , 0x8A , 0x3E , 0xA3 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 27 * 6 ] ; }
_EC_X9_62_CHAR2_208W1 = {
{ NID_X9_62_characteristic_two_field , 0 , 27 , 0xFE48 } ,
{ /* no seed */
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x08 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x07 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0xC8 , 0x61 , 0x9E , 0xD4 , 0x5A , 0x62 , 0xE6 , 0x21 , 0x2E , /* b */
0x11 , 0x60 , 0x34 , 0x9E , 0x2B , 0xFA , 0x84 , 0x44 , 0x39 , 0xFA ,
0xFC , 0x2A , 0x3F , 0xD1 , 0x63 , 0x8F , 0x9E ,
0x00 , 0x89 , 0xFD , 0xFB , 0xE4 , 0xAB , 0xE1 , 0x93 , 0xDF , 0x95 , /* x */
0x59 , 0xEC , 0xF0 , 0x7A , 0xC0 , 0xCE , 0x78 , 0x55 , 0x4E , 0x27 ,
0x84 , 0xEB , 0x8C , 0x1E , 0xD1 , 0xA5 , 0x7A ,
0x00 , 0x0F , 0x55 , 0xB5 , 0x1A , 0x06 , 0xE7 , 0x8E , 0x9A , 0xC3 , /* y */
0x8A , 0x03 , 0x5F , 0xF5 , 0x20 , 0xD8 , 0xB0 , 0x17 , 0x81 , 0xBE ,
0xB1 , 0xA6 , 0xBB , 0x08 , 0x61 , 0x7D , 0xE3 ,
0x00 , 0x00 , 0x01 , 0x01 , 0xBA , 0xF9 , 0x5C , 0x97 , 0x23 , 0xC5 , /* order */
0x7B , 0x6C , 0x21 , 0xDA , 0x2E , 0xFF , 0x2D , 0x5E , 0xD5 , 0x88 ,
0xBD , 0xD5 , 0x71 , 0x7E , 0x21 , 0x2F , 0x9D }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 30 * 6 ] ; }
_EC_X9_62_CHAR2_239V1 = {
{ NID_X9_62_characteristic_two_field , 20 , 30 , 4 } ,
{ 0xD3 , 0x4B , 0x9A , 0x4D , 0x69 , 0x6E , 0x67 , 0x68 , 0x75 , 0x61 , /* seed */
0x51 , 0x75 , 0xCA , 0x71 , 0xB9 , 0x20 , 0xBF , 0xEF , 0xB0 , 0x5D ,
0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x10 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x32 , 0x01 , 0x08 , 0x57 , 0x07 , 0x7C , 0x54 , 0x31 , 0x12 , 0x3A , /* a */
0x46 , 0xB8 , 0x08 , 0x90 , 0x67 , 0x56 , 0xF5 , 0x43 , 0x42 , 0x3E ,
0x8D , 0x27 , 0x87 , 0x75 , 0x78 , 0x12 , 0x57 , 0x78 , 0xAC , 0x76 ,
0x79 , 0x04 , 0x08 , 0xF2 , 0xEE , 0xDA , 0xF3 , 0x92 , 0xB0 , 0x12 , /* b */
0xED , 0xEF , 0xB3 , 0x39 , 0x2F , 0x30 , 0xF4 , 0x32 , 0x7C , 0x0C ,
0xA3 , 0xF3 , 0x1F , 0xC3 , 0x83 , 0xC4 , 0x22 , 0xAA , 0x8C , 0x16 ,
0x57 , 0x92 , 0x70 , 0x98 , 0xFA , 0x93 , 0x2E , 0x7C , 0x0A , 0x96 , /* x */
0xD3 , 0xFD , 0x5B , 0x70 , 0x6E , 0xF7 , 0xE5 , 0xF5 , 0xC1 , 0x56 ,
0xE1 , 0x6B , 0x7E , 0x7C , 0x86 , 0x03 , 0x85 , 0x52 , 0xE9 , 0x1D ,
0x61 , 0xD8 , 0xEE , 0x50 , 0x77 , 0xC3 , 0x3F , 0xEC , 0xF6 , 0xF1 , /* y */
0xA1 , 0x6B , 0x26 , 0x8D , 0xE4 , 0x69 , 0xC3 , 0xC7 , 0x74 , 0x4E ,
0xA9 , 0xA9 , 0x71 , 0x64 , 0x9F , 0xC7 , 0xA9 , 0x61 , 0x63 , 0x05 ,
0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* order */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x0F , 0x4D , 0x42 , 0xFF , 0xE1 ,
0x49 , 0x2A , 0x49 , 0x93 , 0xF1 , 0xCA , 0xD6 , 0x66 , 0xE4 , 0x47 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 30 * 6 ] ; }
_EC_X9_62_CHAR2_239V2 = {
{ NID_X9_62_characteristic_two_field , 20 , 30 , 6 } ,
{ 0x2A , 0xA6 , 0x98 , 0x2F , 0xDF , 0xA4 , 0xD6 , 0x96 , 0xE6 , 0x76 , /* seed */
0x87 , 0x56 , 0x15 , 0x17 , 0x5D , 0x26 , 0x67 , 0x27 , 0x27 , 0x7D ,
0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x10 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x42 , 0x30 , 0x01 , 0x77 , 0x57 , 0xA7 , 0x67 , 0xFA , 0xE4 , 0x23 , /* a */
0x98 , 0x56 , 0x9B , 0x74 , 0x63 , 0x25 , 0xD4 , 0x53 , 0x13 , 0xAF ,
0x07 , 0x66 , 0x26 , 0x64 , 0x79 , 0xB7 , 0x56 , 0x54 , 0xE6 , 0x5F ,
0x50 , 0x37 , 0xEA , 0x65 , 0x41 , 0x96 , 0xCF , 0xF0 , 0xCD , 0x82 , /* b */
0xB2 , 0xC1 , 0x4A , 0x2F , 0xCF , 0x2E , 0x3F , 0xF8 , 0x77 , 0x52 ,
0x85 , 0xB5 , 0x45 , 0x72 , 0x2F , 0x03 , 0xEA , 0xCD , 0xB7 , 0x4B ,
0x28 , 0xF9 , 0xD0 , 0x4E , 0x90 , 0x00 , 0x69 , 0xC8 , 0xDC , 0x47 , /* x */
0xA0 , 0x85 , 0x34 , 0xFE , 0x76 , 0xD2 , 0xB9 , 0x00 , 0xB7 , 0xD7 ,
0xEF , 0x31 , 0xF5 , 0x70 , 0x9F , 0x20 , 0x0C , 0x4C , 0xA2 , 0x05 ,
0x56 , 0x67 , 0x33 , 0x4C , 0x45 , 0xAF , 0xF3 , 0xB5 , 0xA0 , 0x3B , /* y */
0xAD , 0x9D , 0xD7 , 0x5E , 0x2C , 0x71 , 0xA9 , 0x93 , 0x62 , 0x56 ,
0x7D , 0x54 , 0x53 , 0xF7 , 0xFA , 0x6E , 0x22 , 0x7E , 0xC8 , 0x33 ,
0x15 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , 0x55 , /* order */
0x55 , 0x55 , 0x55 , 0x55 , 0x55 , 0x3C , 0x6F , 0x28 , 0x85 , 0x25 ,
0x9C , 0x31 , 0xE3 , 0xFC , 0xDF , 0x15 , 0x46 , 0x24 , 0x52 , 0x2D }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 30 * 6 ] ; }
_EC_X9_62_CHAR2_239V3 = {
{ NID_X9_62_characteristic_two_field , 20 , 30 , 0xA } ,
{ 0x9E , 0x07 , 0x6F , 0x4D , 0x69 , 0x6E , 0x67 , 0x68 , 0x75 , 0x61 , /* seed */
0x51 , 0x75 , 0xE1 , 0x1E , 0x9F , 0xDD , 0x77 , 0xF9 , 0x20 , 0x41 ,
0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x10 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x01 , 0x23 , 0x87 , 0x74 , 0x66 , 0x6A , 0x67 , 0x76 , 0x6D , 0x66 , /* a */
0x76 , 0xF7 , 0x78 , 0xE6 , 0x76 , 0xB6 , 0x69 , 0x99 , 0x17 , 0x66 ,
0x66 , 0xE6 , 0x87 , 0x66 , 0x6D , 0x87 , 0x66 , 0xC6 , 0x6A , 0x9F ,
0x6A , 0x94 , 0x19 , 0x77 , 0xBA , 0x9F , 0x6A , 0x43 , 0x51 , 0x99 , /* b */
0xAC , 0xFC , 0x51 , 0x06 , 0x7E , 0xD5 , 0x87 , 0xF5 , 0x19 , 0xC5 ,
0xEC , 0xB5 , 0x41 , 0xB8 , 0xE4 , 0x41 , 0x11 , 0xDE , 0x1D , 0x40 ,
0x70 , 0xF6 , 0xE9 , 0xD0 , 0x4D , 0x28 , 0x9C , 0x4E , 0x89 , 0x91 , /* x */
0x3C , 0xE3 , 0x53 , 0x0B , 0xFD , 0xE9 , 0x03 , 0x97 , 0x7D , 0x42 ,
0xB1 , 0x46 , 0xD5 , 0x39 , 0xBF , 0x1B , 0xDE , 0x4E , 0x9C , 0x92 ,
0x2E , 0x5A , 0x0E , 0xAF , 0x6E , 0x5E , 0x13 , 0x05 , 0xB9 , 0x00 , /* y */
0x4D , 0xCE , 0x5C , 0x0E , 0xD7 , 0xFE , 0x59 , 0xA3 , 0x56 , 0x08 ,
0xF3 , 0x38 , 0x37 , 0xC8 , 0x16 , 0xD8 , 0x0B , 0x79 , 0xF4 , 0x61 ,
0x0C , 0xCC , 0xCC , 0xCC , 0xCC , 0xCC , 0xCC , 0xCC , 0xCC , 0xCC , /* order */
0xCC , 0xCC , 0xCC , 0xCC , 0xCC , 0xAC , 0x49 , 0x12 , 0xD2 , 0xD9 ,
0xDF , 0x90 , 0x3E , 0xF9 , 0x88 , 0x8B , 0x8A , 0x0E , 0x4C , 0xFF }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 35 * 6 ] ; }
_EC_X9_62_CHAR2_272W1 = {
{ NID_X9_62_characteristic_two_field , 0 , 35 , 0xFF06 } ,
{ /* no seed */
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x0B ,
0x00 , 0x91 , 0xA0 , 0x91 , 0xF0 , 0x3B , 0x5F , 0xBA , 0x4A , 0xB2 , /* a */
0xCC , 0xF4 , 0x9C , 0x4E , 0xDD , 0x22 , 0x0F , 0xB0 , 0x28 , 0x71 ,
0x2D , 0x42 , 0xBE , 0x75 , 0x2B , 0x2C , 0x40 , 0x09 , 0x4D , 0xBA ,
0xCD , 0xB5 , 0x86 , 0xFB , 0x20 ,
0x00 , 0x71 , 0x67 , 0xEF , 0xC9 , 0x2B , 0xB2 , 0xE3 , 0xCE , 0x7C , /* b */
0x8A , 0xAA , 0xFF , 0x34 , 0xE1 , 0x2A , 0x9C , 0x55 , 0x70 , 0x03 ,
0xD7 , 0xC7 , 0x3A , 0x6F , 0xAF , 0x00 , 0x3F , 0x99 , 0xF6 , 0xCC ,
0x84 , 0x82 , 0xE5 , 0x40 , 0xF7 ,
0x00 , 0x61 , 0x08 , 0xBA , 0xBB , 0x2C , 0xEE , 0xBC , 0xF7 , 0x87 , /* x */
0x05 , 0x8A , 0x05 , 0x6C , 0xBE , 0x0C , 0xFE , 0x62 , 0x2D , 0x77 ,
0x23 , 0xA2 , 0x89 , 0xE0 , 0x8A , 0x07 , 0xAE , 0x13 , 0xEF , 0x0D ,
0x10 , 0xD1 , 0x71 , 0xDD , 0x8D ,
0x00 , 0x10 , 0xC7 , 0x69 , 0x57 , 0x16 , 0x85 , 0x1E , 0xEF , 0x6B , /* y */
0xA7 , 0xF6 , 0x87 , 0x2E , 0x61 , 0x42 , 0xFB , 0xD2 , 0x41 , 0xB8 ,
0x30 , 0xFF , 0x5E , 0xFC , 0xAC , 0xEC , 0xCA , 0xB0 , 0x5E , 0x02 ,
0x00 , 0x5D , 0xDE , 0x9D , 0x23 ,
0x00 , 0x00 , 0x01 , 0x00 , 0xFA , 0xF5 , 0x13 , 0x54 , 0xE0 , 0xE3 , /* order */
0x9E , 0x48 , 0x92 , 0xDF , 0x6E , 0x31 , 0x9C , 0x72 , 0xC8 , 0x16 ,
0x16 , 0x03 , 0xFA , 0x45 , 0xAA , 0x7B , 0x99 , 0x8A , 0x16 , 0x7B ,
0x8F , 0x1E , 0x62 , 0x95 , 0x21 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 39 * 6 ] ; }
_EC_X9_62_CHAR2_304W1 = {
{ NID_X9_62_characteristic_two_field , 0 , 39 , 0xFE2E } ,
{ /* no seed */
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x08 , 0x07 ,
0x00 , 0xFD , 0x0D , 0x69 , 0x31 , 0x49 , 0xA1 , 0x18 , 0xF6 , 0x51 , /* a */
0xE6 , 0xDC , 0xE6 , 0x80 , 0x20 , 0x85 , 0x37 , 0x7E , 0x5F , 0x88 ,
0x2D , 0x1B , 0x51 , 0x0B , 0x44 , 0x16 , 0x00 , 0x74 , 0xC1 , 0x28 ,
0x80 , 0x78 , 0x36 , 0x5A , 0x03 , 0x96 , 0xC8 , 0xE6 , 0x81 ,
0x00 , 0xBD , 0xDB , 0x97 , 0xE5 , 0x55 , 0xA5 , 0x0A , 0x90 , 0x8E , /* b */
0x43 , 0xB0 , 0x1C , 0x79 , 0x8E , 0xA5 , 0xDA , 0xA6 , 0x78 , 0x8F ,
0x1E , 0xA2 , 0x79 , 0x4E , 0xFC , 0xF5 , 0x71 , 0x66 , 0xB8 , 0xC1 ,
0x40 , 0x39 , 0x60 , 0x1E , 0x55 , 0x82 , 0x73 , 0x40 , 0xBE ,
0x00 , 0x19 , 0x7B , 0x07 , 0x84 , 0x5E , 0x9B , 0xE2 , 0xD9 , 0x6A , /* x */
0xDB , 0x0F , 0x5F , 0x3C , 0x7F , 0x2C , 0xFF , 0xBD , 0x7A , 0x3E ,
0xB8 , 0xB6 , 0xFE , 0xC3 , 0x5C , 0x7F , 0xD6 , 0x7F , 0x26 , 0xDD ,
0xF6 , 0x28 , 0x5A , 0x64 , 0x4F , 0x74 , 0x0A , 0x26 , 0x14 ,
0x00 , 0xE1 , 0x9F , 0xBE , 0xB7 , 0x6E , 0x0D , 0xA1 , 0x71 , 0x51 , /* y */
0x7E , 0xCF , 0x40 , 0x1B , 0x50 , 0x28 , 0x9B , 0xF0 , 0x14 , 0x10 ,
0x32 , 0x88 , 0x52 , 0x7A , 0x9B , 0x41 , 0x6A , 0x10 , 0x5E , 0x80 ,
0x26 , 0x0B , 0x54 , 0x9F , 0xDC , 0x1B , 0x92 , 0xC0 , 0x3B ,
0x00 , 0x00 , 0x01 , 0x01 , 0xD5 , 0x56 , 0x57 , 0x2A , 0xAB , 0xAC , /* order */
0x80 , 0x01 , 0x01 , 0xD5 , 0x56 , 0x57 , 0x2A , 0xAB , 0xAC , 0x80 ,
0x01 , 0x02 , 0x2D , 0x5C , 0x91 , 0xDD , 0x17 , 0x3F , 0x8F , 0xB5 ,
0x61 , 0xDA , 0x68 , 0x99 , 0x16 , 0x44 , 0x43 , 0x05 , 0x1D }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 20 + 45 * 6 ] ; }
_EC_X9_62_CHAR2_359V1 = {
{ NID_X9_62_characteristic_two_field , 20 , 45 , 0x4C } ,
{ 0x2B , 0x35 , 0x49 , 0x20 , 0xB7 , 0x24 , 0xD6 , 0x96 , 0xE6 , 0x76 , /* seed */
0x87 , 0x56 , 0x15 , 0x17 , 0x58 , 0x5B , 0xA1 , 0x33 , 0x2D , 0xC6 ,
0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x10 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x56 , 0x67 , 0x67 , 0x6A , 0x65 , 0x4B , 0x20 , 0x75 , 0x4F , 0x35 , /* a */
0x6E , 0xA9 , 0x20 , 0x17 , 0xD9 , 0x46 , 0x56 , 0x7C , 0x46 , 0x67 ,
0x55 , 0x56 , 0xF1 , 0x95 , 0x56 , 0xA0 , 0x46 , 0x16 , 0xB5 , 0x67 ,
0xD2 , 0x23 , 0xA5 , 0xE0 , 0x56 , 0x56 , 0xFB , 0x54 , 0x90 , 0x16 ,
0xA9 , 0x66 , 0x56 , 0xA5 , 0x57 ,
0x24 , 0x72 , 0xE2 , 0xD0 , 0x19 , 0x7C , 0x49 , 0x36 , 0x3F , 0x1F , /* b */
0xE7 , 0xF5 , 0xB6 , 0xDB , 0x07 , 0x5D , 0x52 , 0xB6 , 0x94 , 0x7D ,
0x13 , 0x5D , 0x8C , 0xA4 , 0x45 , 0x80 , 0x5D , 0x39 , 0xBC , 0x34 ,
0x56 , 0x26 , 0x08 , 0x96 , 0x87 , 0x74 , 0x2B , 0x63 , 0x29 , 0xE7 ,
0x06 , 0x80 , 0x23 , 0x19 , 0x88 ,
0x3C , 0x25 , 0x8E , 0xF3 , 0x04 , 0x77 , 0x67 , 0xE7 , 0xED , 0xE0 , /* x */
0xF1 , 0xFD , 0xAA , 0x79 , 0xDA , 0xEE , 0x38 , 0x41 , 0x36 , 0x6A ,
0x13 , 0x2E , 0x16 , 0x3A , 0xCE , 0xD4 , 0xED , 0x24 , 0x01 , 0xDF ,
0x9C , 0x6B , 0xDC , 0xDE , 0x98 , 0xE8 , 0xE7 , 0x07 , 0xC0 , 0x7A ,
0x22 , 0x39 , 0xB1 , 0xB0 , 0x97 ,
0x53 , 0xD7 , 0xE0 , 0x85 , 0x29 , 0x54 , 0x70 , 0x48 , 0x12 , 0x1E , /* y */
0x9C , 0x95 , 0xF3 , 0x79 , 0x1D , 0xD8 , 0x04 , 0x96 , 0x39 , 0x48 ,
0xF3 , 0x4F , 0xAE , 0x7B , 0xF4 , 0x4E , 0xA8 , 0x23 , 0x65 , 0xDC ,
0x78 , 0x68 , 0xFE , 0x57 , 0xE4 , 0xAE , 0x2D , 0xE2 , 0x11 , 0x30 ,
0x5A , 0x40 , 0x71 , 0x04 , 0xBD ,
0x01 , 0xAF , 0x28 , 0x6B , 0xCA , 0x1A , 0xF2 , 0x86 , 0xBC , 0xA1 , /* order */
0xAF , 0x28 , 0x6B , 0xCA , 0x1A , 0xF2 , 0x86 , 0xBC , 0xA1 , 0xAF ,
0x28 , 0x6B , 0xC9 , 0xFB , 0x8F , 0x6B , 0x85 , 0xC5 , 0x56 , 0x89 ,
0x2C , 0x20 , 0xA7 , 0xEB , 0x96 , 0x4F , 0xE7 , 0x71 , 0x9E , 0x74 ,
0xF4 , 0x90 , 0x75 , 0x8D , 0x3B }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 47 * 6 ] ; }
_EC_X9_62_CHAR2_368W1 = {
{ NID_X9_62_characteristic_two_field , 0 , 47 , 0xFF70 } ,
{ /* no seed */
0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x07 ,
0x00 , 0xE0 , 0xD2 , 0xEE , 0x25 , 0x09 , 0x52 , 0x06 , 0xF5 , 0xE2 , /* a */
0xA4 , 0xF9 , 0xED , 0x22 , 0x9F , 0x1F , 0x25 , 0x6E , 0x79 , 0xA0 ,
0xE2 , 0xB4 , 0x55 , 0x97 , 0x0D , 0x8D , 0x0D , 0x86 , 0x5B , 0xD9 ,
0x47 , 0x78 , 0xC5 , 0x76 , 0xD6 , 0x2F , 0x0A , 0xB7 , 0x51 , 0x9C ,
0xCD , 0x2A , 0x1A , 0x90 , 0x6A , 0xE3 , 0x0D ,
0x00 , 0xFC , 0x12 , 0x17 , 0xD4 , 0x32 , 0x0A , 0x90 , 0x45 , 0x2C , /* b */
0x76 , 0x0A , 0x58 , 0xED , 0xCD , 0x30 , 0xC8 , 0xDD , 0x06 , 0x9B ,
0x3C , 0x34 , 0x45 , 0x38 , 0x37 , 0xA3 , 0x4E , 0xD5 , 0x0C , 0xB5 ,
0x49 , 0x17 , 0xE1 , 0xC2 , 0x11 , 0x2D , 0x84 , 0xD1 , 0x64 , 0xF4 ,
0x44 , 0xF8 , 0xF7 , 0x47 , 0x86 , 0x04 , 0x6A ,
0x00 , 0x10 , 0x85 , 0xE2 , 0x75 , 0x53 , 0x81 , 0xDC , 0xCC , 0xE3 , /* x */
0xC1 , 0x55 , 0x7A , 0xFA , 0x10 , 0xC2 , 0xF0 , 0xC0 , 0xC2 , 0x82 ,
0x56 , 0x46 , 0xC5 , 0xB3 , 0x4A , 0x39 , 0x4C , 0xBC , 0xFA , 0x8B ,
0xC1 , 0x6B , 0x22 , 0xE7 , 0xE7 , 0x89 , 0xE9 , 0x27 , 0xBE , 0x21 ,
0x6F , 0x02 , 0xE1 , 0xFB , 0x13 , 0x6A , 0x5F ,
0x00 , 0x7B , 0x3E , 0xB1 , 0xBD , 0xDC , 0xBA , 0x62 , 0xD5 , 0xD8 , /* y */
0xB2 , 0x05 , 0x9B , 0x52 , 0x57 , 0x97 , 0xFC , 0x73 , 0x82 , 0x2C ,
0x59 , 0x05 , 0x9C , 0x62 , 0x3A , 0x45 , 0xFF , 0x38 , 0x43 , 0xCE ,
0xE8 , 0xF8 , 0x7C , 0xD1 , 0x85 , 0x5A , 0xDA , 0xA8 , 0x1E , 0x2A ,
0x07 , 0x50 , 0xB8 , 0x0F , 0xDA , 0x23 , 0x10 ,
0x00 , 0x00 , 0x01 , 0x00 , 0x90 , 0x51 , 0x2D , 0xA9 , 0xAF , 0x72 , /* order */
0xB0 , 0x83 , 0x49 , 0xD9 , 0x8A , 0x5D , 0xD4 , 0xC7 , 0xB0 , 0x53 ,
0x2E , 0xCA , 0x51 , 0xCE , 0x03 , 0xE2 , 0xD1 , 0x0F , 0x3B , 0x7A ,
0xC5 , 0x79 , 0xBD , 0x87 , 0xE9 , 0x09 , 0xAE , 0x40 , 0xA6 , 0xF1 ,
0x31 , 0xE9 , 0xCF , 0xCE , 0x5B , 0xD9 , 0x67 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 54 * 6 ] ; }
_EC_X9_62_CHAR2_431R1 = {
{ NID_X9_62_characteristic_two_field , 0 , 54 , 0x2760 } ,
{ /* no seed */
0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x01 ,
0x1A , 0x82 , 0x7E , 0xF0 , 0x0D , 0xD6 , 0xFC , 0x0E , 0x23 , 0x4C , /* a */
0xAF , 0x04 , 0x6C , 0x6A , 0x5D , 0x8A , 0x85 , 0x39 , 0x5B , 0x23 ,
0x6C , 0xC4 , 0xAD , 0x2C , 0xF3 , 0x2A , 0x0C , 0xAD , 0xBD , 0xC9 ,
0xDD , 0xF6 , 0x20 , 0xB0 , 0xEB , 0x99 , 0x06 , 0xD0 , 0x95 , 0x7F ,
0x6C , 0x6F , 0xEA , 0xCD , 0x61 , 0x54 , 0x68 , 0xDF , 0x10 , 0x4D ,
0xE2 , 0x96 , 0xCD , 0x8F ,
0x10 , 0xD9 , 0xB4 , 0xA3 , 0xD9 , 0x04 , 0x7D , 0x8B , 0x15 , 0x43 , /* b */
0x59 , 0xAB , 0xFB , 0x1B , 0x7F , 0x54 , 0x85 , 0xB0 , 0x4C , 0xEB ,
0x86 , 0x82 , 0x37 , 0xDD , 0xC9 , 0xDE , 0xDA , 0x98 , 0x2A , 0x67 ,
0x9A , 0x5A , 0x91 , 0x9B , 0x62 , 0x6D , 0x4E , 0x50 , 0xA8 , 0xDD ,
0x73 , 0x1B , 0x10 , 0x7A , 0x99 , 0x62 , 0x38 , 0x1F , 0xB5 , 0xD8 ,
0x07 , 0xBF , 0x26 , 0x18 ,
0x12 , 0x0F , 0xC0 , 0x5D , 0x3C , 0x67 , 0xA9 , 0x9D , 0xE1 , 0x61 , /* x */
0xD2 , 0xF4 , 0x09 , 0x26 , 0x22 , 0xFE , 0xCA , 0x70 , 0x1B , 0xE4 ,
0xF5 , 0x0F , 0x47 , 0x58 , 0x71 , 0x4E , 0x8A , 0x87 , 0xBB , 0xF2 ,
0xA6 , 0x58 , 0xEF , 0x8C , 0x21 , 0xE7 , 0xC5 , 0xEF , 0xE9 , 0x65 ,
0x36 , 0x1F , 0x6C , 0x29 , 0x99 , 0xC0 , 0xC2 , 0x47 , 0xB0 , 0xDB ,
0xD7 , 0x0C , 0xE6 , 0xB7 ,
0x20 , 0xD0 , 0xAF , 0x89 , 0x03 , 0xA9 , 0x6F , 0x8D , 0x5F , 0xA2 , /* y */
0xC2 , 0x55 , 0x74 , 0x5D , 0x3C , 0x45 , 0x1B , 0x30 , 0x2C , 0x93 ,
0x46 , 0xD9 , 0xB7 , 0xE4 , 0x85 , 0xE7 , 0xBC , 0xE4 , 0x1F , 0x6B ,
0x59 , 0x1F , 0x3E , 0x8F , 0x6A , 0xDD , 0xCB , 0xB0 , 0xBC , 0x4C ,
0x2F , 0x94 , 0x7A , 0x7D , 0xE1 , 0xA8 , 0x9B , 0x62 , 0x5D , 0x6A ,
0x59 , 0x8B , 0x37 , 0x60 ,
0x00 , 0x03 , 0x40 , 0x34 , 0x03 , 0x40 , 0x34 , 0x03 , 0x40 , 0x34 , /* order */
0x03 , 0x40 , 0x34 , 0x03 , 0x40 , 0x34 , 0x03 , 0x40 , 0x34 , 0x03 ,
0x40 , 0x34 , 0x03 , 0x40 , 0x34 , 0x03 , 0x40 , 0x34 , 0x03 , 0x23 ,
0xC3 , 0x13 , 0xFA , 0xB5 , 0x05 , 0x89 , 0x70 , 0x3B , 0x5E , 0xC6 ,
0x8D , 0x35 , 0x87 , 0xFE , 0xC6 , 0x0D , 0x16 , 0x1C , 0xC1 , 0x49 ,
0xC1 , 0xAD , 0x4A , 0x91 }
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 15 * 6 ] ; }
_EC_WTLS_1 = {
{ NID_X9_62_characteristic_two_field , 0 , 15 , 2 } ,
{ /* no seed */
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x02 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x01 , 0x66 , 0x79 , 0x79 , 0xA4 , 0x0B , 0xA4 , 0x97 , 0xE5 , 0xD5 , /* x */
0xC2 , 0x70 , 0x78 , 0x06 , 0x17 ,
0x00 , 0xF4 , 0x4B , 0x4A , 0xF1 , 0xEC , 0xC2 , 0x63 , 0x0E , 0x08 , /* y */
0x78 , 0x5C , 0xEB , 0xCC , 0x15 ,
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFD , 0xBF , /* order */
0x91 , 0xAF , 0x6D , 0xEA , 0x73 }
2002-08-15 09:21:31 +00:00
} ;
2003-11-29 09:25:59 +00:00
/* IPSec curves */
2004-03-25 03:03:52 +00:00
/* NOTE: The of curves over a extension field of non prime degree
* is not recommended ( Weil - descent ) .
* As the group order is not a prime this curve is not suitable
* for ECDSA .
*/
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 20 * 6 ] ; }
_EC_IPSEC_155_ID3 = {
{ NID_X9_62_characteristic_two_field , 0 , 20 , 3 } ,
{ /* no seed */
0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x40 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x07 , 0x33 , 0x8f ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* x */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x7b ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* y */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0xc8 ,
0x02 , 0xAA , 0xAA , 0xAA , 0xAA , 0xAA , 0xAA , 0xAA , 0xAA , 0xAA , /* order */
0xC7 , 0xF3 , 0xC7 , 0x88 , 0x1B , 0xD0 , 0x86 , 0x8F , 0xA8 , 0x6C }
2003-11-29 09:25:59 +00:00
} ;
2004-03-25 03:03:52 +00:00
/* NOTE: The of curves over a extension field of non prime degree
* is not recommended ( Weil - descent ) .
* As the group order is not a prime this curve is not suitable
* for ECDSA .
*/
2007-08-31 09:36:43 +00:00
static const struct { EC_CURVE_DATA h ; unsigned char data [ 0 + 24 * 6 ] ; }
_EC_IPSEC_185_ID4 = {
{ NID_X9_62_characteristic_two_field , 0 , 24 , 2 } ,
{ /* no seed */
0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* p */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x01 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* a */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* b */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x1e , 0xe9 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* x */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x18 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , /* y */
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x0d ,
0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /* order */
0xFF , 0xFF , 0xED , 0xF9 , 0x7C , 0x44 , 0xDB , 0x9F , 0x24 , 0x20 ,
0xBA , 0xFC , 0xA7 , 0x5E }
2003-11-29 09:25:59 +00:00
} ;
2002-08-15 09:21:31 +00:00
typedef struct _ec_list_element_st {
int nid ;
const EC_CURVE_DATA * data ;
2007-08-31 09:36:43 +00:00
const char * comment ;
2002-08-15 09:21:31 +00:00
} ec_list_element ;
static const ec_list_element curve_list [ ] = {
/* prime field curves */
/* secg curves */
2007-08-31 09:36:43 +00:00
{ NID_secp112r1 , & _EC_SECG_PRIME_112R1 . h , " SECG/WTLS curve over a 112 bit prime field " } ,
{ NID_secp112r2 , & _EC_SECG_PRIME_112R2 . h , " SECG curve over a 112 bit prime field " } ,
{ NID_secp128r1 , & _EC_SECG_PRIME_128R1 . h , " SECG curve over a 128 bit prime field " } ,
{ NID_secp128r2 , & _EC_SECG_PRIME_128R2 . h , " SECG curve over a 128 bit prime field " } ,
{ NID_secp160k1 , & _EC_SECG_PRIME_160K1 . h , " SECG curve over a 160 bit prime field " } ,
{ NID_secp160r1 , & _EC_SECG_PRIME_160R1 . h , " SECG curve over a 160 bit prime field " } ,
{ NID_secp160r2 , & _EC_SECG_PRIME_160R2 . h , " SECG/WTLS curve over a 160 bit prime field " } ,
2003-01-16 16:05:23 +00:00
/* SECG secp192r1 is the same as X9.62 prime192v1 and hence omitted */
2007-08-31 09:36:43 +00:00
{ NID_secp192k1 , & _EC_SECG_PRIME_192K1 . h , " SECG curve over a 192 bit prime field " } ,
{ NID_secp224k1 , & _EC_SECG_PRIME_224K1 . h , " SECG curve over a 224 bit prime field " } ,
{ NID_secp224r1 , & _EC_NIST_PRIME_224 . h , " NIST/SECG curve over a 224 bit prime field " } ,
{ NID_secp256k1 , & _EC_SECG_PRIME_256K1 . h , " SECG curve over a 256 bit prime field " } ,
2003-01-16 16:05:23 +00:00
/* SECG secp256r1 is the same as X9.62 prime256v1 and hence omitted */
2007-08-31 09:36:43 +00:00
{ NID_secp384r1 , & _EC_NIST_PRIME_384 . h , " NIST/SECG curve over a 384 bit prime field " } ,
{ NID_secp521r1 , & _EC_NIST_PRIME_521 . h , " NIST/SECG curve over a 521 bit prime field " } ,
2002-08-15 09:21:31 +00:00
/* X9.62 curves */
2007-08-31 09:36:43 +00:00
{ NID_X9_62_prime192v1 , & _EC_NIST_PRIME_192 . h , " NIST/X9.62/SECG curve over a 192 bit prime field " } ,
{ NID_X9_62_prime192v2 , & _EC_X9_62_PRIME_192V2 . h , " X9.62 curve over a 192 bit prime field " } ,
{ NID_X9_62_prime192v3 , & _EC_X9_62_PRIME_192V3 . h , " X9.62 curve over a 192 bit prime field " } ,
{ NID_X9_62_prime239v1 , & _EC_X9_62_PRIME_239V1 . h , " X9.62 curve over a 239 bit prime field " } ,
{ NID_X9_62_prime239v2 , & _EC_X9_62_PRIME_239V2 . h , " X9.62 curve over a 239 bit prime field " } ,
{ NID_X9_62_prime239v3 , & _EC_X9_62_PRIME_239V3 . h , " X9.62 curve over a 239 bit prime field " } ,
{ NID_X9_62_prime256v1 , & _EC_X9_62_PRIME_256V1 . h , " X9.62/SECG curve over a 256 bit prime field " } ,
2002-08-15 09:21:31 +00:00
/* characteristic two field curves */
2004-07-06 15:50:04 +00:00
/* NIST/SECG curves */
2007-08-31 09:36:43 +00:00
{ NID_sect113r1 , & _EC_SECG_CHAR2_113R1 . h , " SECG curve over a 113 bit binary field " } ,
{ NID_sect113r2 , & _EC_SECG_CHAR2_113R2 . h , " SECG curve over a 113 bit binary field " } ,
{ NID_sect131r1 , & _EC_SECG_CHAR2_131R1 . h , " SECG/WTLS curve over a 131 bit binary field " } ,
{ NID_sect131r2 , & _EC_SECG_CHAR2_131R2 . h , " SECG curve over a 131 bit binary field " } ,
{ NID_sect163k1 , & _EC_NIST_CHAR2_163K . h , " NIST/SECG/WTLS curve over a 163 bit binary field " } ,
{ NID_sect163r1 , & _EC_SECG_CHAR2_163R1 . h , " SECG curve over a 163 bit binary field " } ,
{ NID_sect163r2 , & _EC_NIST_CHAR2_163B . h , " NIST/SECG curve over a 163 bit binary field " } ,
{ NID_sect193r1 , & _EC_SECG_CHAR2_193R1 . h , " SECG curve over a 193 bit binary field " } ,
{ NID_sect193r2 , & _EC_SECG_CHAR2_193R2 . h , " SECG curve over a 193 bit binary field " } ,
{ NID_sect233k1 , & _EC_NIST_CHAR2_233K . h , " NIST/SECG/WTLS curve over a 233 bit binary field " } ,
{ NID_sect233r1 , & _EC_NIST_CHAR2_233B . h , " NIST/SECG/WTLS curve over a 233 bit binary field " } ,
{ NID_sect239k1 , & _EC_SECG_CHAR2_239K1 . h , " SECG curve over a 239 bit binary field " } ,
{ NID_sect283k1 , & _EC_NIST_CHAR2_283K . h , " NIST/SECG curve over a 283 bit binary field " } ,
{ NID_sect283r1 , & _EC_NIST_CHAR2_283B . h , " NIST/SECG curve over a 283 bit binary field " } ,
{ NID_sect409k1 , & _EC_NIST_CHAR2_409K . h , " NIST/SECG curve over a 409 bit binary field " } ,
{ NID_sect409r1 , & _EC_NIST_CHAR2_409B . h , " NIST/SECG curve over a 409 bit binary field " } ,
{ NID_sect571k1 , & _EC_NIST_CHAR2_571K . h , " NIST/SECG curve over a 571 bit binary field " } ,
{ NID_sect571r1 , & _EC_NIST_CHAR2_571B . h , " NIST/SECG curve over a 571 bit binary field " } ,
2002-08-15 09:21:31 +00:00
/* X9.62 curves */
2007-08-31 09:36:43 +00:00
{ NID_X9_62_c2pnb163v1 , & _EC_X9_62_CHAR2_163V1 . h , " X9.62 curve over a 163 bit binary field " } ,
{ NID_X9_62_c2pnb163v2 , & _EC_X9_62_CHAR2_163V2 . h , " X9.62 curve over a 163 bit binary field " } ,
{ NID_X9_62_c2pnb163v3 , & _EC_X9_62_CHAR2_163V3 . h , " X9.62 curve over a 163 bit binary field " } ,
{ NID_X9_62_c2pnb176v1 , & _EC_X9_62_CHAR2_176V1 . h , " X9.62 curve over a 176 bit binary field " } ,
{ NID_X9_62_c2tnb191v1 , & _EC_X9_62_CHAR2_191V1 . h , " X9.62 curve over a 191 bit binary field " } ,
{ NID_X9_62_c2tnb191v2 , & _EC_X9_62_CHAR2_191V2 . h , " X9.62 curve over a 191 bit binary field " } ,
{ NID_X9_62_c2tnb191v3 , & _EC_X9_62_CHAR2_191V3 . h , " X9.62 curve over a 191 bit binary field " } ,
{ NID_X9_62_c2pnb208w1 , & _EC_X9_62_CHAR2_208W1 . h , " X9.62 curve over a 208 bit binary field " } ,
{ NID_X9_62_c2tnb239v1 , & _EC_X9_62_CHAR2_239V1 . h , " X9.62 curve over a 239 bit binary field " } ,
{ NID_X9_62_c2tnb239v2 , & _EC_X9_62_CHAR2_239V2 . h , " X9.62 curve over a 239 bit binary field " } ,
{ NID_X9_62_c2tnb239v3 , & _EC_X9_62_CHAR2_239V3 . h , " X9.62 curve over a 239 bit binary field " } ,
{ NID_X9_62_c2pnb272w1 , & _EC_X9_62_CHAR2_272W1 . h , " X9.62 curve over a 272 bit binary field " } ,
{ NID_X9_62_c2pnb304w1 , & _EC_X9_62_CHAR2_304W1 . h , " X9.62 curve over a 304 bit binary field " } ,
{ NID_X9_62_c2tnb359v1 , & _EC_X9_62_CHAR2_359V1 . h , " X9.62 curve over a 359 bit binary field " } ,
{ NID_X9_62_c2pnb368w1 , & _EC_X9_62_CHAR2_368W1 . h , " X9.62 curve over a 368 bit binary field " } ,
{ NID_X9_62_c2tnb431r1 , & _EC_X9_62_CHAR2_431R1 . h , " X9.62 curve over a 431 bit binary field " } ,
2005-12-13 05:46:33 +00:00
/* the WAP/WTLS curves
* [ unlike SECG , spec has its own OIDs for curves from X9 .62 ] */
2007-08-31 09:36:43 +00:00
{ NID_wap_wsg_idm_ecid_wtls1 , & _EC_WTLS_1 . h , " WTLS curve over a 113 bit binary field " } ,
{ NID_wap_wsg_idm_ecid_wtls3 , & _EC_NIST_CHAR2_163K . h , " NIST/SECG/WTLS curve over a 163 bit binary field " } ,
{ NID_wap_wsg_idm_ecid_wtls4 , & _EC_SECG_CHAR2_113R1 . h , " SECG curve over a 113 bit binary field " } ,
{ NID_wap_wsg_idm_ecid_wtls5 , & _EC_X9_62_CHAR2_163V1 . h , " X9.62 curve over a 163 bit binary field " } ,
{ NID_wap_wsg_idm_ecid_wtls6 , & _EC_SECG_PRIME_112R1 . h , " SECG/WTLS curve over a 112 bit prime field " } ,
{ NID_wap_wsg_idm_ecid_wtls7 , & _EC_SECG_PRIME_160R2 . h , " SECG/WTLS curve over a 160 bit prime field " } ,
{ NID_wap_wsg_idm_ecid_wtls8 , & _EC_WTLS_8 . h , " WTLS curve over a 112 bit prime field " } ,
{ NID_wap_wsg_idm_ecid_wtls9 , & _EC_WTLS_9 . h , " WTLS curve over a 160 bit prime field " } ,
{ NID_wap_wsg_idm_ecid_wtls10 , & _EC_NIST_CHAR2_233K . h , " NIST/SECG/WTLS curve over a 233 bit binary field " } ,
{ NID_wap_wsg_idm_ecid_wtls11 , & _EC_NIST_CHAR2_233B . h , " NIST/SECG/WTLS curve over a 233 bit binary field " } ,
{ NID_wap_wsg_idm_ecid_wtls12 , & _EC_WTLS_12 . h , " WTLS curvs over a 224 bit prime field " } ,
2003-11-29 09:25:59 +00:00
/* IPSec curves */
2007-08-31 09:36:43 +00:00
{ NID_ipsec3 , & _EC_IPSEC_155_ID3 . h , " \n \t IPSec/IKE/Oakley curve #3 over a 155 bit binary field. \n " " \t Not suitable for ECDSA. \n \t Questionable extension field! " } ,
{ NID_ipsec4 , & _EC_IPSEC_185_ID4 . h , " \n \t IPSec/IKE/Oakley curve #4 over a 185 bit binary field. \n " " \t Not suitable for ECDSA. \n \t Questionable extension field! " } ,
2002-08-15 09:21:31 +00:00
} ;
2007-08-31 09:36:43 +00:00
# define curve_list_length (sizeof(curve_list) / sizeof(ec_list_element))
2002-08-15 09:21:31 +00:00
static EC_GROUP * ec_group_new_from_data ( const EC_CURVE_DATA * data )
2002-08-02 13:42:24 +00:00
{
EC_GROUP * group = NULL ;
EC_POINT * P = NULL ;
BN_CTX * ctx = NULL ;
2002-08-15 09:21:31 +00:00
BIGNUM * p = NULL , * a = NULL , * b = NULL , * x = NULL , * y = NULL , * order = NULL ;
2002-08-02 13:42:24 +00:00
int ok = 0 ;
2007-08-31 09:36:43 +00:00
int seed_len , param_len ;
const unsigned char * params ;
2002-08-02 13:42:24 +00:00
2002-08-15 09:21:31 +00:00
if ( ( ctx = BN_CTX_new ( ) ) = = NULL )
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_MALLOC_FAILURE ) ;
goto err ;
}
2007-08-31 09:36:43 +00:00
seed_len = data - > seed_len ;
param_len = data - > param_len ;
params = ( const unsigned char * ) ( data + 1 ) ; /* skip header */
params + = seed_len ; /* skip seed */
if ( ! ( p = BN_bin2bn ( params + 0 * param_len , param_len , NULL ) )
| | ! ( a = BN_bin2bn ( params + 1 * param_len , param_len , NULL ) )
| | ! ( b = BN_bin2bn ( params + 2 * param_len , param_len , NULL ) ) )
2002-08-15 09:21:31 +00:00
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_BN_LIB ) ;
goto err ;
}
2002-08-02 13:42:24 +00:00
2002-08-15 09:21:31 +00:00
if ( data - > field_type = = NID_X9_62_prime_field )
{
if ( ( group = EC_GROUP_new_curve_GFp ( p , a , b , ctx ) ) = = NULL )
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_EC_LIB ) ;
goto err ;
}
}
2007-08-31 09:36:43 +00:00
else /* field_type == NID_X9_62_characteristic_two_field */
{
2002-08-15 09:21:31 +00:00
if ( ( group = EC_GROUP_new_curve_GF2m ( p , a , b , ctx ) ) = = NULL )
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_EC_LIB ) ;
goto err ;
}
}
if ( ( P = EC_POINT_new ( group ) ) = = NULL )
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_EC_LIB ) ;
goto err ;
}
2002-08-02 13:42:24 +00:00
2007-08-31 09:36:43 +00:00
if ( ! ( x = BN_bin2bn ( params + 3 * param_len , param_len , NULL ) )
| | ! ( y = BN_bin2bn ( params + 4 * param_len , param_len , NULL ) ) )
2002-08-15 09:21:31 +00:00
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_BN_LIB ) ;
goto err ;
}
if ( ! EC_POINT_set_affine_coordinates_GF2m ( group , P , x , y , ctx ) )
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_EC_LIB ) ;
goto err ;
}
2007-08-31 09:36:43 +00:00
if ( ! ( order = BN_bin2bn ( params + 5 * param_len , param_len , NULL ) )
| | ! BN_set_word ( x , ( BN_ULONG ) data - > cofactor ) )
2002-08-15 09:21:31 +00:00
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_BN_LIB ) ;
goto err ;
}
if ( ! EC_GROUP_set_generator ( group , P , order , x ) )
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_EC_LIB ) ;
goto err ;
}
2007-08-31 09:36:43 +00:00
if ( seed_len )
2002-08-15 09:21:31 +00:00
{
2007-08-31 09:36:43 +00:00
if ( ! EC_GROUP_set_seed ( group , params - seed_len , seed_len ) )
2002-08-15 09:21:31 +00:00
{
ECerr ( EC_F_EC_GROUP_NEW_FROM_DATA , ERR_R_EC_LIB ) ;
goto err ;
}
}
2002-08-02 13:42:24 +00:00
ok = 1 ;
err :
if ( ! ok )
{
EC_GROUP_free ( group ) ;
group = NULL ;
}
2002-08-15 09:21:31 +00:00
if ( P )
EC_POINT_free ( P ) ;
if ( ctx )
BN_CTX_free ( ctx ) ;
if ( p )
BN_free ( p ) ;
if ( a )
BN_free ( a ) ;
if ( b )
BN_free ( b ) ;
if ( order )
BN_free ( order ) ;
if ( x )
BN_free ( x ) ;
if ( y )
BN_free ( y ) ;
return group ;
2002-08-02 13:42:24 +00:00
}
2005-05-10 11:37:47 +00:00
EC_GROUP * EC_GROUP_new_by_curve_name ( int nid )
2002-02-13 17:22:59 +00:00
{
2002-08-15 09:21:31 +00:00
size_t i ;
2002-02-13 17:22:59 +00:00
EC_GROUP * ret = NULL ;
2002-08-15 09:21:31 +00:00
if ( nid < = 0 )
2002-02-13 17:22:59 +00:00
return NULL ;
2002-08-15 09:21:31 +00:00
for ( i = 0 ; i < curve_list_length ; i + + )
if ( curve_list [ i ] . nid = = nid )
{
ret = ec_group_new_from_data ( curve_list [ i ] . data ) ;
break ;
}
2002-02-13 17:57:52 +00:00
2002-03-07 12:14:03 +00:00
if ( ret = = NULL )
2002-02-13 17:57:52 +00:00
{
2005-05-10 11:37:47 +00:00
ECerr ( EC_F_EC_GROUP_NEW_BY_CURVE_NAME , EC_R_UNKNOWN_GROUP ) ;
2002-03-07 12:14:03 +00:00
return NULL ;
2002-02-13 17:57:52 +00:00
}
2002-08-15 09:21:31 +00:00
2005-05-08 22:09:12 +00:00
EC_GROUP_set_curve_name ( ret , nid ) ;
2002-08-15 09:21:31 +00:00
2002-03-07 12:14:03 +00:00
return ret ;
2002-02-13 17:57:52 +00:00
}
2002-09-02 07:08:33 +00:00
size_t EC_get_builtin_curves ( EC_builtin_curve * r , size_t nitems )
2002-08-15 09:21:31 +00:00
{
2002-09-02 07:08:33 +00:00
size_t i , min ;
2002-02-13 17:57:52 +00:00
2002-09-02 07:08:33 +00:00
if ( r = = NULL | | nitems = = 0 )
return curve_list_length ;
2002-08-15 09:21:31 +00:00
2002-09-02 07:08:33 +00:00
min = nitems < curve_list_length ? nitems : curve_list_length ;
for ( i = 0 ; i < min ; i + + )
{
r [ i ] . nid = curve_list [ i ] . nid ;
2007-08-31 09:36:43 +00:00
r [ i ] . comment = curve_list [ i ] . comment ;
2002-09-02 07:08:33 +00:00
}
return curve_list_length ;
2002-02-13 17:57:52 +00:00
}