1160814Ssimon/* crypto/ec/ec_curve.c */ 2160814Ssimon/* 3160814Ssimon * Written by Nils Larsch for the OpenSSL project. 4160814Ssimon */ 5160814Ssimon/* ==================================================================== 6238405Sjkim * Copyright (c) 1998-2010 The OpenSSL Project. All rights reserved. 7160814Ssimon * 8160814Ssimon * Redistribution and use in source and binary forms, with or without 9160814Ssimon * modification, are permitted provided that the following conditions 10160814Ssimon * are met: 11160814Ssimon * 12160814Ssimon * 1. Redistributions of source code must retain the above copyright 13280304Sjkim * notice, this list of conditions and the following disclaimer. 14160814Ssimon * 15160814Ssimon * 2. Redistributions in binary form must reproduce the above copyright 16160814Ssimon * notice, this list of conditions and the following disclaimer in 17160814Ssimon * the documentation and/or other materials provided with the 18160814Ssimon * distribution. 19160814Ssimon * 20160814Ssimon * 3. All advertising materials mentioning features or use of this 21160814Ssimon * software must display the following acknowledgment: 22160814Ssimon * "This product includes software developed by the OpenSSL Project 23160814Ssimon * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 24160814Ssimon * 25160814Ssimon * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26160814Ssimon * endorse or promote products derived from this software without 27160814Ssimon * prior written permission. For written permission, please contact 28160814Ssimon * openssl-core@openssl.org. 29160814Ssimon * 30160814Ssimon * 5. Products derived from this software may not be called "OpenSSL" 31160814Ssimon * nor may "OpenSSL" appear in their names without prior written 32160814Ssimon * permission of the OpenSSL Project. 33160814Ssimon * 34160814Ssimon * 6. Redistributions of any form whatsoever must retain the following 35160814Ssimon * acknowledgment: 36160814Ssimon * "This product includes software developed by the OpenSSL Project 37160814Ssimon * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 38160814Ssimon * 39160814Ssimon * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40160814Ssimon * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41160814Ssimon * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42160814Ssimon * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43160814Ssimon * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44160814Ssimon * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45160814Ssimon * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46160814Ssimon * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47160814Ssimon * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48160814Ssimon * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49160814Ssimon * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50160814Ssimon * OF THE POSSIBILITY OF SUCH DAMAGE. 51160814Ssimon * ==================================================================== 52160814Ssimon * 53160814Ssimon * This product includes cryptographic software written by Eric Young 54160814Ssimon * (eay@cryptsoft.com). This product includes software written by Tim 55160814Ssimon * Hudson (tjh@cryptsoft.com). 56160814Ssimon * 57160814Ssimon */ 58160814Ssimon/* ==================================================================== 59160814Ssimon * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 60160814Ssimon * 61280304Sjkim * Portions of the attached software ("Contribution") are developed by 62160814Ssimon * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. 63160814Ssimon * 64160814Ssimon * The Contribution is licensed pursuant to the OpenSSL open source 65160814Ssimon * license provided above. 66160814Ssimon * 67280304Sjkim * The elliptic curve binary polynomial software is originally written by 68160814Ssimon * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. 69160814Ssimon * 70160814Ssimon */ 71160814Ssimon 72160814Ssimon#include "ec_lcl.h" 73160814Ssimon#include <openssl/err.h> 74160814Ssimon#include <openssl/obj_mac.h> 75238405Sjkim#include <openssl/opensslconf.h> 76160814Ssimon 77238405Sjkimtypedef struct { 78280304Sjkim int field_type, /* either NID_X9_62_prime_field or 79280304Sjkim * NID_X9_62_characteristic_two_field */ 80280304Sjkim seed_len, param_len; 81280304Sjkim unsigned int cofactor; /* promoted to BN_ULONG */ 82160814Ssimon} EC_CURVE_DATA; 83160814Ssimon 84160814Ssimon/* the nist prime curves */ 85280304Sjkimstatic const struct { 86280304Sjkim EC_CURVE_DATA h; 87280304Sjkim unsigned char data[20 + 24 * 6]; 88280304Sjkim} _EC_NIST_PRIME_192 = { 89280304Sjkim { 90280304Sjkim NID_X9_62_prime_field, 20, 24, 1 91280304Sjkim }, 92280304Sjkim { 93280304Sjkim /* seed */ 94280304Sjkim 0x30, 0x45, 0xAE, 0x6F, 0xC8, 0x42, 0x2F, 0x64, 0xED, 0x57, 0x95, 0x28, 95280304Sjkim 0xD3, 0x81, 0x20, 0xEA, 0xE1, 0x21, 0x96, 0xD5, 96280304Sjkim /* p */ 97280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 98280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 99280304Sjkim /* a */ 100280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 101280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 102280304Sjkim /* b */ 103280304Sjkim 0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C, 0x80, 0xE7, 0x0F, 0xA7, 0xE9, 0xAB, 104280304Sjkim 0x72, 0x24, 0x30, 0x49, 0xFE, 0xB8, 0xDE, 0xEC, 0xC1, 0x46, 0xB9, 0xB1, 105280304Sjkim /* x */ 106280304Sjkim 0x18, 0x8D, 0xA8, 0x0E, 0xB0, 0x30, 0x90, 0xF6, 0x7C, 0xBF, 0x20, 0xEB, 107280304Sjkim 0x43, 0xA1, 0x88, 0x00, 0xF4, 0xFF, 0x0A, 0xFD, 0x82, 0xFF, 0x10, 0x12, 108280304Sjkim /* y */ 109280304Sjkim 0x07, 0x19, 0x2b, 0x95, 0xff, 0xc8, 0xda, 0x78, 0x63, 0x10, 0x11, 0xed, 110280304Sjkim 0x6b, 0x24, 0xcd, 0xd5, 0x73, 0xf9, 0x77, 0xa1, 0x1e, 0x79, 0x48, 0x11, 111280304Sjkim /* order */ 112280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 113280304Sjkim 0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B, 0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31 114280304Sjkim } 115280304Sjkim}; 116238405Sjkim 117280304Sjkimstatic const struct { 118280304Sjkim EC_CURVE_DATA h; 119280304Sjkim unsigned char data[20 + 28 * 6]; 120280304Sjkim} _EC_NIST_PRIME_224 = { 121280304Sjkim { 122280304Sjkim NID_X9_62_prime_field, 20, 28, 1 123280304Sjkim }, 124280304Sjkim { 125280304Sjkim /* seed */ 126280304Sjkim 0xBD, 0x71, 0x34, 0x47, 0x99, 0xD5, 0xC7, 0xFC, 0xDC, 0x45, 0xB5, 0x9F, 127280304Sjkim 0xA3, 0xB9, 0xAB, 0x8F, 0x6A, 0x94, 0x8B, 0xC5, 128280304Sjkim /* p */ 129280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 130280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 131280304Sjkim 0x00, 0x00, 0x00, 0x01, 132280304Sjkim /* a */ 133280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 134280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 135280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 136280304Sjkim /* b */ 137280304Sjkim 0xB4, 0x05, 0x0A, 0x85, 0x0C, 0x04, 0xB3, 0xAB, 0xF5, 0x41, 0x32, 0x56, 138280304Sjkim 0x50, 0x44, 0xB0, 0xB7, 0xD7, 0xBF, 0xD8, 0xBA, 0x27, 0x0B, 0x39, 0x43, 139280304Sjkim 0x23, 0x55, 0xFF, 0xB4, 140280304Sjkim /* x */ 141280304Sjkim 0xB7, 0x0E, 0x0C, 0xBD, 0x6B, 0xB4, 0xBF, 0x7F, 0x32, 0x13, 0x90, 0xB9, 142280304Sjkim 0x4A, 0x03, 0xC1, 0xD3, 0x56, 0xC2, 0x11, 0x22, 0x34, 0x32, 0x80, 0xD6, 143280304Sjkim 0x11, 0x5C, 0x1D, 0x21, 144280304Sjkim /* y */ 145280304Sjkim 0xbd, 0x37, 0x63, 0x88, 0xb5, 0xf7, 0x23, 0xfb, 0x4c, 0x22, 0xdf, 0xe6, 146280304Sjkim 0xcd, 0x43, 0x75, 0xa0, 0x5a, 0x07, 0x47, 0x64, 0x44, 0xd5, 0x81, 0x99, 147280304Sjkim 0x85, 0x00, 0x7e, 0x34, 148280304Sjkim /* order */ 149280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 150280304Sjkim 0xFF, 0xFF, 0x16, 0xA2, 0xE0, 0xB8, 0xF0, 0x3E, 0x13, 0xDD, 0x29, 0x45, 151280304Sjkim 0x5C, 0x5C, 0x2A, 0x3D 152280304Sjkim } 153280304Sjkim}; 154160814Ssimon 155280304Sjkimstatic const struct { 156280304Sjkim EC_CURVE_DATA h; 157280304Sjkim unsigned char data[20 + 48 * 6]; 158280304Sjkim} _EC_NIST_PRIME_384 = { 159280304Sjkim { 160280304Sjkim NID_X9_62_prime_field, 20, 48, 1 161280304Sjkim }, 162280304Sjkim { 163280304Sjkim /* seed */ 164280304Sjkim 0xA3, 0x35, 0x92, 0x6A, 0xA3, 0x19, 0xA2, 0x7A, 0x1D, 0x00, 0x89, 0x6A, 165280304Sjkim 0x67, 0x73, 0xA4, 0x82, 0x7A, 0xCD, 0xAC, 0x73, 166280304Sjkim /* p */ 167280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 168280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 169280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 170280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 171280304Sjkim /* a */ 172280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 173280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 174280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 175280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 176280304Sjkim /* b */ 177280304Sjkim 0xB3, 0x31, 0x2F, 0xA7, 0xE2, 0x3E, 0xE7, 0xE4, 0x98, 0x8E, 0x05, 0x6B, 178280304Sjkim 0xE3, 0xF8, 0x2D, 0x19, 0x18, 0x1D, 0x9C, 0x6E, 0xFE, 0x81, 0x41, 0x12, 179280304Sjkim 0x03, 0x14, 0x08, 0x8F, 0x50, 0x13, 0x87, 0x5A, 0xC6, 0x56, 0x39, 0x8D, 180280304Sjkim 0x8A, 0x2E, 0xD1, 0x9D, 0x2A, 0x85, 0xC8, 0xED, 0xD3, 0xEC, 0x2A, 0xEF, 181280304Sjkim /* x */ 182280304Sjkim 0xAA, 0x87, 0xCA, 0x22, 0xBE, 0x8B, 0x05, 0x37, 0x8E, 0xB1, 0xC7, 0x1E, 183280304Sjkim 0xF3, 0x20, 0xAD, 0x74, 0x6E, 0x1D, 0x3B, 0x62, 0x8B, 0xA7, 0x9B, 0x98, 184280304Sjkim 0x59, 0xF7, 0x41, 0xE0, 0x82, 0x54, 0x2A, 0x38, 0x55, 0x02, 0xF2, 0x5D, 185280304Sjkim 0xBF, 0x55, 0x29, 0x6C, 0x3A, 0x54, 0x5E, 0x38, 0x72, 0x76, 0x0A, 0xB7, 186280304Sjkim /* y */ 187280304Sjkim 0x36, 0x17, 0xde, 0x4a, 0x96, 0x26, 0x2c, 0x6f, 0x5d, 0x9e, 0x98, 0xbf, 188280304Sjkim 0x92, 0x92, 0xdc, 0x29, 0xf8, 0xf4, 0x1d, 0xbd, 0x28, 0x9a, 0x14, 0x7c, 189280304Sjkim 0xe9, 0xda, 0x31, 0x13, 0xb5, 0xf0, 0xb8, 0xc0, 0x0a, 0x60, 0xb1, 0xce, 190280304Sjkim 0x1d, 0x7e, 0x81, 0x9d, 0x7a, 0x43, 0x1d, 0x7c, 0x90, 0xea, 0x0e, 0x5f, 191280304Sjkim /* order */ 192280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 193280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 194280304Sjkim 0xC7, 0x63, 0x4D, 0x81, 0xF4, 0x37, 0x2D, 0xDF, 0x58, 0x1A, 0x0D, 0xB2, 195280304Sjkim 0x48, 0xB0, 0xA7, 0x7A, 0xEC, 0xEC, 0x19, 0x6A, 0xCC, 0xC5, 0x29, 0x73 196280304Sjkim } 197280304Sjkim}; 198238405Sjkim 199280304Sjkimstatic const struct { 200280304Sjkim EC_CURVE_DATA h; 201280304Sjkim unsigned char data[20 + 66 * 6]; 202280304Sjkim} _EC_NIST_PRIME_521 = { 203280304Sjkim { 204280304Sjkim NID_X9_62_prime_field, 20, 66, 1 205280304Sjkim }, 206280304Sjkim { 207280304Sjkim /* seed */ 208280304Sjkim 0xD0, 0x9E, 0x88, 0x00, 0x29, 0x1C, 0xB8, 0x53, 0x96, 0xCC, 0x67, 0x17, 209280304Sjkim 0x39, 0x32, 0x84, 0xAA, 0xA0, 0xDA, 0x64, 0xBA, 210280304Sjkim /* p */ 211280304Sjkim 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 212280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 213280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 214280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 215280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 216280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 217280304Sjkim /* a */ 218280304Sjkim 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 219280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 220280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 221280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 222280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 223280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 224280304Sjkim /* b */ 225280304Sjkim 0x00, 0x51, 0x95, 0x3E, 0xB9, 0x61, 0x8E, 0x1C, 0x9A, 0x1F, 0x92, 0x9A, 226280304Sjkim 0x21, 0xA0, 0xB6, 0x85, 0x40, 0xEE, 0xA2, 0xDA, 0x72, 0x5B, 0x99, 0xB3, 227280304Sjkim 0x15, 0xF3, 0xB8, 0xB4, 0x89, 0x91, 0x8E, 0xF1, 0x09, 0xE1, 0x56, 0x19, 228280304Sjkim 0x39, 0x51, 0xEC, 0x7E, 0x93, 0x7B, 0x16, 0x52, 0xC0, 0xBD, 0x3B, 0xB1, 229280304Sjkim 0xBF, 0x07, 0x35, 0x73, 0xDF, 0x88, 0x3D, 0x2C, 0x34, 0xF1, 0xEF, 0x45, 230280304Sjkim 0x1F, 0xD4, 0x6B, 0x50, 0x3F, 0x00, 231280304Sjkim /* x */ 232280304Sjkim 0x00, 0xC6, 0x85, 0x8E, 0x06, 0xB7, 0x04, 0x04, 0xE9, 0xCD, 0x9E, 0x3E, 233280304Sjkim 0xCB, 0x66, 0x23, 0x95, 0xB4, 0x42, 0x9C, 0x64, 0x81, 0x39, 0x05, 0x3F, 234280304Sjkim 0xB5, 0x21, 0xF8, 0x28, 0xAF, 0x60, 0x6B, 0x4D, 0x3D, 0xBA, 0xA1, 0x4B, 235280304Sjkim 0x5E, 0x77, 0xEF, 0xE7, 0x59, 0x28, 0xFE, 0x1D, 0xC1, 0x27, 0xA2, 0xFF, 236280304Sjkim 0xA8, 0xDE, 0x33, 0x48, 0xB3, 0xC1, 0x85, 0x6A, 0x42, 0x9B, 0xF9, 0x7E, 237280304Sjkim 0x7E, 0x31, 0xC2, 0xE5, 0xBD, 0x66, 238280304Sjkim /* y */ 239280304Sjkim 0x01, 0x18, 0x39, 0x29, 0x6a, 0x78, 0x9a, 0x3b, 0xc0, 0x04, 0x5c, 0x8a, 240280304Sjkim 0x5f, 0xb4, 0x2c, 0x7d, 0x1b, 0xd9, 0x98, 0xf5, 0x44, 0x49, 0x57, 0x9b, 241280304Sjkim 0x44, 0x68, 0x17, 0xaf, 0xbd, 0x17, 0x27, 0x3e, 0x66, 0x2c, 0x97, 0xee, 242280304Sjkim 0x72, 0x99, 0x5e, 0xf4, 0x26, 0x40, 0xc5, 0x50, 0xb9, 0x01, 0x3f, 0xad, 243280304Sjkim 0x07, 0x61, 0x35, 0x3c, 0x70, 0x86, 0xa2, 0x72, 0xc2, 0x40, 0x88, 0xbe, 244280304Sjkim 0x94, 0x76, 0x9f, 0xd1, 0x66, 0x50, 245280304Sjkim /* order */ 246280304Sjkim 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 247280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 248280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x51, 0x86, 249280304Sjkim 0x87, 0x83, 0xBF, 0x2F, 0x96, 0x6B, 0x7F, 0xCC, 0x01, 0x48, 0xF7, 0x09, 250280304Sjkim 0xA5, 0xD0, 0x3B, 0xB5, 0xC9, 0xB8, 0x89, 0x9C, 0x47, 0xAE, 0xBB, 0x6F, 251280304Sjkim 0xB7, 0x1E, 0x91, 0x38, 0x64, 0x09 252280304Sjkim } 253280304Sjkim}; 254160814Ssimon 255160814Ssimon/* the x9.62 prime curves (minus the nist prime curves) */ 256280304Sjkimstatic const struct { 257280304Sjkim EC_CURVE_DATA h; 258280304Sjkim unsigned char data[20 + 24 * 6]; 259280304Sjkim} _EC_X9_62_PRIME_192V2 = { 260280304Sjkim { 261280304Sjkim NID_X9_62_prime_field, 20, 24, 1 262280304Sjkim }, 263280304Sjkim { 264280304Sjkim /* seed */ 265280304Sjkim 0x31, 0xA9, 0x2E, 0xE2, 0x02, 0x9F, 0xD1, 0x0D, 0x90, 0x1B, 0x11, 0x3E, 266280304Sjkim 0x99, 0x07, 0x10, 0xF0, 0xD2, 0x1A, 0xC6, 0xB6, 267280304Sjkim /* p */ 268280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 269280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 270280304Sjkim /* a */ 271280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 272280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 273280304Sjkim /* b */ 274280304Sjkim 0xCC, 0x22, 0xD6, 0xDF, 0xB9, 0x5C, 0x6B, 0x25, 0xE4, 0x9C, 0x0D, 0x63, 275280304Sjkim 0x64, 0xA4, 0xE5, 0x98, 0x0C, 0x39, 0x3A, 0xA2, 0x16, 0x68, 0xD9, 0x53, 276280304Sjkim /* x */ 277280304Sjkim 0xEE, 0xA2, 0xBA, 0xE7, 0xE1, 0x49, 0x78, 0x42, 0xF2, 0xDE, 0x77, 0x69, 278280304Sjkim 0xCF, 0xE9, 0xC9, 0x89, 0xC0, 0x72, 0xAD, 0x69, 0x6F, 0x48, 0x03, 0x4A, 279280304Sjkim /* y */ 280280304Sjkim 0x65, 0x74, 0xd1, 0x1d, 0x69, 0xb6, 0xec, 0x7a, 0x67, 0x2b, 0xb8, 0x2a, 281280304Sjkim 0x08, 0x3d, 0xf2, 0xf2, 0xb0, 0x84, 0x7d, 0xe9, 0x70, 0xb2, 0xde, 0x15, 282280304Sjkim /* order */ 283280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 284280304Sjkim 0x5F, 0xB1, 0xA7, 0x24, 0xDC, 0x80, 0x41, 0x86, 0x48, 0xD8, 0xDD, 0x31 285280304Sjkim } 286280304Sjkim}; 287238405Sjkim 288280304Sjkimstatic const struct { 289280304Sjkim EC_CURVE_DATA h; 290280304Sjkim unsigned char data[20 + 24 * 6]; 291280304Sjkim} _EC_X9_62_PRIME_192V3 = { 292280304Sjkim { 293280304Sjkim NID_X9_62_prime_field, 20, 24, 1 294280304Sjkim }, 295280304Sjkim { 296280304Sjkim /* seed */ 297280304Sjkim 0xC4, 0x69, 0x68, 0x44, 0x35, 0xDE, 0xB3, 0x78, 0xC4, 0xB6, 0x5C, 0xA9, 298280304Sjkim 0x59, 0x1E, 0x2A, 0x57, 0x63, 0x05, 0x9A, 0x2E, 299280304Sjkim /* p */ 300280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 301280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 302280304Sjkim /* a */ 303280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 304280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 305280304Sjkim /* b */ 306280304Sjkim 0x22, 0x12, 0x3D, 0xC2, 0x39, 0x5A, 0x05, 0xCA, 0xA7, 0x42, 0x3D, 0xAE, 307280304Sjkim 0xCC, 0xC9, 0x47, 0x60, 0xA7, 0xD4, 0x62, 0x25, 0x6B, 0xD5, 0x69, 0x16, 308280304Sjkim /* x */ 309280304Sjkim 0x7D, 0x29, 0x77, 0x81, 0x00, 0xC6, 0x5A, 0x1D, 0xA1, 0x78, 0x37, 0x16, 310280304Sjkim 0x58, 0x8D, 0xCE, 0x2B, 0x8B, 0x4A, 0xEE, 0x8E, 0x22, 0x8F, 0x18, 0x96, 311280304Sjkim /* y */ 312280304Sjkim 0x38, 0xa9, 0x0f, 0x22, 0x63, 0x73, 0x37, 0x33, 0x4b, 0x49, 0xdc, 0xb6, 313280304Sjkim 0x6a, 0x6d, 0xc8, 0xf9, 0x97, 0x8a, 0xca, 0x76, 0x48, 0xa9, 0x43, 0xb0, 314280304Sjkim /* order */ 315280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 316280304Sjkim 0x7A, 0x62, 0xD0, 0x31, 0xC8, 0x3F, 0x42, 0x94, 0xF6, 0x40, 0xEC, 0x13 317280304Sjkim } 318280304Sjkim}; 319160814Ssimon 320280304Sjkimstatic const struct { 321280304Sjkim EC_CURVE_DATA h; 322280304Sjkim unsigned char data[20 + 30 * 6]; 323280304Sjkim} _EC_X9_62_PRIME_239V1 = { 324280304Sjkim { 325280304Sjkim NID_X9_62_prime_field, 20, 30, 1 326280304Sjkim }, 327280304Sjkim { 328280304Sjkim /* seed */ 329280304Sjkim 0xE4, 0x3B, 0xB4, 0x60, 0xF0, 0xB8, 0x0C, 0xC0, 0xC0, 0xB0, 0x75, 0x79, 330280304Sjkim 0x8E, 0x94, 0x80, 0x60, 0xF8, 0x32, 0x1B, 0x7D, 331280304Sjkim /* p */ 332280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 333280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 334280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 335280304Sjkim /* a */ 336280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 337280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 338280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 339280304Sjkim /* b */ 340280304Sjkim 0x6B, 0x01, 0x6C, 0x3B, 0xDC, 0xF1, 0x89, 0x41, 0xD0, 0xD6, 0x54, 0x92, 341280304Sjkim 0x14, 0x75, 0xCA, 0x71, 0xA9, 0xDB, 0x2F, 0xB2, 0x7D, 0x1D, 0x37, 0x79, 342280304Sjkim 0x61, 0x85, 0xC2, 0x94, 0x2C, 0x0A, 343280304Sjkim /* x */ 344280304Sjkim 0x0F, 0xFA, 0x96, 0x3C, 0xDC, 0xA8, 0x81, 0x6C, 0xCC, 0x33, 0xB8, 0x64, 345280304Sjkim 0x2B, 0xED, 0xF9, 0x05, 0xC3, 0xD3, 0x58, 0x57, 0x3D, 0x3F, 0x27, 0xFB, 346280304Sjkim 0xBD, 0x3B, 0x3C, 0xB9, 0xAA, 0xAF, 347280304Sjkim /* y */ 348280304Sjkim 0x7d, 0xeb, 0xe8, 0xe4, 0xe9, 0x0a, 0x5d, 0xae, 0x6e, 0x40, 0x54, 0xca, 349280304Sjkim 0x53, 0x0b, 0xa0, 0x46, 0x54, 0xb3, 0x68, 0x18, 0xce, 0x22, 0x6b, 0x39, 350280304Sjkim 0xfc, 0xcb, 0x7b, 0x02, 0xf1, 0xae, 351280304Sjkim /* order */ 352280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 353280304Sjkim 0x7F, 0xFF, 0xFF, 0x9E, 0x5E, 0x9A, 0x9F, 0x5D, 0x90, 0x71, 0xFB, 0xD1, 354280304Sjkim 0x52, 0x26, 0x88, 0x90, 0x9D, 0x0B 355280304Sjkim } 356280304Sjkim}; 357238405Sjkim 358280304Sjkimstatic const struct { 359280304Sjkim EC_CURVE_DATA h; 360280304Sjkim unsigned char data[20 + 30 * 6]; 361280304Sjkim} _EC_X9_62_PRIME_239V2 = { 362280304Sjkim { 363280304Sjkim NID_X9_62_prime_field, 20, 30, 1 364280304Sjkim }, 365280304Sjkim { 366280304Sjkim /* seed */ 367280304Sjkim 0xE8, 0xB4, 0x01, 0x16, 0x04, 0x09, 0x53, 0x03, 0xCA, 0x3B, 0x80, 0x99, 368280304Sjkim 0x98, 0x2B, 0xE0, 0x9F, 0xCB, 0x9A, 0xE6, 0x16, 369280304Sjkim /* p */ 370280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 371280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 372280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 373280304Sjkim /* a */ 374280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 375280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 376280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 377280304Sjkim /* b */ 378280304Sjkim 0x61, 0x7F, 0xAB, 0x68, 0x32, 0x57, 0x6C, 0xBB, 0xFE, 0xD5, 0x0D, 0x99, 379280304Sjkim 0xF0, 0x24, 0x9C, 0x3F, 0xEE, 0x58, 0xB9, 0x4B, 0xA0, 0x03, 0x8C, 0x7A, 380280304Sjkim 0xE8, 0x4C, 0x8C, 0x83, 0x2F, 0x2C, 381280304Sjkim /* x */ 382280304Sjkim 0x38, 0xAF, 0x09, 0xD9, 0x87, 0x27, 0x70, 0x51, 0x20, 0xC9, 0x21, 0xBB, 383280304Sjkim 0x5E, 0x9E, 0x26, 0x29, 0x6A, 0x3C, 0xDC, 0xF2, 0xF3, 0x57, 0x57, 0xA0, 384280304Sjkim 0xEA, 0xFD, 0x87, 0xB8, 0x30, 0xE7, 385280304Sjkim /* y */ 386280304Sjkim 0x5b, 0x01, 0x25, 0xe4, 0xdb, 0xea, 0x0e, 0xc7, 0x20, 0x6d, 0xa0, 0xfc, 387280304Sjkim 0x01, 0xd9, 0xb0, 0x81, 0x32, 0x9f, 0xb5, 0x55, 0xde, 0x6e, 0xf4, 0x60, 388280304Sjkim 0x23, 0x7d, 0xff, 0x8b, 0xe4, 0xba, 389280304Sjkim /* order */ 390280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 391280304Sjkim 0x80, 0x00, 0x00, 0xCF, 0xA7, 0xE8, 0x59, 0x43, 0x77, 0xD4, 0x14, 0xC0, 392280304Sjkim 0x38, 0x21, 0xBC, 0x58, 0x20, 0x63 393280304Sjkim } 394280304Sjkim}; 395160814Ssimon 396280304Sjkimstatic const struct { 397280304Sjkim EC_CURVE_DATA h; 398280304Sjkim unsigned char data[20 + 30 * 6]; 399280304Sjkim} _EC_X9_62_PRIME_239V3 = { 400280304Sjkim { 401280304Sjkim NID_X9_62_prime_field, 20, 30, 1 402280304Sjkim }, 403280304Sjkim { 404280304Sjkim /* seed */ 405280304Sjkim 0x7D, 0x73, 0x74, 0x16, 0x8F, 0xFE, 0x34, 0x71, 0xB6, 0x0A, 0x85, 0x76, 406280304Sjkim 0x86, 0xA1, 0x94, 0x75, 0xD3, 0xBF, 0xA2, 0xFF, 407280304Sjkim /* p */ 408280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 409280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 410280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 411280304Sjkim /* a */ 412280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 413280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 414280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 415280304Sjkim /* b */ 416280304Sjkim 0x25, 0x57, 0x05, 0xFA, 0x2A, 0x30, 0x66, 0x54, 0xB1, 0xF4, 0xCB, 0x03, 417280304Sjkim 0xD6, 0xA7, 0x50, 0xA3, 0x0C, 0x25, 0x01, 0x02, 0xD4, 0x98, 0x87, 0x17, 418280304Sjkim 0xD9, 0xBA, 0x15, 0xAB, 0x6D, 0x3E, 419280304Sjkim /* x */ 420280304Sjkim 0x67, 0x68, 0xAE, 0x8E, 0x18, 0xBB, 0x92, 0xCF, 0xCF, 0x00, 0x5C, 0x94, 421280304Sjkim 0x9A, 0xA2, 0xC6, 0xD9, 0x48, 0x53, 0xD0, 0xE6, 0x60, 0xBB, 0xF8, 0x54, 422280304Sjkim 0xB1, 0xC9, 0x50, 0x5F, 0xE9, 0x5A, 423280304Sjkim /* y */ 424280304Sjkim 0x16, 0x07, 0xe6, 0x89, 0x8f, 0x39, 0x0c, 0x06, 0xbc, 0x1d, 0x55, 0x2b, 425280304Sjkim 0xad, 0x22, 0x6f, 0x3b, 0x6f, 0xcf, 0xe4, 0x8b, 0x6e, 0x81, 0x84, 0x99, 426280304Sjkim 0xaf, 0x18, 0xe3, 0xed, 0x6c, 0xf3, 427280304Sjkim /* order */ 428280304Sjkim 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 429280304Sjkim 0x7F, 0xFF, 0xFF, 0x97, 0x5D, 0xEB, 0x41, 0xB3, 0xA6, 0x05, 0x7C, 0x3C, 430280304Sjkim 0x43, 0x21, 0x46, 0x52, 0x65, 0x51 431280304Sjkim } 432280304Sjkim}; 433238405Sjkim 434280304Sjkimstatic const struct { 435280304Sjkim EC_CURVE_DATA h; 436280304Sjkim unsigned char data[20 + 32 * 6]; 437280304Sjkim} _EC_X9_62_PRIME_256V1 = { 438280304Sjkim { 439280304Sjkim NID_X9_62_prime_field, 20, 32, 1 440280304Sjkim }, 441280304Sjkim { 442280304Sjkim /* seed */ 443280304Sjkim 0xC4, 0x9D, 0x36, 0x08, 0x86, 0xE7, 0x04, 0x93, 0x6A, 0x66, 0x78, 0xE1, 444280304Sjkim 0x13, 0x9D, 0x26, 0xB7, 0x81, 0x9F, 0x7E, 0x90, 445280304Sjkim /* p */ 446280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 447280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 448280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 449280304Sjkim /* a */ 450280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 451280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 452280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 453280304Sjkim /* b */ 454280304Sjkim 0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93, 0xE7, 0xB3, 0xEB, 0xBD, 0x55, 455280304Sjkim 0x76, 0x98, 0x86, 0xBC, 0x65, 0x1D, 0x06, 0xB0, 0xCC, 0x53, 0xB0, 0xF6, 456280304Sjkim 0x3B, 0xCE, 0x3C, 0x3E, 0x27, 0xD2, 0x60, 0x4B, 457280304Sjkim /* x */ 458280304Sjkim 0x6B, 0x17, 0xD1, 0xF2, 0xE1, 0x2C, 0x42, 0x47, 0xF8, 0xBC, 0xE6, 0xE5, 459280304Sjkim 0x63, 0xA4, 0x40, 0xF2, 0x77, 0x03, 0x7D, 0x81, 0x2D, 0xEB, 0x33, 0xA0, 460280304Sjkim 0xF4, 0xA1, 0x39, 0x45, 0xD8, 0x98, 0xC2, 0x96, 461280304Sjkim /* y */ 462280304Sjkim 0x4f, 0xe3, 0x42, 0xe2, 0xfe, 0x1a, 0x7f, 0x9b, 0x8e, 0xe7, 0xeb, 0x4a, 463280304Sjkim 0x7c, 0x0f, 0x9e, 0x16, 0x2b, 0xce, 0x33, 0x57, 0x6b, 0x31, 0x5e, 0xce, 464280304Sjkim 0xcb, 0xb6, 0x40, 0x68, 0x37, 0xbf, 0x51, 0xf5, 465280304Sjkim /* order */ 466280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 467280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE6, 0xFA, 0xAD, 0xA7, 0x17, 0x9E, 0x84, 468280304Sjkim 0xF3, 0xB9, 0xCA, 0xC2, 0xFC, 0x63, 0x25, 0x51 469280304Sjkim } 470280304Sjkim}; 471238405Sjkim 472160814Ssimon/* the secg prime curves (minus the nist and x9.62 prime curves) */ 473280304Sjkimstatic const struct { 474280304Sjkim EC_CURVE_DATA h; 475280304Sjkim unsigned char data[20 + 14 * 6]; 476280304Sjkim} _EC_SECG_PRIME_112R1 = { 477280304Sjkim { 478280304Sjkim NID_X9_62_prime_field, 20, 14, 1 479280304Sjkim }, 480280304Sjkim { 481280304Sjkim /* seed */ 482280304Sjkim 0x00, 0xF5, 0x0B, 0x02, 0x8E, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 483280304Sjkim 0x51, 0x75, 0x29, 0x04, 0x72, 0x78, 0x3F, 0xB1, 484280304Sjkim /* p */ 485280304Sjkim 0xDB, 0x7C, 0x2A, 0xBF, 0x62, 0xE3, 0x5E, 0x66, 0x80, 0x76, 0xBE, 0xAD, 486280304Sjkim 0x20, 0x8B, 487280304Sjkim /* a */ 488280304Sjkim 0xDB, 0x7C, 0x2A, 0xBF, 0x62, 0xE3, 0x5E, 0x66, 0x80, 0x76, 0xBE, 0xAD, 489280304Sjkim 0x20, 0x88, 490280304Sjkim /* b */ 491280304Sjkim 0x65, 0x9E, 0xF8, 0xBA, 0x04, 0x39, 0x16, 0xEE, 0xDE, 0x89, 0x11, 0x70, 492280304Sjkim 0x2B, 0x22, 493280304Sjkim /* x */ 494280304Sjkim 0x09, 0x48, 0x72, 0x39, 0x99, 0x5A, 0x5E, 0xE7, 0x6B, 0x55, 0xF9, 0xC2, 495280304Sjkim 0xF0, 0x98, 496280304Sjkim /* y */ 497280304Sjkim 0xa8, 0x9c, 0xe5, 0xaf, 0x87, 0x24, 0xc0, 0xa2, 0x3e, 0x0e, 0x0f, 0xf7, 498280304Sjkim 0x75, 0x00, 499280304Sjkim /* order */ 500280304Sjkim 0xDB, 0x7C, 0x2A, 0xBF, 0x62, 0xE3, 0x5E, 0x76, 0x28, 0xDF, 0xAC, 0x65, 501280304Sjkim 0x61, 0xC5 502280304Sjkim } 503280304Sjkim}; 504238405Sjkim 505280304Sjkimstatic const struct { 506280304Sjkim EC_CURVE_DATA h; 507280304Sjkim unsigned char data[20 + 14 * 6]; 508280304Sjkim} _EC_SECG_PRIME_112R2 = { 509280304Sjkim { 510280304Sjkim NID_X9_62_prime_field, 20, 14, 4 511280304Sjkim }, 512280304Sjkim { 513280304Sjkim /* seed */ 514280304Sjkim 0x00, 0x27, 0x57, 0xA1, 0x11, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 515280304Sjkim 0x51, 0x75, 0x53, 0x16, 0xC0, 0x5E, 0x0B, 0xD4, 516280304Sjkim /* p */ 517280304Sjkim 0xDB, 0x7C, 0x2A, 0xBF, 0x62, 0xE3, 0x5E, 0x66, 0x80, 0x76, 0xBE, 0xAD, 518280304Sjkim 0x20, 0x8B, 519280304Sjkim /* a */ 520280304Sjkim 0x61, 0x27, 0xC2, 0x4C, 0x05, 0xF3, 0x8A, 0x0A, 0xAA, 0xF6, 0x5C, 0x0E, 521280304Sjkim 0xF0, 0x2C, 522280304Sjkim /* b */ 523280304Sjkim 0x51, 0xDE, 0xF1, 0x81, 0x5D, 0xB5, 0xED, 0x74, 0xFC, 0xC3, 0x4C, 0x85, 524280304Sjkim 0xD7, 0x09, 525280304Sjkim /* x */ 526280304Sjkim 0x4B, 0xA3, 0x0A, 0xB5, 0xE8, 0x92, 0xB4, 0xE1, 0x64, 0x9D, 0xD0, 0x92, 527280304Sjkim 0x86, 0x43, 528280304Sjkim /* y */ 529280304Sjkim 0xad, 0xcd, 0x46, 0xf5, 0x88, 0x2e, 0x37, 0x47, 0xde, 0xf3, 0x6e, 0x95, 530280304Sjkim 0x6e, 0x97, 531280304Sjkim /* order */ 532280304Sjkim 0x36, 0xDF, 0x0A, 0xAF, 0xD8, 0xB8, 0xD7, 0x59, 0x7C, 0xA1, 0x05, 0x20, 533280304Sjkim 0xD0, 0x4B 534280304Sjkim } 535280304Sjkim}; 536160814Ssimon 537280304Sjkimstatic const struct { 538280304Sjkim EC_CURVE_DATA h; 539280304Sjkim unsigned char data[20 + 16 * 6]; 540280304Sjkim} _EC_SECG_PRIME_128R1 = { 541280304Sjkim { 542280304Sjkim NID_X9_62_prime_field, 20, 16, 1 543280304Sjkim }, 544280304Sjkim { 545280304Sjkim /* seed */ 546280304Sjkim 0x00, 0x0E, 0x0D, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75, 547280304Sjkim 0x0C, 0xC0, 0x3A, 0x44, 0x73, 0xD0, 0x36, 0x79, 548280304Sjkim /* p */ 549280304Sjkim 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 550280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 551280304Sjkim /* a */ 552280304Sjkim 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 553280304Sjkim 0xFF, 0xFF, 0xFF, 0xFC, 554280304Sjkim /* b */ 555280304Sjkim 0xE8, 0x75, 0x79, 0xC1, 0x10, 0x79, 0xF4, 0x3D, 0xD8, 0x24, 0x99, 0x3C, 556280304Sjkim 0x2C, 0xEE, 0x5E, 0xD3, 557280304Sjkim /* x */ 558280304Sjkim 0x16, 0x1F, 0xF7, 0x52, 0x8B, 0x89, 0x9B, 0x2D, 0x0C, 0x28, 0x60, 0x7C, 559280304Sjkim 0xA5, 0x2C, 0x5B, 0x86, 560280304Sjkim /* y */ 561280304Sjkim 0xcf, 0x5a, 0xc8, 0x39, 0x5b, 0xaf, 0xeb, 0x13, 0xc0, 0x2d, 0xa2, 0x92, 562280304Sjkim 0xdd, 0xed, 0x7a, 0x83, 563280304Sjkim /* order */ 564280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x75, 0xA3, 0x0D, 0x1B, 565280304Sjkim 0x90, 0x38, 0xA1, 0x15 566280304Sjkim } 567280304Sjkim}; 568238405Sjkim 569280304Sjkimstatic const struct { 570280304Sjkim EC_CURVE_DATA h; 571280304Sjkim unsigned char data[20 + 16 * 6]; 572280304Sjkim} _EC_SECG_PRIME_128R2 = { 573280304Sjkim { 574280304Sjkim NID_X9_62_prime_field, 20, 16, 4 575280304Sjkim }, 576280304Sjkim { 577280304Sjkim /* seed */ 578280304Sjkim 0x00, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75, 0x12, 0xD8, 579280304Sjkim 0xF0, 0x34, 0x31, 0xFC, 0xE6, 0x3B, 0x88, 0xF4, 580280304Sjkim /* p */ 581280304Sjkim 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 582280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 583280304Sjkim /* a */ 584280304Sjkim 0xD6, 0x03, 0x19, 0x98, 0xD1, 0xB3, 0xBB, 0xFE, 0xBF, 0x59, 0xCC, 0x9B, 585280304Sjkim 0xBF, 0xF9, 0xAE, 0xE1, 586280304Sjkim /* b */ 587280304Sjkim 0x5E, 0xEE, 0xFC, 0xA3, 0x80, 0xD0, 0x29, 0x19, 0xDC, 0x2C, 0x65, 0x58, 588280304Sjkim 0xBB, 0x6D, 0x8A, 0x5D, 589280304Sjkim /* x */ 590280304Sjkim 0x7B, 0x6A, 0xA5, 0xD8, 0x5E, 0x57, 0x29, 0x83, 0xE6, 0xFB, 0x32, 0xA7, 591280304Sjkim 0xCD, 0xEB, 0xC1, 0x40, 592280304Sjkim /* y */ 593280304Sjkim 0x27, 0xb6, 0x91, 0x6a, 0x89, 0x4d, 0x3a, 0xee, 0x71, 0x06, 0xfe, 0x80, 594280304Sjkim 0x5f, 0xc3, 0x4b, 0x44, 595280304Sjkim /* order */ 596280304Sjkim 0x3F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xBE, 0x00, 0x24, 0x72, 597280304Sjkim 0x06, 0x13, 0xB5, 0xA3 598280304Sjkim } 599280304Sjkim}; 600160814Ssimon 601280304Sjkimstatic const struct { 602280304Sjkim EC_CURVE_DATA h; 603280304Sjkim unsigned char data[0 + 21 * 6]; 604280304Sjkim} _EC_SECG_PRIME_160K1 = { 605280304Sjkim { 606280304Sjkim NID_X9_62_prime_field, 0, 21, 1 607280304Sjkim }, 608280304Sjkim { 609280304Sjkim /* no seed */ 610280304Sjkim /* p */ 611280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 612280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xAC, 0x73, 613280304Sjkim /* a */ 614280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 615280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 616280304Sjkim /* b */ 617280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 618280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 619280304Sjkim /* x */ 620280304Sjkim 0x00, 0x3B, 0x4C, 0x38, 0x2C, 0xE3, 0x7A, 0xA1, 0x92, 0xA4, 0x01, 0x9E, 621280304Sjkim 0x76, 0x30, 0x36, 0xF4, 0xF5, 0xDD, 0x4D, 0x7E, 0xBB, 622280304Sjkim /* y */ 623280304Sjkim 0x00, 0x93, 0x8c, 0xf9, 0x35, 0x31, 0x8f, 0xdc, 0xed, 0x6b, 0xc2, 0x82, 624280304Sjkim 0x86, 0x53, 0x17, 0x33, 0xc3, 0xf0, 0x3c, 0x4f, 0xee, 625280304Sjkim /* order */ 626280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB8, 627280304Sjkim 0xFA, 0x16, 0xDF, 0xAB, 0x9A, 0xCA, 0x16, 0xB6, 0xB3 628280304Sjkim } 629280304Sjkim}; 630238405Sjkim 631280304Sjkimstatic const struct { 632280304Sjkim EC_CURVE_DATA h; 633280304Sjkim unsigned char data[20 + 21 * 6]; 634280304Sjkim} _EC_SECG_PRIME_160R1 = { 635280304Sjkim { 636280304Sjkim NID_X9_62_prime_field, 20, 21, 1 637280304Sjkim }, 638280304Sjkim { 639280304Sjkim /* seed */ 640280304Sjkim 0x10, 0x53, 0xCD, 0xE4, 0x2C, 0x14, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 641280304Sjkim 0x15, 0x17, 0x53, 0x3B, 0xF3, 0xF8, 0x33, 0x45, 642280304Sjkim /* p */ 643280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 644280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 645280304Sjkim /* a */ 646280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 647280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFC, 648280304Sjkim /* b */ 649280304Sjkim 0x00, 0x1C, 0x97, 0xBE, 0xFC, 0x54, 0xBD, 0x7A, 0x8B, 0x65, 0xAC, 0xF8, 650280304Sjkim 0x9F, 0x81, 0xD4, 0xD4, 0xAD, 0xC5, 0x65, 0xFA, 0x45, 651280304Sjkim /* x */ 652280304Sjkim 0x00, 0x4A, 0x96, 0xB5, 0x68, 0x8E, 0xF5, 0x73, 0x28, 0x46, 0x64, 0x69, 653280304Sjkim 0x89, 0x68, 0xC3, 0x8B, 0xB9, 0x13, 0xCB, 0xFC, 0x82, 654280304Sjkim /* y */ 655280304Sjkim 0x00, 0x23, 0xa6, 0x28, 0x55, 0x31, 0x68, 0x94, 0x7d, 0x59, 0xdc, 0xc9, 656280304Sjkim 0x12, 0x04, 0x23, 0x51, 0x37, 0x7a, 0xc5, 0xfb, 0x32, 657280304Sjkim /* order */ 658280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF4, 659280304Sjkim 0xC8, 0xF9, 0x27, 0xAE, 0xD3, 0xCA, 0x75, 0x22, 0x57 660280304Sjkim } 661280304Sjkim}; 662160814Ssimon 663280304Sjkimstatic const struct { 664280304Sjkim EC_CURVE_DATA h; 665280304Sjkim unsigned char data[20 + 21 * 6]; 666280304Sjkim} _EC_SECG_PRIME_160R2 = { 667280304Sjkim { 668280304Sjkim NID_X9_62_prime_field, 20, 21, 1 669280304Sjkim }, 670280304Sjkim { 671280304Sjkim /* seed */ 672280304Sjkim 0xB9, 0x9B, 0x99, 0xB0, 0x99, 0xB3, 0x23, 0xE0, 0x27, 0x09, 0xA4, 0xD6, 673280304Sjkim 0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x51, 674280304Sjkim /* p */ 675280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 676280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xAC, 0x73, 677280304Sjkim /* a */ 678280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 679280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xAC, 0x70, 680280304Sjkim /* b */ 681280304Sjkim 0x00, 0xB4, 0xE1, 0x34, 0xD3, 0xFB, 0x59, 0xEB, 0x8B, 0xAB, 0x57, 0x27, 682280304Sjkim 0x49, 0x04, 0x66, 0x4D, 0x5A, 0xF5, 0x03, 0x88, 0xBA, 683280304Sjkim /* x */ 684280304Sjkim 0x00, 0x52, 0xDC, 0xB0, 0x34, 0x29, 0x3A, 0x11, 0x7E, 0x1F, 0x4F, 0xF1, 685280304Sjkim 0x1B, 0x30, 0xF7, 0x19, 0x9D, 0x31, 0x44, 0xCE, 0x6D, 686280304Sjkim /* y */ 687280304Sjkim 0x00, 0xfe, 0xaf, 0xfe, 0xf2, 0xe3, 0x31, 0xf2, 0x96, 0xe0, 0x71, 0xfa, 688280304Sjkim 0x0d, 0xf9, 0x98, 0x2c, 0xfe, 0xa7, 0xd4, 0x3f, 0x2e, 689280304Sjkim /* order */ 690280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 691280304Sjkim 0x1E, 0xE7, 0x86, 0xA8, 0x18, 0xF3, 0xA1, 0xA1, 0x6B 692280304Sjkim } 693280304Sjkim}; 694238405Sjkim 695280304Sjkimstatic const struct { 696280304Sjkim EC_CURVE_DATA h; 697280304Sjkim unsigned char data[0 + 24 * 6]; 698280304Sjkim} _EC_SECG_PRIME_192K1 = { 699280304Sjkim { 700280304Sjkim NID_X9_62_prime_field, 0, 24, 1 701280304Sjkim }, 702280304Sjkim { 703280304Sjkim /* no seed */ 704280304Sjkim /* p */ 705280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 706280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEE, 0x37, 707280304Sjkim /* a */ 708280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 709280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 710280304Sjkim /* b */ 711280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 712280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 713280304Sjkim /* x */ 714280304Sjkim 0xDB, 0x4F, 0xF1, 0x0E, 0xC0, 0x57, 0xE9, 0xAE, 0x26, 0xB0, 0x7D, 0x02, 715280304Sjkim 0x80, 0xB7, 0xF4, 0x34, 0x1D, 0xA5, 0xD1, 0xB1, 0xEA, 0xE0, 0x6C, 0x7D, 716280304Sjkim /* y */ 717280304Sjkim 0x9b, 0x2f, 0x2f, 0x6d, 0x9c, 0x56, 0x28, 0xa7, 0x84, 0x41, 0x63, 0xd0, 718280304Sjkim 0x15, 0xbe, 0x86, 0x34, 0x40, 0x82, 0xaa, 0x88, 0xd9, 0x5e, 0x2f, 0x9d, 719280304Sjkim /* order */ 720280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 721280304Sjkim 0x26, 0xF2, 0xFC, 0x17, 0x0F, 0x69, 0x46, 0x6A, 0x74, 0xDE, 0xFD, 0x8D 722280304Sjkim } 723280304Sjkim}; 724160814Ssimon 725280304Sjkimstatic const struct { 726280304Sjkim EC_CURVE_DATA h; 727280304Sjkim unsigned char data[0 + 29 * 6]; 728280304Sjkim} _EC_SECG_PRIME_224K1 = { 729280304Sjkim { 730280304Sjkim NID_X9_62_prime_field, 0, 29, 1 731280304Sjkim }, 732280304Sjkim { 733280304Sjkim /* no seed */ 734280304Sjkim /* p */ 735280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 736280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 737280304Sjkim 0xFE, 0xFF, 0xFF, 0xE5, 0x6D, 738280304Sjkim /* a */ 739280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 740280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 741280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 742280304Sjkim /* b */ 743280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 744280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 745280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x05, 746280304Sjkim /* x */ 747280304Sjkim 0x00, 0xA1, 0x45, 0x5B, 0x33, 0x4D, 0xF0, 0x99, 0xDF, 0x30, 0xFC, 0x28, 748280304Sjkim 0xA1, 0x69, 0xA4, 0x67, 0xE9, 0xE4, 0x70, 0x75, 0xA9, 0x0F, 0x7E, 0x65, 749280304Sjkim 0x0E, 0xB6, 0xB7, 0xA4, 0x5C, 750280304Sjkim /* y */ 751280304Sjkim 0x00, 0x7e, 0x08, 0x9f, 0xed, 0x7f, 0xba, 0x34, 0x42, 0x82, 0xca, 0xfb, 752280304Sjkim 0xd6, 0xf7, 0xe3, 0x19, 0xf7, 0xc0, 0xb0, 0xbd, 0x59, 0xe2, 0xca, 0x4b, 753280304Sjkim 0xdb, 0x55, 0x6d, 0x61, 0xa5, 754280304Sjkim /* order */ 755280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 756280304Sjkim 0x00, 0x00, 0x01, 0xDC, 0xE8, 0xD2, 0xEC, 0x61, 0x84, 0xCA, 0xF0, 0xA9, 757280304Sjkim 0x71, 0x76, 0x9F, 0xB1, 0xF7 758280304Sjkim } 759280304Sjkim}; 760160814Ssimon 761280304Sjkimstatic const struct { 762280304Sjkim EC_CURVE_DATA h; 763280304Sjkim unsigned char data[0 + 32 * 6]; 764280304Sjkim} _EC_SECG_PRIME_256K1 = { 765280304Sjkim { 766280304Sjkim NID_X9_62_prime_field, 0, 32, 1 767280304Sjkim }, 768280304Sjkim { 769280304Sjkim /* no seed */ 770280304Sjkim /* p */ 771280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 772280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 773280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0x2F, 774280304Sjkim /* a */ 775280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 776280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 777280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 778280304Sjkim /* b */ 779280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 780280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 781280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 782280304Sjkim /* x */ 783280304Sjkim 0x79, 0xBE, 0x66, 0x7E, 0xF9, 0xDC, 0xBB, 0xAC, 0x55, 0xA0, 0x62, 0x95, 784280304Sjkim 0xCE, 0x87, 0x0B, 0x07, 0x02, 0x9B, 0xFC, 0xDB, 0x2D, 0xCE, 0x28, 0xD9, 785280304Sjkim 0x59, 0xF2, 0x81, 0x5B, 0x16, 0xF8, 0x17, 0x98, 786280304Sjkim /* y */ 787280304Sjkim 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 788280304Sjkim 0x0e, 0x11, 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 789280304Sjkim 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10, 0xd4, 0xb8, 790280304Sjkim /* order */ 791280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 792280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xBA, 0xAE, 0xDC, 0xE6, 0xAF, 0x48, 0xA0, 0x3B, 793280304Sjkim 0xBF, 0xD2, 0x5E, 0x8C, 0xD0, 0x36, 0x41, 0x41 794280304Sjkim } 795280304Sjkim}; 796238405Sjkim 797160814Ssimon/* some wap/wtls curves */ 798280304Sjkimstatic const struct { 799280304Sjkim EC_CURVE_DATA h; 800280304Sjkim unsigned char data[0 + 15 * 6]; 801280304Sjkim} _EC_WTLS_8 = { 802280304Sjkim { 803280304Sjkim NID_X9_62_prime_field, 0, 15, 1 804280304Sjkim }, 805280304Sjkim { 806280304Sjkim /* no seed */ 807280304Sjkim /* p */ 808280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 809280304Sjkim 0xFF, 0xFD, 0xE7, 810280304Sjkim /* a */ 811280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 812280304Sjkim 0x00, 0x00, 0x00, 813280304Sjkim /* b */ 814280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 815280304Sjkim 0x00, 0x00, 0x03, 816280304Sjkim /* x */ 817280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 818280304Sjkim 0x00, 0x00, 0x01, 819280304Sjkim /* y */ 820280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 821280304Sjkim 0x00, 0x00, 0x02, 822280304Sjkim /* order */ 823280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEC, 0xEA, 0x55, 0x1A, 824280304Sjkim 0xD8, 0x37, 0xE9 825280304Sjkim } 826280304Sjkim}; 827160814Ssimon 828280304Sjkimstatic const struct { 829280304Sjkim EC_CURVE_DATA h; 830280304Sjkim unsigned char data[0 + 21 * 6]; 831280304Sjkim} _EC_WTLS_9 = { 832280304Sjkim { 833280304Sjkim NID_X9_62_prime_field, 0, 21, 1 834280304Sjkim }, 835280304Sjkim { 836280304Sjkim /* no seed */ 837280304Sjkim /* p */ 838280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 839280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x8F, 840280304Sjkim /* a */ 841280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 842280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 843280304Sjkim /* b */ 844280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 845280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 846280304Sjkim /* x */ 847280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 848280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 849280304Sjkim /* y */ 850280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 851280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 852280304Sjkim /* order */ 853280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xCD, 854280304Sjkim 0xC9, 0x8A, 0xE0, 0xE2, 0xDE, 0x57, 0x4A, 0xBF, 0x33 855280304Sjkim } 856280304Sjkim}; 857160814Ssimon 858280304Sjkimstatic const struct { 859280304Sjkim EC_CURVE_DATA h; 860280304Sjkim unsigned char data[0 + 28 * 6]; 861280304Sjkim} _EC_WTLS_12 = { 862280304Sjkim { 863280304Sjkim NID_X9_62_prime_field, 0, 28, 1 864280304Sjkim }, 865280304Sjkim { 866280304Sjkim /* no seed */ 867280304Sjkim /* p */ 868280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 869280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 870280304Sjkim 0x00, 0x00, 0x00, 0x01, 871280304Sjkim /* a */ 872280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 873280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 874280304Sjkim 0xFF, 0xFF, 0xFF, 0xFE, 875280304Sjkim /* b */ 876280304Sjkim 0xB4, 0x05, 0x0A, 0x85, 0x0C, 0x04, 0xB3, 0xAB, 0xF5, 0x41, 0x32, 0x56, 877280304Sjkim 0x50, 0x44, 0xB0, 0xB7, 0xD7, 0xBF, 0xD8, 0xBA, 0x27, 0x0B, 0x39, 0x43, 878280304Sjkim 0x23, 0x55, 0xFF, 0xB4, 879280304Sjkim /* x */ 880280304Sjkim 0xB7, 0x0E, 0x0C, 0xBD, 0x6B, 0xB4, 0xBF, 0x7F, 0x32, 0x13, 0x90, 0xB9, 881280304Sjkim 0x4A, 0x03, 0xC1, 0xD3, 0x56, 0xC2, 0x11, 0x22, 0x34, 0x32, 0x80, 0xD6, 882280304Sjkim 0x11, 0x5C, 0x1D, 0x21, 883280304Sjkim /* y */ 884280304Sjkim 0xbd, 0x37, 0x63, 0x88, 0xb5, 0xf7, 0x23, 0xfb, 0x4c, 0x22, 0xdf, 0xe6, 885280304Sjkim 0xcd, 0x43, 0x75, 0xa0, 0x5a, 0x07, 0x47, 0x64, 0x44, 0xd5, 0x81, 0x99, 886280304Sjkim 0x85, 0x00, 0x7e, 0x34, 887280304Sjkim /* order */ 888280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 889280304Sjkim 0xFF, 0xFF, 0x16, 0xA2, 0xE0, 0xB8, 0xF0, 0x3E, 0x13, 0xDD, 0x29, 0x45, 890280304Sjkim 0x5C, 0x5C, 0x2A, 0x3D 891280304Sjkim } 892280304Sjkim}; 893160814Ssimon 894238405Sjkim#ifndef OPENSSL_NO_EC2M 895238405Sjkim 896160814Ssimon/* characteristic two curves */ 897280304Sjkimstatic const struct { 898280304Sjkim EC_CURVE_DATA h; 899280304Sjkim unsigned char data[20 + 15 * 6]; 900280304Sjkim} _EC_SECG_CHAR2_113R1 = { 901280304Sjkim { 902280304Sjkim NID_X9_62_characteristic_two_field, 20, 15, 2 903280304Sjkim }, 904280304Sjkim { 905280304Sjkim /* seed */ 906280304Sjkim 0x10, 0xE7, 0x23, 0xAB, 0x14, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 907280304Sjkim 0x17, 0x56, 0xFE, 0xBF, 0x8F, 0xCB, 0x49, 0xA9, 908280304Sjkim /* p */ 909280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 910280304Sjkim 0x00, 0x02, 0x01, 911280304Sjkim /* a */ 912280304Sjkim 0x00, 0x30, 0x88, 0x25, 0x0C, 0xA6, 0xE7, 0xC7, 0xFE, 0x64, 0x9C, 0xE8, 913280304Sjkim 0x58, 0x20, 0xF7, 914280304Sjkim /* b */ 915280304Sjkim 0x00, 0xE8, 0xBE, 0xE4, 0xD3, 0xE2, 0x26, 0x07, 0x44, 0x18, 0x8B, 0xE0, 916280304Sjkim 0xE9, 0xC7, 0x23, 917280304Sjkim /* x */ 918280304Sjkim 0x00, 0x9D, 0x73, 0x61, 0x6F, 0x35, 0xF4, 0xAB, 0x14, 0x07, 0xD7, 0x35, 919280304Sjkim 0x62, 0xC1, 0x0F, 920280304Sjkim /* y */ 921280304Sjkim 0x00, 0xA5, 0x28, 0x30, 0x27, 0x79, 0x58, 0xEE, 0x84, 0xD1, 0x31, 0x5E, 922280304Sjkim 0xD3, 0x18, 0x86, 923280304Sjkim /* order */ 924280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xCC, 0xEC, 0x8A, 925280304Sjkim 0x39, 0xE5, 0x6F 926280304Sjkim } 927280304Sjkim}; 928238405Sjkim 929280304Sjkimstatic const struct { 930280304Sjkim EC_CURVE_DATA h; 931280304Sjkim unsigned char data[20 + 15 * 6]; 932280304Sjkim} _EC_SECG_CHAR2_113R2 = { 933280304Sjkim { 934280304Sjkim NID_X9_62_characteristic_two_field, 20, 15, 2 935280304Sjkim }, 936280304Sjkim { 937280304Sjkim /* seed */ 938280304Sjkim 0x10, 0xC0, 0xFB, 0x15, 0x76, 0x08, 0x60, 0xDE, 0xF1, 0xEE, 0xF4, 0xD6, 939280304Sjkim 0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x5D, 940280304Sjkim /* p */ 941280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 942280304Sjkim 0x00, 0x02, 0x01, 943280304Sjkim /* a */ 944280304Sjkim 0x00, 0x68, 0x99, 0x18, 0xDB, 0xEC, 0x7E, 0x5A, 0x0D, 0xD6, 0xDF, 0xC0, 945280304Sjkim 0xAA, 0x55, 0xC7, 946280304Sjkim /* b */ 947280304Sjkim 0x00, 0x95, 0xE9, 0xA9, 0xEC, 0x9B, 0x29, 0x7B, 0xD4, 0xBF, 0x36, 0xE0, 948280304Sjkim 0x59, 0x18, 0x4F, 949280304Sjkim /* x */ 950280304Sjkim 0x01, 0xA5, 0x7A, 0x6A, 0x7B, 0x26, 0xCA, 0x5E, 0xF5, 0x2F, 0xCD, 0xB8, 951280304Sjkim 0x16, 0x47, 0x97, 952280304Sjkim /* y */ 953280304Sjkim 0x00, 0xB3, 0xAD, 0xC9, 0x4E, 0xD1, 0xFE, 0x67, 0x4C, 0x06, 0xE6, 0x95, 954280304Sjkim 0xBA, 0xBA, 0x1D, 955280304Sjkim /* order */ 956280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x78, 0x9B, 0x24, 957280304Sjkim 0x96, 0xAF, 0x93 958280304Sjkim } 959280304Sjkim}; 960160814Ssimon 961280304Sjkimstatic const struct { 962280304Sjkim EC_CURVE_DATA h; 963280304Sjkim unsigned char data[20 + 17 * 6]; 964280304Sjkim} _EC_SECG_CHAR2_131R1 = { 965280304Sjkim { 966280304Sjkim NID_X9_62_characteristic_two_field, 20, 17, 2 967280304Sjkim }, 968280304Sjkim { 969280304Sjkim /* seed */ 970280304Sjkim 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75, 0x98, 0x5B, 0xD3, 971280304Sjkim 0xAD, 0xBA, 0xDA, 0x21, 0xB4, 0x3A, 0x97, 0xE2, 972280304Sjkim /* p */ 973280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 974280304Sjkim 0x00, 0x00, 0x00, 0x01, 0x0D, 975280304Sjkim /* a */ 976280304Sjkim 0x07, 0xA1, 0x1B, 0x09, 0xA7, 0x6B, 0x56, 0x21, 0x44, 0x41, 0x8F, 0xF3, 977280304Sjkim 0xFF, 0x8C, 0x25, 0x70, 0xB8, 978280304Sjkim /* b */ 979280304Sjkim 0x02, 0x17, 0xC0, 0x56, 0x10, 0x88, 0x4B, 0x63, 0xB9, 0xC6, 0xC7, 0x29, 980280304Sjkim 0x16, 0x78, 0xF9, 0xD3, 0x41, 981280304Sjkim /* x */ 982280304Sjkim 0x00, 0x81, 0xBA, 0xF9, 0x1F, 0xDF, 0x98, 0x33, 0xC4, 0x0F, 0x9C, 0x18, 983280304Sjkim 0x13, 0x43, 0x63, 0x83, 0x99, 984280304Sjkim /* y */ 985280304Sjkim 0x07, 0x8C, 0x6E, 0x7E, 0xA3, 0x8C, 0x00, 0x1F, 0x73, 0xC8, 0x13, 0x4B, 986280304Sjkim 0x1B, 0x4E, 0xF9, 0xE1, 0x50, 987280304Sjkim /* order */ 988280304Sjkim 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x31, 0x23, 0x95, 989280304Sjkim 0x3A, 0x94, 0x64, 0xB5, 0x4D 990280304Sjkim } 991280304Sjkim}; 992238405Sjkim 993280304Sjkimstatic const struct { 994280304Sjkim EC_CURVE_DATA h; 995280304Sjkim unsigned char data[20 + 17 * 6]; 996280304Sjkim} _EC_SECG_CHAR2_131R2 = { 997280304Sjkim { 998280304Sjkim NID_X9_62_characteristic_two_field, 20, 17, 2 999280304Sjkim }, 1000280304Sjkim { 1001280304Sjkim /* seed */ 1002280304Sjkim 0x98, 0x5B, 0xD3, 0xAD, 0xBA, 0xD4, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 1003280304Sjkim 0x15, 0x17, 0x5A, 0x21, 0xB4, 0x3A, 0x97, 0xE3, 1004280304Sjkim /* p */ 1005280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1006280304Sjkim 0x00, 0x00, 0x00, 0x01, 0x0D, 1007280304Sjkim /* a */ 1008280304Sjkim 0x03, 0xE5, 0xA8, 0x89, 0x19, 0xD7, 0xCA, 0xFC, 0xBF, 0x41, 0x5F, 0x07, 1009280304Sjkim 0xC2, 0x17, 0x65, 0x73, 0xB2, 1010280304Sjkim /* b */ 1011280304Sjkim 0x04, 0xB8, 0x26, 0x6A, 0x46, 0xC5, 0x56, 0x57, 0xAC, 0x73, 0x4C, 0xE3, 1012280304Sjkim 0x8F, 0x01, 0x8F, 0x21, 0x92, 1013280304Sjkim /* x */ 1014280304Sjkim 0x03, 0x56, 0xDC, 0xD8, 0xF2, 0xF9, 0x50, 0x31, 0xAD, 0x65, 0x2D, 0x23, 1015280304Sjkim 0x95, 0x1B, 0xB3, 0x66, 0xA8, 1016280304Sjkim /* y */ 1017280304Sjkim 0x06, 0x48, 0xF0, 0x6D, 0x86, 0x79, 0x40, 0xA5, 0x36, 0x6D, 0x9E, 0x26, 1018280304Sjkim 0x5D, 0xE9, 0xEB, 0x24, 0x0F, 1019280304Sjkim /* order */ 1020280304Sjkim 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x69, 0x54, 0xA2, 1021280304Sjkim 0x33, 0x04, 0x9B, 0xA9, 0x8F 1022280304Sjkim } 1023280304Sjkim}; 1024160814Ssimon 1025280304Sjkimstatic const struct { 1026280304Sjkim EC_CURVE_DATA h; 1027280304Sjkim unsigned char data[0 + 21 * 6]; 1028280304Sjkim} _EC_NIST_CHAR2_163K = { 1029280304Sjkim { 1030280304Sjkim NID_X9_62_characteristic_two_field, 0, 21, 2 1031280304Sjkim }, 1032280304Sjkim { 1033280304Sjkim /* no seed */ 1034280304Sjkim /* p */ 1035280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1036280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 1037280304Sjkim /* a */ 1038280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1039280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1040280304Sjkim /* b */ 1041280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1042280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1043280304Sjkim /* x */ 1044280304Sjkim 0x02, 0xFE, 0x13, 0xC0, 0x53, 0x7B, 0xBC, 0x11, 0xAC, 0xAA, 0x07, 0xD7, 1045280304Sjkim 0x93, 0xDE, 0x4E, 0x6D, 0x5E, 0x5C, 0x94, 0xEE, 0xE8, 1046280304Sjkim /* y */ 1047280304Sjkim 0x02, 0x89, 0x07, 0x0F, 0xB0, 0x5D, 0x38, 0xFF, 0x58, 0x32, 0x1F, 0x2E, 1048280304Sjkim 0x80, 0x05, 0x36, 0xD5, 0x38, 0xCC, 0xDA, 0xA3, 0xD9, 1049280304Sjkim /* order */ 1050280304Sjkim 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 1051280304Sjkim 0x08, 0xA2, 0xE0, 0xCC, 0x0D, 0x99, 0xF8, 0xA5, 0xEF 1052280304Sjkim } 1053280304Sjkim}; 1054238405Sjkim 1055280304Sjkimstatic const struct { 1056280304Sjkim EC_CURVE_DATA h; 1057280304Sjkim unsigned char data[0 + 21 * 6]; 1058280304Sjkim} _EC_SECG_CHAR2_163R1 = { 1059280304Sjkim { 1060280304Sjkim NID_X9_62_characteristic_two_field, 0, 21, 2 1061280304Sjkim }, 1062280304Sjkim { 1063280304Sjkim /* no seed */ 1064280304Sjkim# if 0 1065280304Sjkim /* 1066280304Sjkim * The algorithm used to derive the curve parameters from the seed 1067280304Sjkim * used here is slightly different than the algorithm described in 1068280304Sjkim * X9.62 . 1069280304Sjkim */ 1070280304Sjkim 0x24, 0xB7, 0xB1, 0x37, 0xC8, 0xA1, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 1071280304Sjkim 0x61, 0x51, 0x75, 0x6F, 0xD0, 0xDA, 0x2E, 0x5C, 1072280304Sjkim# endif 1073280304Sjkim /* p */ 1074280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1075280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 1076280304Sjkim /* a */ 1077280304Sjkim 0x07, 0xB6, 0x88, 0x2C, 0xAA, 0xEF, 0xA8, 0x4F, 0x95, 0x54, 0xFF, 0x84, 1078280304Sjkim 0x28, 0xBD, 0x88, 0xE2, 0x46, 0xD2, 0x78, 0x2A, 0xE2, 1079280304Sjkim /* b */ 1080280304Sjkim 0x07, 0x13, 0x61, 0x2D, 0xCD, 0xDC, 0xB4, 0x0A, 0xAB, 0x94, 0x6B, 0xDA, 1081280304Sjkim 0x29, 0xCA, 0x91, 0xF7, 0x3A, 0xF9, 0x58, 0xAF, 0xD9, 1082280304Sjkim /* x */ 1083280304Sjkim 0x03, 0x69, 0x97, 0x96, 0x97, 0xAB, 0x43, 0x89, 0x77, 0x89, 0x56, 0x67, 1084280304Sjkim 0x89, 0x56, 0x7F, 0x78, 0x7A, 0x78, 0x76, 0xA6, 0x54, 1085280304Sjkim /* y */ 1086280304Sjkim 0x00, 0x43, 0x5E, 0xDB, 0x42, 0xEF, 0xAF, 0xB2, 0x98, 0x9D, 0x51, 0xFE, 1087280304Sjkim 0xFC, 0xE3, 0xC8, 0x09, 0x88, 0xF4, 0x1F, 0xF8, 0x83, 1088280304Sjkim /* order */ 1089280304Sjkim 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x48, 1090280304Sjkim 0xAA, 0xB6, 0x89, 0xC2, 0x9C, 0xA7, 0x10, 0x27, 0x9B 1091280304Sjkim } 1092280304Sjkim}; 1093160814Ssimon 1094280304Sjkimstatic const struct { 1095280304Sjkim EC_CURVE_DATA h; 1096280304Sjkim unsigned char data[0 + 21 * 6]; 1097280304Sjkim} _EC_NIST_CHAR2_163B = { 1098280304Sjkim { 1099280304Sjkim NID_X9_62_characteristic_two_field, 0, 21, 2 1100280304Sjkim }, 1101280304Sjkim { 1102280304Sjkim /* no seed */ 1103280304Sjkim# if 0 1104280304Sjkim /* 1105280304Sjkim * The seed here was used to created the curve parameters in normal 1106280304Sjkim * basis representation (and not the polynomial representation used 1107280304Sjkim * here) 1108280304Sjkim */ 1109280304Sjkim 0x85, 0xE2, 0x5B, 0xFE, 0x5C, 0x86, 0x22, 0x6C, 0xDB, 0x12, 0x01, 0x6F, 1110280304Sjkim 0x75, 0x53, 0xF9, 0xD0, 0xE6, 0x93, 0xA2, 0x68, 1111280304Sjkim# endif 1112280304Sjkim /* p */ 1113280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1114280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 1115280304Sjkim /* a */ 1116280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1117280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1118280304Sjkim /* b */ 1119280304Sjkim 0x02, 0x0A, 0x60, 0x19, 0x07, 0xB8, 0xC9, 0x53, 0xCA, 0x14, 0x81, 0xEB, 1120280304Sjkim 0x10, 0x51, 0x2F, 0x78, 0x74, 0x4A, 0x32, 0x05, 0xFD, 1121280304Sjkim /* x */ 1122280304Sjkim 0x03, 0xF0, 0xEB, 0xA1, 0x62, 0x86, 0xA2, 0xD5, 0x7E, 0xA0, 0x99, 0x11, 1123280304Sjkim 0x68, 0xD4, 0x99, 0x46, 0x37, 0xE8, 0x34, 0x3E, 0x36, 1124280304Sjkim /* y */ 1125280304Sjkim 0x00, 0xD5, 0x1F, 0xBC, 0x6C, 0x71, 0xA0, 0x09, 0x4F, 0xA2, 0xCD, 0xD5, 1126280304Sjkim 0x45, 0xB1, 0x1C, 0x5C, 0x0C, 0x79, 0x73, 0x24, 0xF1, 1127280304Sjkim /* order */ 1128280304Sjkim 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x92, 1129280304Sjkim 0xFE, 0x77, 0xE7, 0x0C, 0x12, 0xA4, 0x23, 0x4C, 0x33 1130280304Sjkim } 1131280304Sjkim}; 1132238405Sjkim 1133280304Sjkimstatic const struct { 1134280304Sjkim EC_CURVE_DATA h; 1135280304Sjkim unsigned char data[20 + 25 * 6]; 1136280304Sjkim} _EC_SECG_CHAR2_193R1 = { 1137280304Sjkim { 1138280304Sjkim NID_X9_62_characteristic_two_field, 20, 25, 2 1139280304Sjkim }, 1140280304Sjkim { 1141280304Sjkim /* seed */ 1142280304Sjkim 0x10, 0x3F, 0xAE, 0xC7, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 1143280304Sjkim 0x75, 0x77, 0x7F, 0xC5, 0xB1, 0x91, 0xEF, 0x30, 1144280304Sjkim /* p */ 1145280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1146280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 1147280304Sjkim 0x01, 1148280304Sjkim /* a */ 1149280304Sjkim 0x00, 0x17, 0x85, 0x8F, 0xEB, 0x7A, 0x98, 0x97, 0x51, 0x69, 0xE1, 0x71, 1150280304Sjkim 0xF7, 0x7B, 0x40, 0x87, 0xDE, 0x09, 0x8A, 0xC8, 0xA9, 0x11, 0xDF, 0x7B, 1151280304Sjkim 0x01, 1152280304Sjkim /* b */ 1153280304Sjkim 0x00, 0xFD, 0xFB, 0x49, 0xBF, 0xE6, 0xC3, 0xA8, 0x9F, 0xAC, 0xAD, 0xAA, 1154280304Sjkim 0x7A, 0x1E, 0x5B, 0xBC, 0x7C, 0xC1, 0xC2, 0xE5, 0xD8, 0x31, 0x47, 0x88, 1155280304Sjkim 0x14, 1156280304Sjkim /* x */ 1157280304Sjkim 0x01, 0xF4, 0x81, 0xBC, 0x5F, 0x0F, 0xF8, 0x4A, 0x74, 0xAD, 0x6C, 0xDF, 1158280304Sjkim 0x6F, 0xDE, 0xF4, 0xBF, 0x61, 0x79, 0x62, 0x53, 0x72, 0xD8, 0xC0, 0xC5, 1159280304Sjkim 0xE1, 1160280304Sjkim /* y */ 1161280304Sjkim 0x00, 0x25, 0xE3, 0x99, 0xF2, 0x90, 0x37, 0x12, 0xCC, 0xF3, 0xEA, 0x9E, 1162280304Sjkim 0x3A, 0x1A, 0xD1, 0x7F, 0xB0, 0xB3, 0x20, 0x1B, 0x6A, 0xF7, 0xCE, 0x1B, 1163280304Sjkim 0x05, 1164280304Sjkim /* order */ 1165280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1166280304Sjkim 0x00, 0xC7, 0xF3, 0x4A, 0x77, 0x8F, 0x44, 0x3A, 0xCC, 0x92, 0x0E, 0xBA, 1167280304Sjkim 0x49 1168280304Sjkim } 1169280304Sjkim}; 1170160814Ssimon 1171280304Sjkimstatic const struct { 1172280304Sjkim EC_CURVE_DATA h; 1173280304Sjkim unsigned char data[20 + 25 * 6]; 1174280304Sjkim} _EC_SECG_CHAR2_193R2 = { 1175280304Sjkim { 1176280304Sjkim NID_X9_62_characteristic_two_field, 20, 25, 2 1177280304Sjkim }, 1178280304Sjkim { 1179280304Sjkim /* seed */ 1180280304Sjkim 0x10, 0xB7, 0xB4, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x51, 1181280304Sjkim 0x37, 0xC8, 0xA1, 0x6F, 0xD0, 0xDA, 0x22, 0x11, 1182280304Sjkim /* p */ 1183280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1184280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 1185280304Sjkim 0x01, 1186280304Sjkim /* a */ 1187280304Sjkim 0x01, 0x63, 0xF3, 0x5A, 0x51, 0x37, 0xC2, 0xCE, 0x3E, 0xA6, 0xED, 0x86, 1188280304Sjkim 0x67, 0x19, 0x0B, 0x0B, 0xC4, 0x3E, 0xCD, 0x69, 0x97, 0x77, 0x02, 0x70, 1189280304Sjkim 0x9B, 1190280304Sjkim /* b */ 1191280304Sjkim 0x00, 0xC9, 0xBB, 0x9E, 0x89, 0x27, 0xD4, 0xD6, 0x4C, 0x37, 0x7E, 0x2A, 1192280304Sjkim 0xB2, 0x85, 0x6A, 0x5B, 0x16, 0xE3, 0xEF, 0xB7, 0xF6, 0x1D, 0x43, 0x16, 1193280304Sjkim 0xAE, 1194280304Sjkim /* x */ 1195280304Sjkim 0x00, 0xD9, 0xB6, 0x7D, 0x19, 0x2E, 0x03, 0x67, 0xC8, 0x03, 0xF3, 0x9E, 1196280304Sjkim 0x1A, 0x7E, 0x82, 0xCA, 0x14, 0xA6, 0x51, 0x35, 0x0A, 0xAE, 0x61, 0x7E, 1197280304Sjkim 0x8F, 1198280304Sjkim /* y */ 1199280304Sjkim 0x01, 0xCE, 0x94, 0x33, 0x56, 0x07, 0xC3, 0x04, 0xAC, 0x29, 0xE7, 0xDE, 1200280304Sjkim 0xFB, 0xD9, 0xCA, 0x01, 0xF5, 0x96, 0xF9, 0x27, 0x22, 0x4C, 0xDE, 0xCF, 1201280304Sjkim 0x6C, 1202280304Sjkim /* order */ 1203280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1204280304Sjkim 0x01, 0x5A, 0xAB, 0x56, 0x1B, 0x00, 0x54, 0x13, 0xCC, 0xD4, 0xEE, 0x99, 1205280304Sjkim 0xD5 1206280304Sjkim } 1207280304Sjkim}; 1208160814Ssimon 1209280304Sjkimstatic const struct { 1210280304Sjkim EC_CURVE_DATA h; 1211280304Sjkim unsigned char data[0 + 30 * 6]; 1212280304Sjkim} _EC_NIST_CHAR2_233K = { 1213280304Sjkim { 1214280304Sjkim NID_X9_62_characteristic_two_field, 0, 30, 4 1215280304Sjkim }, 1216280304Sjkim { 1217280304Sjkim /* no seed */ 1218280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1219280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 1220280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1221280304Sjkim /* a */ 1222280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1223280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1224280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1225280304Sjkim /* b */ 1226280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1227280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1228280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1229280304Sjkim /* x */ 1230280304Sjkim 0x01, 0x72, 0x32, 0xBA, 0x85, 0x3A, 0x7E, 0x73, 0x1A, 0xF1, 0x29, 0xF2, 1231280304Sjkim 0x2F, 0xF4, 0x14, 0x95, 0x63, 0xA4, 0x19, 0xC2, 0x6B, 0xF5, 0x0A, 0x4C, 1232280304Sjkim 0x9D, 0x6E, 0xEF, 0xAD, 0x61, 0x26, 1233280304Sjkim /* y */ 1234280304Sjkim 0x01, 0xDB, 0x53, 0x7D, 0xEC, 0xE8, 0x19, 0xB7, 0xF7, 0x0F, 0x55, 0x5A, 1235280304Sjkim 0x67, 0xC4, 0x27, 0xA8, 0xCD, 0x9B, 0xF1, 0x8A, 0xEB, 0x9B, 0x56, 0xE0, 1236280304Sjkim 0xC1, 0x10, 0x56, 0xFA, 0xE6, 0xA3, 1237280304Sjkim /* order */ 1238280304Sjkim 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1239280304Sjkim 0x00, 0x00, 0x00, 0x06, 0x9D, 0x5B, 0xB9, 0x15, 0xBC, 0xD4, 0x6E, 0xFB, 1240280304Sjkim 0x1A, 0xD5, 0xF1, 0x73, 0xAB, 0xDF 1241280304Sjkim } 1242280304Sjkim}; 1243160814Ssimon 1244280304Sjkimstatic const struct { 1245280304Sjkim EC_CURVE_DATA h; 1246280304Sjkim unsigned char data[20 + 30 * 6]; 1247280304Sjkim} _EC_NIST_CHAR2_233B = { 1248280304Sjkim { 1249280304Sjkim NID_X9_62_characteristic_two_field, 20, 30, 2 1250280304Sjkim }, 1251280304Sjkim { 1252280304Sjkim /* seed */ 1253280304Sjkim 0x74, 0xD5, 0x9F, 0xF0, 0x7F, 0x6B, 0x41, 0x3D, 0x0E, 0xA1, 0x4B, 0x34, 1254280304Sjkim 0x4B, 0x20, 0xA2, 0xDB, 0x04, 0x9B, 0x50, 0xC3, 1255280304Sjkim /* p */ 1256280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1257280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 1258280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1259280304Sjkim /* a */ 1260280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1261280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1262280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1263280304Sjkim /* b */ 1264280304Sjkim 0x00, 0x66, 0x64, 0x7E, 0xDE, 0x6C, 0x33, 0x2C, 0x7F, 0x8C, 0x09, 0x23, 1265280304Sjkim 0xBB, 0x58, 0x21, 0x3B, 0x33, 0x3B, 0x20, 0xE9, 0xCE, 0x42, 0x81, 0xFE, 1266280304Sjkim 0x11, 0x5F, 0x7D, 0x8F, 0x90, 0xAD, 1267280304Sjkim /* x */ 1268280304Sjkim 0x00, 0xFA, 0xC9, 0xDF, 0xCB, 0xAC, 0x83, 0x13, 0xBB, 0x21, 0x39, 0xF1, 1269280304Sjkim 0xBB, 0x75, 0x5F, 0xEF, 0x65, 0xBC, 0x39, 0x1F, 0x8B, 0x36, 0xF8, 0xF8, 1270280304Sjkim 0xEB, 0x73, 0x71, 0xFD, 0x55, 0x8B, 1271280304Sjkim /* y */ 1272280304Sjkim 0x01, 0x00, 0x6A, 0x08, 0xA4, 0x19, 0x03, 0x35, 0x06, 0x78, 0xE5, 0x85, 1273280304Sjkim 0x28, 0xBE, 0xBF, 0x8A, 0x0B, 0xEF, 0xF8, 0x67, 0xA7, 0xCA, 0x36, 0x71, 1274280304Sjkim 0x6F, 0x7E, 0x01, 0xF8, 0x10, 0x52, 1275280304Sjkim /* order */ 1276280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1277280304Sjkim 0x00, 0x00, 0x00, 0x13, 0xE9, 0x74, 0xE7, 0x2F, 0x8A, 0x69, 0x22, 0x03, 1278280304Sjkim 0x1D, 0x26, 0x03, 0xCF, 0xE0, 0xD7 1279280304Sjkim } 1280280304Sjkim}; 1281160814Ssimon 1282280304Sjkimstatic const struct { 1283280304Sjkim EC_CURVE_DATA h; 1284280304Sjkim unsigned char data[0 + 30 * 6]; 1285280304Sjkim} _EC_SECG_CHAR2_239K1 = { 1286280304Sjkim { 1287280304Sjkim NID_X9_62_characteristic_two_field, 0, 30, 4 1288280304Sjkim }, 1289280304Sjkim { 1290280304Sjkim /* no seed */ 1291280304Sjkim 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 1292280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1293280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1294280304Sjkim /* a */ 1295280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1296280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1297280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1298280304Sjkim /* b */ 1299280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1300280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1301280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1302280304Sjkim /* x */ 1303280304Sjkim 0x29, 0xA0, 0xB6, 0xA8, 0x87, 0xA9, 0x83, 0xE9, 0x73, 0x09, 0x88, 0xA6, 1304280304Sjkim 0x87, 0x27, 0xA8, 0xB2, 0xD1, 0x26, 0xC4, 0x4C, 0xC2, 0xCC, 0x7B, 0x2A, 1305280304Sjkim 0x65, 0x55, 0x19, 0x30, 0x35, 0xDC, 1306280304Sjkim /* y */ 1307280304Sjkim 0x76, 0x31, 0x08, 0x04, 0xF1, 0x2E, 0x54, 0x9B, 0xDB, 0x01, 0x1C, 0x10, 1308280304Sjkim 0x30, 0x89, 0xE7, 0x35, 0x10, 0xAC, 0xB2, 0x75, 0xFC, 0x31, 0x2A, 0x5D, 1309280304Sjkim 0xC6, 0xB7, 0x65, 0x53, 0xF0, 0xCA, 1310280304Sjkim /* order */ 1311280304Sjkim 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1312280304Sjkim 0x00, 0x00, 0x00, 0x5A, 0x79, 0xFE, 0xC6, 0x7C, 0xB6, 0xE9, 0x1F, 0x1C, 1313280304Sjkim 0x1D, 0xA8, 0x00, 0xE4, 0x78, 0xA5 1314280304Sjkim } 1315280304Sjkim}; 1316238405Sjkim 1317280304Sjkimstatic const struct { 1318280304Sjkim EC_CURVE_DATA h; 1319280304Sjkim unsigned char data[0 + 36 * 6]; 1320280304Sjkim} _EC_NIST_CHAR2_283K = { 1321280304Sjkim { 1322280304Sjkim NID_X9_62_characteristic_two_field, 0, 36, 4 1323280304Sjkim }, 1324280304Sjkim { 1325280304Sjkim /* no seed */ 1326280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1327280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1328280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA1, 1329280304Sjkim /* a */ 1330280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1331280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1332280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1333280304Sjkim /* b */ 1334280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1335280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1336280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1337280304Sjkim /* x */ 1338280304Sjkim 0x05, 0x03, 0x21, 0x3F, 0x78, 0xCA, 0x44, 0x88, 0x3F, 0x1A, 0x3B, 0x81, 1339280304Sjkim 0x62, 0xF1, 0x88, 0xE5, 0x53, 0xCD, 0x26, 0x5F, 0x23, 0xC1, 0x56, 0x7A, 1340280304Sjkim 0x16, 0x87, 0x69, 0x13, 0xB0, 0xC2, 0xAC, 0x24, 0x58, 0x49, 0x28, 0x36, 1341280304Sjkim /* y */ 1342280304Sjkim 0x01, 0xCC, 0xDA, 0x38, 0x0F, 0x1C, 0x9E, 0x31, 0x8D, 0x90, 0xF9, 0x5D, 1343280304Sjkim 0x07, 0xE5, 0x42, 0x6F, 0xE8, 0x7E, 0x45, 0xC0, 0xE8, 0x18, 0x46, 0x98, 1344280304Sjkim 0xE4, 0x59, 0x62, 0x36, 0x4E, 0x34, 0x11, 0x61, 0x77, 0xDD, 0x22, 0x59, 1345280304Sjkim /* order */ 1346280304Sjkim 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1347280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xAE, 0x2E, 0xD0, 0x75, 0x77, 1348280304Sjkim 0x26, 0x5D, 0xFF, 0x7F, 0x94, 0x45, 0x1E, 0x06, 0x1E, 0x16, 0x3C, 0x61 1349280304Sjkim } 1350280304Sjkim}; 1351160814Ssimon 1352280304Sjkimstatic const struct { 1353280304Sjkim EC_CURVE_DATA h; 1354280304Sjkim unsigned char data[20 + 36 * 6]; 1355280304Sjkim} _EC_NIST_CHAR2_283B = { 1356280304Sjkim { 1357280304Sjkim NID_X9_62_characteristic_two_field, 20, 36, 2 1358280304Sjkim }, 1359280304Sjkim { 1360280304Sjkim /* no seed */ 1361280304Sjkim 0x77, 0xE2, 0xB0, 0x73, 0x70, 0xEB, 0x0F, 0x83, 0x2A, 0x6D, 0xD5, 0xB6, 1362280304Sjkim 0x2D, 0xFC, 0x88, 0xCD, 0x06, 0xBB, 0x84, 0xBE, 1363280304Sjkim /* p */ 1364280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1365280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1366280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA1, 1367280304Sjkim /* a */ 1368280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1369280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1370280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1371280304Sjkim /* b */ 1372280304Sjkim 0x02, 0x7B, 0x68, 0x0A, 0xC8, 0xB8, 0x59, 0x6D, 0xA5, 0xA4, 0xAF, 0x8A, 1373280304Sjkim 0x19, 0xA0, 0x30, 0x3F, 0xCA, 0x97, 0xFD, 0x76, 0x45, 0x30, 0x9F, 0xA2, 1374280304Sjkim 0xA5, 0x81, 0x48, 0x5A, 0xF6, 0x26, 0x3E, 0x31, 0x3B, 0x79, 0xA2, 0xF5, 1375280304Sjkim /* x */ 1376280304Sjkim 0x05, 0xF9, 0x39, 0x25, 0x8D, 0xB7, 0xDD, 0x90, 0xE1, 0x93, 0x4F, 0x8C, 1377280304Sjkim 0x70, 0xB0, 0xDF, 0xEC, 0x2E, 0xED, 0x25, 0xB8, 0x55, 0x7E, 0xAC, 0x9C, 1378280304Sjkim 0x80, 0xE2, 0xE1, 0x98, 0xF8, 0xCD, 0xBE, 0xCD, 0x86, 0xB1, 0x20, 0x53, 1379280304Sjkim /* y */ 1380280304Sjkim 0x03, 0x67, 0x68, 0x54, 0xFE, 0x24, 0x14, 0x1C, 0xB9, 0x8F, 0xE6, 0xD4, 1381280304Sjkim 0xB2, 0x0D, 0x02, 0xB4, 0x51, 0x6F, 0xF7, 0x02, 0x35, 0x0E, 0xDD, 0xB0, 1382280304Sjkim 0x82, 0x67, 0x79, 0xC8, 0x13, 0xF0, 0xDF, 0x45, 0xBE, 0x81, 0x12, 0xF4, 1383280304Sjkim /* order */ 1384280304Sjkim 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1385280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x90, 0x39, 0x96, 0x60, 0xFC, 1386280304Sjkim 0x93, 0x8A, 0x90, 0x16, 0x5B, 0x04, 0x2A, 0x7C, 0xEF, 0xAD, 0xB3, 0x07 1387280304Sjkim } 1388280304Sjkim}; 1389238405Sjkim 1390280304Sjkimstatic const struct { 1391280304Sjkim EC_CURVE_DATA h; 1392280304Sjkim unsigned char data[0 + 52 * 6]; 1393280304Sjkim} _EC_NIST_CHAR2_409K = { 1394280304Sjkim { 1395280304Sjkim NID_X9_62_characteristic_two_field, 0, 52, 4 1396280304Sjkim }, 1397280304Sjkim { 1398280304Sjkim /* no seed */ 1399280304Sjkim /* p */ 1400280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1401280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1402280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1403280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1404280304Sjkim 0x00, 0x00, 0x00, 0x01, 1405280304Sjkim /* a */ 1406280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1407280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1408280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1409280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1410280304Sjkim 0x00, 0x00, 0x00, 0x00, 1411280304Sjkim /* b */ 1412280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1413280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1414280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1415280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1416280304Sjkim 0x00, 0x00, 0x00, 0x01, 1417280304Sjkim /* x */ 1418280304Sjkim 0x00, 0x60, 0xF0, 0x5F, 0x65, 0x8F, 0x49, 0xC1, 0xAD, 0x3A, 0xB1, 0x89, 1419280304Sjkim 0x0F, 0x71, 0x84, 0x21, 0x0E, 0xFD, 0x09, 0x87, 0xE3, 0x07, 0xC8, 0x4C, 1420280304Sjkim 0x27, 0xAC, 0xCF, 0xB8, 0xF9, 0xF6, 0x7C, 0xC2, 0xC4, 0x60, 0x18, 0x9E, 1421280304Sjkim 0xB5, 0xAA, 0xAA, 0x62, 0xEE, 0x22, 0x2E, 0xB1, 0xB3, 0x55, 0x40, 0xCF, 1422280304Sjkim 0xE9, 0x02, 0x37, 0x46, 1423280304Sjkim /* y */ 1424280304Sjkim 0x01, 0xE3, 0x69, 0x05, 0x0B, 0x7C, 0x4E, 0x42, 0xAC, 0xBA, 0x1D, 0xAC, 1425280304Sjkim 0xBF, 0x04, 0x29, 0x9C, 0x34, 0x60, 0x78, 0x2F, 0x91, 0x8E, 0xA4, 0x27, 1426280304Sjkim 0xE6, 0x32, 0x51, 0x65, 0xE9, 0xEA, 0x10, 0xE3, 0xDA, 0x5F, 0x6C, 0x42, 1427280304Sjkim 0xE9, 0xC5, 0x52, 0x15, 0xAA, 0x9C, 0xA2, 0x7A, 0x58, 0x63, 0xEC, 0x48, 1428280304Sjkim 0xD8, 0xE0, 0x28, 0x6B, 1429280304Sjkim /* order */ 1430280304Sjkim 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1431280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1432280304Sjkim 0xFF, 0xFF, 0xFE, 0x5F, 0x83, 0xB2, 0xD4, 0xEA, 0x20, 0x40, 0x0E, 0xC4, 1433280304Sjkim 0x55, 0x7D, 0x5E, 0xD3, 0xE3, 0xE7, 0xCA, 0x5B, 0x4B, 0x5C, 0x83, 0xB8, 1434280304Sjkim 0xE0, 0x1E, 0x5F, 0xCF 1435280304Sjkim } 1436280304Sjkim}; 1437160814Ssimon 1438280304Sjkimstatic const struct { 1439280304Sjkim EC_CURVE_DATA h; 1440280304Sjkim unsigned char data[20 + 52 * 6]; 1441280304Sjkim} _EC_NIST_CHAR2_409B = { 1442280304Sjkim { 1443280304Sjkim NID_X9_62_characteristic_two_field, 20, 52, 2 1444280304Sjkim }, 1445280304Sjkim { 1446280304Sjkim /* seed */ 1447280304Sjkim 0x40, 0x99, 0xB5, 0xA4, 0x57, 0xF9, 0xD6, 0x9F, 0x79, 0x21, 0x3D, 0x09, 1448280304Sjkim 0x4C, 0x4B, 0xCD, 0x4D, 0x42, 0x62, 0x21, 0x0B, 1449280304Sjkim /* p */ 1450280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1451280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1452280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1453280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1454280304Sjkim 0x00, 0x00, 0x00, 0x01, 1455280304Sjkim /* a */ 1456280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1457280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1458280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1459280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1460280304Sjkim 0x00, 0x00, 0x00, 0x01, 1461280304Sjkim /* b */ 1462280304Sjkim 0x00, 0x21, 0xA5, 0xC2, 0xC8, 0xEE, 0x9F, 0xEB, 0x5C, 0x4B, 0x9A, 0x75, 1463280304Sjkim 0x3B, 0x7B, 0x47, 0x6B, 0x7F, 0xD6, 0x42, 0x2E, 0xF1, 0xF3, 0xDD, 0x67, 1464280304Sjkim 0x47, 0x61, 0xFA, 0x99, 0xD6, 0xAC, 0x27, 0xC8, 0xA9, 0xA1, 0x97, 0xB2, 1465280304Sjkim 0x72, 0x82, 0x2F, 0x6C, 0xD5, 0x7A, 0x55, 0xAA, 0x4F, 0x50, 0xAE, 0x31, 1466280304Sjkim 0x7B, 0x13, 0x54, 0x5F, 1467280304Sjkim /* x */ 1468280304Sjkim 0x01, 0x5D, 0x48, 0x60, 0xD0, 0x88, 0xDD, 0xB3, 0x49, 0x6B, 0x0C, 0x60, 1469280304Sjkim 0x64, 0x75, 0x62, 0x60, 0x44, 0x1C, 0xDE, 0x4A, 0xF1, 0x77, 0x1D, 0x4D, 1470280304Sjkim 0xB0, 0x1F, 0xFE, 0x5B, 0x34, 0xE5, 0x97, 0x03, 0xDC, 0x25, 0x5A, 0x86, 1471280304Sjkim 0x8A, 0x11, 0x80, 0x51, 0x56, 0x03, 0xAE, 0xAB, 0x60, 0x79, 0x4E, 0x54, 1472280304Sjkim 0xBB, 0x79, 0x96, 0xA7, 1473280304Sjkim /* y */ 1474280304Sjkim 0x00, 0x61, 0xB1, 0xCF, 0xAB, 0x6B, 0xE5, 0xF3, 0x2B, 0xBF, 0xA7, 0x83, 1475280304Sjkim 0x24, 0xED, 0x10, 0x6A, 0x76, 0x36, 0xB9, 0xC5, 0xA7, 0xBD, 0x19, 0x8D, 1476280304Sjkim 0x01, 0x58, 0xAA, 0x4F, 0x54, 0x88, 0xD0, 0x8F, 0x38, 0x51, 0x4F, 0x1F, 1477280304Sjkim 0xDF, 0x4B, 0x4F, 0x40, 0xD2, 0x18, 0x1B, 0x36, 0x81, 0xC3, 0x64, 0xBA, 1478280304Sjkim 0x02, 0x73, 0xC7, 0x06, 1479280304Sjkim /* order */ 1480280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1481280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1482280304Sjkim 0x00, 0x00, 0x01, 0xE2, 0xAA, 0xD6, 0xA6, 0x12, 0xF3, 0x33, 0x07, 0xBE, 1483280304Sjkim 0x5F, 0xA4, 0x7C, 0x3C, 0x9E, 0x05, 0x2F, 0x83, 0x81, 0x64, 0xCD, 0x37, 1484280304Sjkim 0xD9, 0xA2, 0x11, 0x73 1485280304Sjkim } 1486280304Sjkim}; 1487238405Sjkim 1488280304Sjkimstatic const struct { 1489280304Sjkim EC_CURVE_DATA h; 1490280304Sjkim unsigned char data[0 + 72 * 6]; 1491280304Sjkim} _EC_NIST_CHAR2_571K = { 1492280304Sjkim { 1493280304Sjkim NID_X9_62_characteristic_two_field, 0, 72, 4 1494280304Sjkim }, 1495280304Sjkim { 1496280304Sjkim /* no seed */ 1497280304Sjkim /* p */ 1498280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1499280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1500280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1501280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1502280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1503280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x25, 1504280304Sjkim /* a */ 1505280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1506280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1507280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1508280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1509280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1510280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1511280304Sjkim /* b */ 1512280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1513280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1514280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1515280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1516280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1517280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1518280304Sjkim /* x */ 1519280304Sjkim 0x02, 0x6E, 0xB7, 0xA8, 0x59, 0x92, 0x3F, 0xBC, 0x82, 0x18, 0x96, 0x31, 1520280304Sjkim 0xF8, 0x10, 0x3F, 0xE4, 0xAC, 0x9C, 0xA2, 0x97, 0x00, 0x12, 0xD5, 0xD4, 1521280304Sjkim 0x60, 0x24, 0x80, 0x48, 0x01, 0x84, 0x1C, 0xA4, 0x43, 0x70, 0x95, 0x84, 1522280304Sjkim 0x93, 0xB2, 0x05, 0xE6, 0x47, 0xDA, 0x30, 0x4D, 0xB4, 0xCE, 0xB0, 0x8C, 1523280304Sjkim 0xBB, 0xD1, 0xBA, 0x39, 0x49, 0x47, 0x76, 0xFB, 0x98, 0x8B, 0x47, 0x17, 1524280304Sjkim 0x4D, 0xCA, 0x88, 0xC7, 0xE2, 0x94, 0x52, 0x83, 0xA0, 0x1C, 0x89, 0x72, 1525280304Sjkim /* y */ 1526280304Sjkim 0x03, 0x49, 0xDC, 0x80, 0x7F, 0x4F, 0xBF, 0x37, 0x4F, 0x4A, 0xEA, 0xDE, 1527280304Sjkim 0x3B, 0xCA, 0x95, 0x31, 0x4D, 0xD5, 0x8C, 0xEC, 0x9F, 0x30, 0x7A, 0x54, 1528280304Sjkim 0xFF, 0xC6, 0x1E, 0xFC, 0x00, 0x6D, 0x8A, 0x2C, 0x9D, 0x49, 0x79, 0xC0, 1529280304Sjkim 0xAC, 0x44, 0xAE, 0xA7, 0x4F, 0xBE, 0xBB, 0xB9, 0xF7, 0x72, 0xAE, 0xDC, 1530280304Sjkim 0xB6, 0x20, 0xB0, 0x1A, 0x7B, 0xA7, 0xAF, 0x1B, 0x32, 0x04, 0x30, 0xC8, 1531280304Sjkim 0x59, 0x19, 0x84, 0xF6, 0x01, 0xCD, 0x4C, 0x14, 0x3E, 0xF1, 0xC7, 0xA3, 1532280304Sjkim /* order */ 1533280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1534280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1535280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1536280304Sjkim 0x13, 0x18, 0x50, 0xE1, 0xF1, 0x9A, 0x63, 0xE4, 0xB3, 0x91, 0xA8, 0xDB, 1537280304Sjkim 0x91, 0x7F, 0x41, 0x38, 0xB6, 0x30, 0xD8, 0x4B, 0xE5, 0xD6, 0x39, 0x38, 1538280304Sjkim 0x1E, 0x91, 0xDE, 0xB4, 0x5C, 0xFE, 0x77, 0x8F, 0x63, 0x7C, 0x10, 0x01 1539280304Sjkim } 1540280304Sjkim}; 1541238405Sjkim 1542280304Sjkimstatic const struct { 1543280304Sjkim EC_CURVE_DATA h; 1544280304Sjkim unsigned char data[20 + 72 * 6]; 1545280304Sjkim} _EC_NIST_CHAR2_571B = { 1546280304Sjkim { 1547280304Sjkim NID_X9_62_characteristic_two_field, 20, 72, 2 1548280304Sjkim }, 1549280304Sjkim { 1550280304Sjkim /* seed */ 1551280304Sjkim 0x2A, 0xA0, 0x58, 0xF7, 0x3A, 0x0E, 0x33, 0xAB, 0x48, 0x6B, 0x0F, 0x61, 1552280304Sjkim 0x04, 0x10, 0xC5, 0x3A, 0x7F, 0x13, 0x23, 0x10, 1553280304Sjkim /* p */ 1554280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1555280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1556280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1557280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1558280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1559280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x25, 1560280304Sjkim /* a */ 1561280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1562280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1563280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1564280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1565280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1566280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 1567280304Sjkim /* b */ 1568280304Sjkim 0x02, 0xF4, 0x0E, 0x7E, 0x22, 0x21, 0xF2, 0x95, 0xDE, 0x29, 0x71, 0x17, 1569280304Sjkim 0xB7, 0xF3, 0xD6, 0x2F, 0x5C, 0x6A, 0x97, 0xFF, 0xCB, 0x8C, 0xEF, 0xF1, 1570280304Sjkim 0xCD, 0x6B, 0xA8, 0xCE, 0x4A, 0x9A, 0x18, 0xAD, 0x84, 0xFF, 0xAB, 0xBD, 1571280304Sjkim 0x8E, 0xFA, 0x59, 0x33, 0x2B, 0xE7, 0xAD, 0x67, 0x56, 0xA6, 0x6E, 0x29, 1572280304Sjkim 0x4A, 0xFD, 0x18, 0x5A, 0x78, 0xFF, 0x12, 0xAA, 0x52, 0x0E, 0x4D, 0xE7, 1573280304Sjkim 0x39, 0xBA, 0xCA, 0x0C, 0x7F, 0xFE, 0xFF, 0x7F, 0x29, 0x55, 0x72, 0x7A, 1574280304Sjkim /* x */ 1575280304Sjkim 0x03, 0x03, 0x00, 0x1D, 0x34, 0xB8, 0x56, 0x29, 0x6C, 0x16, 0xC0, 0xD4, 1576280304Sjkim 0x0D, 0x3C, 0xD7, 0x75, 0x0A, 0x93, 0xD1, 0xD2, 0x95, 0x5F, 0xA8, 0x0A, 1577280304Sjkim 0xA5, 0xF4, 0x0F, 0xC8, 0xDB, 0x7B, 0x2A, 0xBD, 0xBD, 0xE5, 0x39, 0x50, 1578280304Sjkim 0xF4, 0xC0, 0xD2, 0x93, 0xCD, 0xD7, 0x11, 0xA3, 0x5B, 0x67, 0xFB, 0x14, 1579280304Sjkim 0x99, 0xAE, 0x60, 0x03, 0x86, 0x14, 0xF1, 0x39, 0x4A, 0xBF, 0xA3, 0xB4, 1580280304Sjkim 0xC8, 0x50, 0xD9, 0x27, 0xE1, 0xE7, 0x76, 0x9C, 0x8E, 0xEC, 0x2D, 0x19, 1581280304Sjkim /* y */ 1582280304Sjkim 0x03, 0x7B, 0xF2, 0x73, 0x42, 0xDA, 0x63, 0x9B, 0x6D, 0xCC, 0xFF, 0xFE, 1583280304Sjkim 0xB7, 0x3D, 0x69, 0xD7, 0x8C, 0x6C, 0x27, 0xA6, 0x00, 0x9C, 0xBB, 0xCA, 1584280304Sjkim 0x19, 0x80, 0xF8, 0x53, 0x39, 0x21, 0xE8, 0xA6, 0x84, 0x42, 0x3E, 0x43, 1585280304Sjkim 0xBA, 0xB0, 0x8A, 0x57, 0x62, 0x91, 0xAF, 0x8F, 0x46, 0x1B, 0xB2, 0xA8, 1586280304Sjkim 0xB3, 0x53, 0x1D, 0x2F, 0x04, 0x85, 0xC1, 0x9B, 0x16, 0xE2, 0xF1, 0x51, 1587280304Sjkim 0x6E, 0x23, 0xDD, 0x3C, 0x1A, 0x48, 0x27, 0xAF, 0x1B, 0x8A, 0xC1, 0x5B, 1588280304Sjkim /* order */ 1589280304Sjkim 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1590280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1591280304Sjkim 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1592280304Sjkim 0xE6, 0x61, 0xCE, 0x18, 0xFF, 0x55, 0x98, 0x73, 0x08, 0x05, 0x9B, 0x18, 1593280304Sjkim 0x68, 0x23, 0x85, 0x1E, 0xC7, 0xDD, 0x9C, 0xA1, 0x16, 0x1D, 0xE9, 0x3D, 1594280304Sjkim 0x51, 0x74, 0xD6, 0x6E, 0x83, 0x82, 0xE9, 0xBB, 0x2F, 0xE8, 0x4E, 0x47 1595280304Sjkim } 1596280304Sjkim}; 1597238405Sjkim 1598280304Sjkimstatic const struct { 1599280304Sjkim EC_CURVE_DATA h; 1600280304Sjkim unsigned char data[20 + 21 * 6]; 1601280304Sjkim} _EC_X9_62_CHAR2_163V1 = { 1602280304Sjkim { 1603280304Sjkim NID_X9_62_characteristic_two_field, 20, 21, 2 1604280304Sjkim }, 1605280304Sjkim { 1606280304Sjkim /* seed */ 1607280304Sjkim 0xD2, 0xC0, 0xFB, 0x15, 0x76, 0x08, 0x60, 0xDE, 0xF1, 0xEE, 0xF4, 0xD6, 1608280304Sjkim 0x96, 0xE6, 0x76, 0x87, 0x56, 0x15, 0x17, 0x54, 1609280304Sjkim /* p */ 1610280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1611280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 1612280304Sjkim /* a */ 1613280304Sjkim 0x07, 0x25, 0x46, 0xB5, 0x43, 0x52, 0x34, 0xA4, 0x22, 0xE0, 0x78, 0x96, 1614280304Sjkim 0x75, 0xF4, 0x32, 0xC8, 0x94, 0x35, 0xDE, 0x52, 0x42, 1615280304Sjkim /* b */ 1616280304Sjkim 0x00, 0xC9, 0x51, 0x7D, 0x06, 0xD5, 0x24, 0x0D, 0x3C, 0xFF, 0x38, 0xC7, 1617280304Sjkim 0x4B, 0x20, 0xB6, 0xCD, 0x4D, 0x6F, 0x9D, 0xD4, 0xD9, 1618280304Sjkim /* x */ 1619280304Sjkim 0x07, 0xAF, 0x69, 0x98, 0x95, 0x46, 0x10, 0x3D, 0x79, 0x32, 0x9F, 0xCC, 1620280304Sjkim 0x3D, 0x74, 0x88, 0x0F, 0x33, 0xBB, 0xE8, 0x03, 0xCB, 1621280304Sjkim /* y */ 1622280304Sjkim 0x01, 0xEC, 0x23, 0x21, 0x1B, 0x59, 0x66, 0xAD, 0xEA, 0x1D, 0x3F, 0x87, 1623280304Sjkim 0xF7, 0xEA, 0x58, 0x48, 0xAE, 0xF0, 0xB7, 0xCA, 0x9F, 1624280304Sjkim /* order */ 1625280304Sjkim 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE6, 1626280304Sjkim 0x0F, 0xC8, 0x82, 0x1C, 0xC7, 0x4D, 0xAE, 0xAF, 0xC1 1627280304Sjkim } 1628280304Sjkim}; 1629238405Sjkim 1630280304Sjkimstatic const struct { 1631280304Sjkim EC_CURVE_DATA h; 1632280304Sjkim unsigned char data[20 + 21 * 6]; 1633280304Sjkim} _EC_X9_62_CHAR2_163V2 = { 1634280304Sjkim { 1635280304Sjkim NID_X9_62_characteristic_two_field, 20, 21, 2 1636280304Sjkim }, 1637280304Sjkim { 1638280304Sjkim /* seed */ 1639280304Sjkim 0x53, 0x81, 0x4C, 0x05, 0x0D, 0x44, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 1640280304Sjkim 0x15, 0x17, 0x58, 0x0C, 0xA4, 0xE2, 0x9F, 0xFD, 1641280304Sjkim /* p */ 1642280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1643280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 1644280304Sjkim /* a */ 1645280304Sjkim 0x01, 0x08, 0xB3, 0x9E, 0x77, 0xC4, 0xB1, 0x08, 0xBE, 0xD9, 0x81, 0xED, 1646280304Sjkim 0x0E, 0x89, 0x0E, 0x11, 0x7C, 0x51, 0x1C, 0xF0, 0x72, 1647280304Sjkim /* b */ 1648280304Sjkim 0x06, 0x67, 0xAC, 0xEB, 0x38, 0xAF, 0x4E, 0x48, 0x8C, 0x40, 0x74, 0x33, 1649280304Sjkim 0xFF, 0xAE, 0x4F, 0x1C, 0x81, 0x16, 0x38, 0xDF, 0x20, 1650280304Sjkim /* x */ 1651280304Sjkim 0x00, 0x24, 0x26, 0x6E, 0x4E, 0xB5, 0x10, 0x6D, 0x0A, 0x96, 0x4D, 0x92, 1652280304Sjkim 0xC4, 0x86, 0x0E, 0x26, 0x71, 0xDB, 0x9B, 0x6C, 0xC5, 1653280304Sjkim /* y */ 1654280304Sjkim 0x07, 0x9F, 0x68, 0x4D, 0xDF, 0x66, 0x84, 0xC5, 0xCD, 0x25, 0x8B, 0x38, 1655280304Sjkim 0x90, 0x02, 0x1B, 0x23, 0x86, 0xDF, 0xD1, 0x9F, 0xC5, 1656280304Sjkim /* order */ 1657280304Sjkim 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF6, 1658280304Sjkim 0x4D, 0xE1, 0x15, 0x1A, 0xDB, 0xB7, 0x8F, 0x10, 0xA7 1659280304Sjkim } 1660280304Sjkim}; 1661238405Sjkim 1662280304Sjkimstatic const struct { 1663280304Sjkim EC_CURVE_DATA h; 1664280304Sjkim unsigned char data[20 + 21 * 6]; 1665280304Sjkim} _EC_X9_62_CHAR2_163V3 = { 1666280304Sjkim { 1667280304Sjkim NID_X9_62_characteristic_two_field, 20, 21, 2 1668280304Sjkim }, 1669280304Sjkim { 1670280304Sjkim /* seed */ 1671280304Sjkim 0x50, 0xCB, 0xF1, 0xD9, 0x5C, 0xA9, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 1672280304Sjkim 0x61, 0x51, 0x75, 0xF1, 0x6A, 0x36, 0xA3, 0xB8, 1673280304Sjkim /* p */ 1674280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1675280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 1676280304Sjkim /* a */ 1677280304Sjkim 0x07, 0xA5, 0x26, 0xC6, 0x3D, 0x3E, 0x25, 0xA2, 0x56, 0xA0, 0x07, 0x69, 1678280304Sjkim 0x9F, 0x54, 0x47, 0xE3, 0x2A, 0xE4, 0x56, 0xB5, 0x0E, 1679280304Sjkim /* b */ 1680280304Sjkim 0x03, 0xF7, 0x06, 0x17, 0x98, 0xEB, 0x99, 0xE2, 0x38, 0xFD, 0x6F, 0x1B, 1681280304Sjkim 0xF9, 0x5B, 0x48, 0xFE, 0xEB, 0x48, 0x54, 0x25, 0x2B, 1682280304Sjkim /* x */ 1683280304Sjkim 0x02, 0xF9, 0xF8, 0x7B, 0x7C, 0x57, 0x4D, 0x0B, 0xDE, 0xCF, 0x8A, 0x22, 1684280304Sjkim 0xE6, 0x52, 0x47, 0x75, 0xF9, 0x8C, 0xDE, 0xBD, 0xCB, 1685280304Sjkim /* y */ 1686280304Sjkim 0x05, 0xB9, 0x35, 0x59, 0x0C, 0x15, 0x5E, 0x17, 0xEA, 0x48, 0xEB, 0x3F, 1687280304Sjkim 0xF3, 0x71, 0x8B, 0x89, 0x3D, 0xF5, 0x9A, 0x05, 0xD0, 1688280304Sjkim /* order */ 1689280304Sjkim 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1A, 1690280304Sjkim 0xEE, 0x14, 0x0F, 0x11, 0x0A, 0xFF, 0x96, 0x13, 0x09 1691280304Sjkim } 1692280304Sjkim}; 1693160814Ssimon 1694280304Sjkimstatic const struct { 1695280304Sjkim EC_CURVE_DATA h; 1696280304Sjkim unsigned char data[0 + 23 * 6]; 1697280304Sjkim} _EC_X9_62_CHAR2_176V1 = { 1698280304Sjkim { 1699280304Sjkim NID_X9_62_characteristic_two_field, 0, 23, 0xFF6E 1700280304Sjkim }, 1701280304Sjkim { 1702280304Sjkim /* no seed */ 1703280304Sjkim /* p */ 1704280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1705280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 1706280304Sjkim /* a */ 1707280304Sjkim 0x00, 0xE4, 0xE6, 0xDB, 0x29, 0x95, 0x06, 0x5C, 0x40, 0x7D, 0x9D, 0x39, 1708280304Sjkim 0xB8, 0xD0, 0x96, 0x7B, 0x96, 0x70, 0x4B, 0xA8, 0xE9, 0xC9, 0x0B, 1709280304Sjkim /* b */ 1710280304Sjkim 0x00, 0x5D, 0xDA, 0x47, 0x0A, 0xBE, 0x64, 0x14, 0xDE, 0x8E, 0xC1, 0x33, 1711280304Sjkim 0xAE, 0x28, 0xE9, 0xBB, 0xD7, 0xFC, 0xEC, 0x0A, 0xE0, 0xFF, 0xF2, 1712280304Sjkim /* x */ 1713280304Sjkim 0x00, 0x8D, 0x16, 0xC2, 0x86, 0x67, 0x98, 0xB6, 0x00, 0xF9, 0xF0, 0x8B, 1714280304Sjkim 0xB4, 0xA8, 0xE8, 0x60, 0xF3, 0x29, 0x8C, 0xE0, 0x4A, 0x57, 0x98, 1715280304Sjkim /* y */ 1716280304Sjkim 0x00, 0x6F, 0xA4, 0x53, 0x9C, 0x2D, 0xAD, 0xDD, 0xD6, 0xBA, 0xB5, 0x16, 1717280304Sjkim 0x7D, 0x61, 0xB4, 0x36, 0xE1, 0xD9, 0x2B, 0xB1, 0x6A, 0x56, 0x2C, 1718280304Sjkim /* order */ 1719280304Sjkim 0x00, 0x00, 0x01, 0x00, 0x92, 0x53, 0x73, 0x97, 0xEC, 0xA4, 0xF6, 0x14, 1720280304Sjkim 0x57, 0x99, 0xD6, 0x2B, 0x0A, 0x19, 0xCE, 0x06, 0xFE, 0x26, 0xAD 1721280304Sjkim } 1722280304Sjkim}; 1723238405Sjkim 1724280304Sjkimstatic const struct { 1725280304Sjkim EC_CURVE_DATA h; 1726280304Sjkim unsigned char data[20 + 24 * 6]; 1727280304Sjkim} _EC_X9_62_CHAR2_191V1 = { 1728280304Sjkim { 1729280304Sjkim NID_X9_62_characteristic_two_field, 20, 24, 2 1730280304Sjkim }, 1731280304Sjkim { 1732280304Sjkim /* seed */ 1733280304Sjkim 0x4E, 0x13, 0xCA, 0x54, 0x27, 0x44, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 1734280304Sjkim 0x15, 0x17, 0x55, 0x2F, 0x27, 0x9A, 0x8C, 0x84, 1735280304Sjkim /* p */ 1736280304Sjkim 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1737280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 1738280304Sjkim /* a */ 1739280304Sjkim 0x28, 0x66, 0x53, 0x7B, 0x67, 0x67, 0x52, 0x63, 0x6A, 0x68, 0xF5, 0x65, 1740280304Sjkim 0x54, 0xE1, 0x26, 0x40, 0x27, 0x6B, 0x64, 0x9E, 0xF7, 0x52, 0x62, 0x67, 1741280304Sjkim /* b */ 1742280304Sjkim 0x2E, 0x45, 0xEF, 0x57, 0x1F, 0x00, 0x78, 0x6F, 0x67, 0xB0, 0x08, 0x1B, 1743280304Sjkim 0x94, 0x95, 0xA3, 0xD9, 0x54, 0x62, 0xF5, 0xDE, 0x0A, 0xA1, 0x85, 0xEC, 1744280304Sjkim /* x */ 1745280304Sjkim 0x36, 0xB3, 0xDA, 0xF8, 0xA2, 0x32, 0x06, 0xF9, 0xC4, 0xF2, 0x99, 0xD7, 1746280304Sjkim 0xB2, 0x1A, 0x9C, 0x36, 0x91, 0x37, 0xF2, 0xC8, 0x4A, 0xE1, 0xAA, 0x0D, 1747280304Sjkim /* y */ 1748280304Sjkim 0x76, 0x5B, 0xE7, 0x34, 0x33, 0xB3, 0xF9, 0x5E, 0x33, 0x29, 0x32, 0xE7, 1749280304Sjkim 0x0E, 0xA2, 0x45, 0xCA, 0x24, 0x18, 0xEA, 0x0E, 0xF9, 0x80, 0x18, 0xFB, 1750280304Sjkim /* order */ 1751280304Sjkim 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1752280304Sjkim 0x04, 0xA2, 0x0E, 0x90, 0xC3, 0x90, 0x67, 0xC8, 0x93, 0xBB, 0xB9, 0xA5 1753280304Sjkim } 1754280304Sjkim}; 1755238405Sjkim 1756280304Sjkimstatic const struct { 1757280304Sjkim EC_CURVE_DATA h; 1758280304Sjkim unsigned char data[20 + 24 * 6]; 1759280304Sjkim} _EC_X9_62_CHAR2_191V2 = { 1760280304Sjkim { 1761280304Sjkim NID_X9_62_characteristic_two_field, 20, 24, 4 1762280304Sjkim }, 1763280304Sjkim { 1764280304Sjkim /* seed */ 1765280304Sjkim 0x08, 0x71, 0xEF, 0x2F, 0xEF, 0x24, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 1766280304Sjkim 0x15, 0x17, 0x58, 0xBE, 0xE0, 0xD9, 0x5C, 0x15, 1767280304Sjkim /* p */ 1768280304Sjkim 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1769280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 1770280304Sjkim /* a */ 1771280304Sjkim 0x40, 0x10, 0x28, 0x77, 0x4D, 0x77, 0x77, 0xC7, 0xB7, 0x66, 0x6D, 0x13, 1772280304Sjkim 0x66, 0xEA, 0x43, 0x20, 0x71, 0x27, 0x4F, 0x89, 0xFF, 0x01, 0xE7, 0x18, 1773280304Sjkim /* b */ 1774280304Sjkim 0x06, 0x20, 0x04, 0x8D, 0x28, 0xBC, 0xBD, 0x03, 0xB6, 0x24, 0x9C, 0x99, 1775280304Sjkim 0x18, 0x2B, 0x7C, 0x8C, 0xD1, 0x97, 0x00, 0xC3, 0x62, 0xC4, 0x6A, 0x01, 1776280304Sjkim /* x */ 1777280304Sjkim 0x38, 0x09, 0xB2, 0xB7, 0xCC, 0x1B, 0x28, 0xCC, 0x5A, 0x87, 0x92, 0x6A, 1778280304Sjkim 0xAD, 0x83, 0xFD, 0x28, 0x78, 0x9E, 0x81, 0xE2, 0xC9, 0xE3, 0xBF, 0x10, 1779280304Sjkim /* y */ 1780280304Sjkim 0x17, 0x43, 0x43, 0x86, 0x62, 0x6D, 0x14, 0xF3, 0xDB, 0xF0, 0x17, 0x60, 1781280304Sjkim 0xD9, 0x21, 0x3A, 0x3E, 0x1C, 0xF3, 0x7A, 0xEC, 0x43, 0x7D, 0x66, 0x8A, 1782280304Sjkim /* order */ 1783280304Sjkim 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1784280304Sjkim 0x50, 0x50, 0x8C, 0xB8, 0x9F, 0x65, 0x28, 0x24, 0xE0, 0x6B, 0x81, 0x73 1785280304Sjkim } 1786280304Sjkim}; 1787238405Sjkim 1788280304Sjkimstatic const struct { 1789280304Sjkim EC_CURVE_DATA h; 1790280304Sjkim unsigned char data[20 + 24 * 6]; 1791280304Sjkim} _EC_X9_62_CHAR2_191V3 = { 1792280304Sjkim { 1793280304Sjkim NID_X9_62_characteristic_two_field, 20, 24, 6 1794280304Sjkim }, 1795280304Sjkim { 1796280304Sjkim /* seed */ 1797280304Sjkim 0xE0, 0x53, 0x51, 0x2D, 0xC6, 0x84, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 1798280304Sjkim 0x15, 0x17, 0x50, 0x67, 0xAE, 0x78, 0x6D, 0x1F, 1799280304Sjkim /* p */ 1800280304Sjkim 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1801280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 1802280304Sjkim /* a */ 1803280304Sjkim 0x6C, 0x01, 0x07, 0x47, 0x56, 0x09, 0x91, 0x22, 0x22, 0x10, 0x56, 0x91, 1804280304Sjkim 0x1C, 0x77, 0xD7, 0x7E, 0x77, 0xA7, 0x77, 0xE7, 0xE7, 0xE7, 0x7F, 0xCB, 1805280304Sjkim /* b */ 1806280304Sjkim 0x71, 0xFE, 0x1A, 0xF9, 0x26, 0xCF, 0x84, 0x79, 0x89, 0xEF, 0xEF, 0x8D, 1807280304Sjkim 0xB4, 0x59, 0xF6, 0x63, 0x94, 0xD9, 0x0F, 0x32, 0xAD, 0x3F, 0x15, 0xE8, 1808280304Sjkim /* x */ 1809280304Sjkim 0x37, 0x5D, 0x4C, 0xE2, 0x4F, 0xDE, 0x43, 0x44, 0x89, 0xDE, 0x87, 0x46, 1810280304Sjkim 0xE7, 0x17, 0x86, 0x01, 0x50, 0x09, 0xE6, 0x6E, 0x38, 0xA9, 0x26, 0xDD, 1811280304Sjkim /* y */ 1812280304Sjkim 0x54, 0x5A, 0x39, 0x17, 0x61, 0x96, 0x57, 0x5D, 0x98, 0x59, 0x99, 0x36, 1813280304Sjkim 0x6E, 0x6A, 0xD3, 0x4C, 0xE0, 0xA7, 0x7C, 0xD7, 0x12, 0x7B, 0x06, 0xBE, 1814280304Sjkim /* order */ 1815280304Sjkim 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 1816280304Sjkim 0x61, 0x0C, 0x0B, 0x19, 0x68, 0x12, 0xBF, 0xB6, 0x28, 0x8A, 0x3E, 0xA3 1817280304Sjkim } 1818280304Sjkim}; 1819238405Sjkim 1820280304Sjkimstatic const struct { 1821280304Sjkim EC_CURVE_DATA h; 1822280304Sjkim unsigned char data[0 + 27 * 6]; 1823280304Sjkim} _EC_X9_62_CHAR2_208W1 = { 1824280304Sjkim { 1825280304Sjkim NID_X9_62_characteristic_two_field, 0, 27, 0xFE48 1826280304Sjkim }, 1827280304Sjkim { 1828280304Sjkim /* no seed */ 1829280304Sjkim /* p */ 1830280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1831280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1832280304Sjkim 0x00, 0x00, 0x07, 1833280304Sjkim /* a */ 1834280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1835280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1836280304Sjkim 0x00, 0x00, 0x00, 1837280304Sjkim /* b */ 1838280304Sjkim 0x00, 0xC8, 0x61, 0x9E, 0xD4, 0x5A, 0x62, 0xE6, 0x21, 0x2E, 0x11, 0x60, 1839280304Sjkim 0x34, 0x9E, 0x2B, 0xFA, 0x84, 0x44, 0x39, 0xFA, 0xFC, 0x2A, 0x3F, 0xD1, 1840280304Sjkim 0x63, 0x8F, 0x9E, 1841280304Sjkim /* x */ 1842280304Sjkim 0x00, 0x89, 0xFD, 0xFB, 0xE4, 0xAB, 0xE1, 0x93, 0xDF, 0x95, 0x59, 0xEC, 1843280304Sjkim 0xF0, 0x7A, 0xC0, 0xCE, 0x78, 0x55, 0x4E, 0x27, 0x84, 0xEB, 0x8C, 0x1E, 1844280304Sjkim 0xD1, 0xA5, 0x7A, 1845280304Sjkim /* y */ 1846280304Sjkim 0x00, 0x0F, 0x55, 0xB5, 0x1A, 0x06, 0xE7, 0x8E, 0x9A, 0xC3, 0x8A, 0x03, 1847280304Sjkim 0x5F, 0xF5, 0x20, 0xD8, 0xB0, 0x17, 0x81, 0xBE, 0xB1, 0xA6, 0xBB, 0x08, 1848280304Sjkim 0x61, 0x7D, 0xE3, 1849280304Sjkim /* order */ 1850280304Sjkim 0x00, 0x00, 0x01, 0x01, 0xBA, 0xF9, 0x5C, 0x97, 0x23, 0xC5, 0x7B, 0x6C, 1851280304Sjkim 0x21, 0xDA, 0x2E, 0xFF, 0x2D, 0x5E, 0xD5, 0x88, 0xBD, 0xD5, 0x71, 0x7E, 1852280304Sjkim 0x21, 0x2F, 0x9D 1853280304Sjkim } 1854280304Sjkim}; 1855238405Sjkim 1856280304Sjkimstatic const struct { 1857280304Sjkim EC_CURVE_DATA h; 1858280304Sjkim unsigned char data[20 + 30 * 6]; 1859280304Sjkim} _EC_X9_62_CHAR2_239V1 = { 1860280304Sjkim { 1861280304Sjkim NID_X9_62_characteristic_two_field, 20, 30, 4 1862280304Sjkim }, 1863280304Sjkim { 1864280304Sjkim /* seed */ 1865280304Sjkim 0xD3, 0x4B, 0x9A, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75, 1866280304Sjkim 0xCA, 0x71, 0xB9, 0x20, 0xBF, 0xEF, 0xB0, 0x5D, 1867280304Sjkim /* p */ 1868280304Sjkim 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1869280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1870280304Sjkim 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 1871280304Sjkim /* a */ 1872280304Sjkim 0x32, 0x01, 0x08, 0x57, 0x07, 0x7C, 0x54, 0x31, 0x12, 0x3A, 0x46, 0xB8, 1873280304Sjkim 0x08, 0x90, 0x67, 0x56, 0xF5, 0x43, 0x42, 0x3E, 0x8D, 0x27, 0x87, 0x75, 1874280304Sjkim 0x78, 0x12, 0x57, 0x78, 0xAC, 0x76, 1875280304Sjkim /* b */ 1876280304Sjkim 0x79, 0x04, 0x08, 0xF2, 0xEE, 0xDA, 0xF3, 0x92, 0xB0, 0x12, 0xED, 0xEF, 1877280304Sjkim 0xB3, 0x39, 0x2F, 0x30, 0xF4, 0x32, 0x7C, 0x0C, 0xA3, 0xF3, 0x1F, 0xC3, 1878280304Sjkim 0x83, 0xC4, 0x22, 0xAA, 0x8C, 0x16, 1879280304Sjkim /* x */ 1880280304Sjkim 0x57, 0x92, 0x70, 0x98, 0xFA, 0x93, 0x2E, 0x7C, 0x0A, 0x96, 0xD3, 0xFD, 1881280304Sjkim 0x5B, 0x70, 0x6E, 0xF7, 0xE5, 0xF5, 0xC1, 0x56, 0xE1, 0x6B, 0x7E, 0x7C, 1882280304Sjkim 0x86, 0x03, 0x85, 0x52, 0xE9, 0x1D, 1883280304Sjkim /* y */ 1884280304Sjkim 0x61, 0xD8, 0xEE, 0x50, 0x77, 0xC3, 0x3F, 0xEC, 0xF6, 0xF1, 0xA1, 0x6B, 1885280304Sjkim 0x26, 0x8D, 0xE4, 0x69, 0xC3, 0xC7, 0x74, 0x4E, 0xA9, 0xA9, 0x71, 0x64, 1886280304Sjkim 0x9F, 0xC7, 0xA9, 0x61, 0x63, 0x05, 1887280304Sjkim /* order */ 1888280304Sjkim 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1889280304Sjkim 0x00, 0x00, 0x00, 0x0F, 0x4D, 0x42, 0xFF, 0xE1, 0x49, 0x2A, 0x49, 0x93, 1890280304Sjkim 0xF1, 0xCA, 0xD6, 0x66, 0xE4, 0x47 1891280304Sjkim } 1892280304Sjkim}; 1893238405Sjkim 1894280304Sjkimstatic const struct { 1895280304Sjkim EC_CURVE_DATA h; 1896280304Sjkim unsigned char data[20 + 30 * 6]; 1897280304Sjkim} _EC_X9_62_CHAR2_239V2 = { 1898280304Sjkim { 1899280304Sjkim NID_X9_62_characteristic_two_field, 20, 30, 6 1900280304Sjkim }, 1901280304Sjkim { 1902280304Sjkim /* seed */ 1903280304Sjkim 0x2A, 0xA6, 0x98, 0x2F, 0xDF, 0xA4, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 1904280304Sjkim 0x15, 0x17, 0x5D, 0x26, 0x67, 0x27, 0x27, 0x7D, 1905280304Sjkim /* p */ 1906280304Sjkim 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1907280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1908280304Sjkim 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 1909280304Sjkim /* a */ 1910280304Sjkim 0x42, 0x30, 0x01, 0x77, 0x57, 0xA7, 0x67, 0xFA, 0xE4, 0x23, 0x98, 0x56, 1911280304Sjkim 0x9B, 0x74, 0x63, 0x25, 0xD4, 0x53, 0x13, 0xAF, 0x07, 0x66, 0x26, 0x64, 1912280304Sjkim 0x79, 0xB7, 0x56, 0x54, 0xE6, 0x5F, 1913280304Sjkim /* b */ 1914280304Sjkim 0x50, 0x37, 0xEA, 0x65, 0x41, 0x96, 0xCF, 0xF0, 0xCD, 0x82, 0xB2, 0xC1, 1915280304Sjkim 0x4A, 0x2F, 0xCF, 0x2E, 0x3F, 0xF8, 0x77, 0x52, 0x85, 0xB5, 0x45, 0x72, 1916280304Sjkim 0x2F, 0x03, 0xEA, 0xCD, 0xB7, 0x4B, 1917280304Sjkim /* x */ 1918280304Sjkim 0x28, 0xF9, 0xD0, 0x4E, 0x90, 0x00, 0x69, 0xC8, 0xDC, 0x47, 0xA0, 0x85, 1919280304Sjkim 0x34, 0xFE, 0x76, 0xD2, 0xB9, 0x00, 0xB7, 0xD7, 0xEF, 0x31, 0xF5, 0x70, 1920280304Sjkim 0x9F, 0x20, 0x0C, 0x4C, 0xA2, 0x05, 1921280304Sjkim /* y */ 1922280304Sjkim 0x56, 0x67, 0x33, 0x4C, 0x45, 0xAF, 0xF3, 0xB5, 0xA0, 0x3B, 0xAD, 0x9D, 1923280304Sjkim 0xD7, 0x5E, 0x2C, 0x71, 0xA9, 0x93, 0x62, 0x56, 0x7D, 0x54, 0x53, 0xF7, 1924280304Sjkim 0xFA, 0x6E, 0x22, 0x7E, 0xC8, 0x33, 1925280304Sjkim /* order */ 1926280304Sjkim 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 1927280304Sjkim 0x55, 0x55, 0x55, 0x3C, 0x6F, 0x28, 0x85, 0x25, 0x9C, 0x31, 0xE3, 0xFC, 1928280304Sjkim 0xDF, 0x15, 0x46, 0x24, 0x52, 0x2D 1929280304Sjkim } 1930280304Sjkim}; 1931160814Ssimon 1932280304Sjkimstatic const struct { 1933280304Sjkim EC_CURVE_DATA h; 1934280304Sjkim unsigned char data[20 + 30 * 6]; 1935280304Sjkim} _EC_X9_62_CHAR2_239V3 = { 1936280304Sjkim { 1937280304Sjkim NID_X9_62_characteristic_two_field, 20, 30, 0xA 1938280304Sjkim }, 1939280304Sjkim { 1940280304Sjkim /* seed */ 1941280304Sjkim 0x9E, 0x07, 0x6F, 0x4D, 0x69, 0x6E, 0x67, 0x68, 0x75, 0x61, 0x51, 0x75, 1942280304Sjkim 0xE1, 0x1E, 0x9F, 0xDD, 0x77, 0xF9, 0x20, 0x41, 1943280304Sjkim /* p */ 1944280304Sjkim 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1945280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1946280304Sjkim 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 1947280304Sjkim /* a */ 1948280304Sjkim 0x01, 0x23, 0x87, 0x74, 0x66, 0x6A, 0x67, 0x76, 0x6D, 0x66, 0x76, 0xF7, 1949280304Sjkim 0x78, 0xE6, 0x76, 0xB6, 0x69, 0x99, 0x17, 0x66, 0x66, 0xE6, 0x87, 0x66, 1950280304Sjkim 0x6D, 0x87, 0x66, 0xC6, 0x6A, 0x9F, 1951280304Sjkim /* b */ 1952280304Sjkim 0x6A, 0x94, 0x19, 0x77, 0xBA, 0x9F, 0x6A, 0x43, 0x51, 0x99, 0xAC, 0xFC, 1953280304Sjkim 0x51, 0x06, 0x7E, 0xD5, 0x87, 0xF5, 0x19, 0xC5, 0xEC, 0xB5, 0x41, 0xB8, 1954280304Sjkim 0xE4, 0x41, 0x11, 0xDE, 0x1D, 0x40, 1955280304Sjkim /* x */ 1956280304Sjkim 0x70, 0xF6, 0xE9, 0xD0, 0x4D, 0x28, 0x9C, 0x4E, 0x89, 0x91, 0x3C, 0xE3, 1957280304Sjkim 0x53, 0x0B, 0xFD, 0xE9, 0x03, 0x97, 0x7D, 0x42, 0xB1, 0x46, 0xD5, 0x39, 1958280304Sjkim 0xBF, 0x1B, 0xDE, 0x4E, 0x9C, 0x92, 1959280304Sjkim /* y */ 1960280304Sjkim 0x2E, 0x5A, 0x0E, 0xAF, 0x6E, 0x5E, 0x13, 0x05, 0xB9, 0x00, 0x4D, 0xCE, 1961280304Sjkim 0x5C, 0x0E, 0xD7, 0xFE, 0x59, 0xA3, 0x56, 0x08, 0xF3, 0x38, 0x37, 0xC8, 1962280304Sjkim 0x16, 0xD8, 0x0B, 0x79, 0xF4, 0x61, 1963280304Sjkim /* order */ 1964280304Sjkim 0x0C, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 1965280304Sjkim 0xCC, 0xCC, 0xCC, 0xAC, 0x49, 0x12, 0xD2, 0xD9, 0xDF, 0x90, 0x3E, 0xF9, 1966280304Sjkim 0x88, 0x8B, 0x8A, 0x0E, 0x4C, 0xFF 1967280304Sjkim } 1968280304Sjkim}; 1969238405Sjkim 1970280304Sjkimstatic const struct { 1971280304Sjkim EC_CURVE_DATA h; 1972280304Sjkim unsigned char data[0 + 35 * 6]; 1973280304Sjkim} _EC_X9_62_CHAR2_272W1 = { 1974280304Sjkim { 1975280304Sjkim NID_X9_62_characteristic_two_field, 0, 35, 0xFF06 1976280304Sjkim }, 1977280304Sjkim { 1978280304Sjkim /* no seed */ 1979280304Sjkim /* p */ 1980280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1981280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1982280304Sjkim 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 1983280304Sjkim /* a */ 1984280304Sjkim 0x00, 0x91, 0xA0, 0x91, 0xF0, 0x3B, 0x5F, 0xBA, 0x4A, 0xB2, 0xCC, 0xF4, 1985280304Sjkim 0x9C, 0x4E, 0xDD, 0x22, 0x0F, 0xB0, 0x28, 0x71, 0x2D, 0x42, 0xBE, 0x75, 1986280304Sjkim 0x2B, 0x2C, 0x40, 0x09, 0x4D, 0xBA, 0xCD, 0xB5, 0x86, 0xFB, 0x20, 1987280304Sjkim /* b */ 1988280304Sjkim 0x00, 0x71, 0x67, 0xEF, 0xC9, 0x2B, 0xB2, 0xE3, 0xCE, 0x7C, 0x8A, 0xAA, 1989280304Sjkim 0xFF, 0x34, 0xE1, 0x2A, 0x9C, 0x55, 0x70, 0x03, 0xD7, 0xC7, 0x3A, 0x6F, 1990280304Sjkim 0xAF, 0x00, 0x3F, 0x99, 0xF6, 0xCC, 0x84, 0x82, 0xE5, 0x40, 0xF7, 1991280304Sjkim /* x */ 1992280304Sjkim 0x00, 0x61, 0x08, 0xBA, 0xBB, 0x2C, 0xEE, 0xBC, 0xF7, 0x87, 0x05, 0x8A, 1993280304Sjkim 0x05, 0x6C, 0xBE, 0x0C, 0xFE, 0x62, 0x2D, 0x77, 0x23, 0xA2, 0x89, 0xE0, 1994280304Sjkim 0x8A, 0x07, 0xAE, 0x13, 0xEF, 0x0D, 0x10, 0xD1, 0x71, 0xDD, 0x8D, 1995280304Sjkim /* y */ 1996280304Sjkim 0x00, 0x10, 0xC7, 0x69, 0x57, 0x16, 0x85, 0x1E, 0xEF, 0x6B, 0xA7, 0xF6, 1997280304Sjkim 0x87, 0x2E, 0x61, 0x42, 0xFB, 0xD2, 0x41, 0xB8, 0x30, 0xFF, 0x5E, 0xFC, 1998280304Sjkim 0xAC, 0xEC, 0xCA, 0xB0, 0x5E, 0x02, 0x00, 0x5D, 0xDE, 0x9D, 0x23, 1999280304Sjkim /* order */ 2000280304Sjkim 0x00, 0x00, 0x01, 0x00, 0xFA, 0xF5, 0x13, 0x54, 0xE0, 0xE3, 0x9E, 0x48, 2001280304Sjkim 0x92, 0xDF, 0x6E, 0x31, 0x9C, 0x72, 0xC8, 0x16, 0x16, 0x03, 0xFA, 0x45, 2002280304Sjkim 0xAA, 0x7B, 0x99, 0x8A, 0x16, 0x7B, 0x8F, 0x1E, 0x62, 0x95, 0x21 2003280304Sjkim } 2004280304Sjkim}; 2005238405Sjkim 2006280304Sjkimstatic const struct { 2007280304Sjkim EC_CURVE_DATA h; 2008280304Sjkim unsigned char data[0 + 39 * 6]; 2009280304Sjkim} _EC_X9_62_CHAR2_304W1 = { 2010280304Sjkim { 2011280304Sjkim NID_X9_62_characteristic_two_field, 0, 39, 0xFE2E 2012280304Sjkim }, 2013280304Sjkim { 2014280304Sjkim /* no seed */ 2015280304Sjkim /* p */ 2016280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2017280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2018280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2019280304Sjkim 0x00, 0x08, 0x07, 2020280304Sjkim /* a */ 2021280304Sjkim 0x00, 0xFD, 0x0D, 0x69, 0x31, 0x49, 0xA1, 0x18, 0xF6, 0x51, 0xE6, 0xDC, 2022280304Sjkim 0xE6, 0x80, 0x20, 0x85, 0x37, 0x7E, 0x5F, 0x88, 0x2D, 0x1B, 0x51, 0x0B, 2023280304Sjkim 0x44, 0x16, 0x00, 0x74, 0xC1, 0x28, 0x80, 0x78, 0x36, 0x5A, 0x03, 0x96, 2024280304Sjkim 0xC8, 0xE6, 0x81, 2025280304Sjkim /* b */ 2026280304Sjkim 0x00, 0xBD, 0xDB, 0x97, 0xE5, 0x55, 0xA5, 0x0A, 0x90, 0x8E, 0x43, 0xB0, 2027280304Sjkim 0x1C, 0x79, 0x8E, 0xA5, 0xDA, 0xA6, 0x78, 0x8F, 0x1E, 0xA2, 0x79, 0x4E, 2028280304Sjkim 0xFC, 0xF5, 0x71, 0x66, 0xB8, 0xC1, 0x40, 0x39, 0x60, 0x1E, 0x55, 0x82, 2029280304Sjkim 0x73, 0x40, 0xBE, 2030280304Sjkim /* x */ 2031280304Sjkim 0x00, 0x19, 0x7B, 0x07, 0x84, 0x5E, 0x9B, 0xE2, 0xD9, 0x6A, 0xDB, 0x0F, 2032280304Sjkim 0x5F, 0x3C, 0x7F, 0x2C, 0xFF, 0xBD, 0x7A, 0x3E, 0xB8, 0xB6, 0xFE, 0xC3, 2033280304Sjkim 0x5C, 0x7F, 0xD6, 0x7F, 0x26, 0xDD, 0xF6, 0x28, 0x5A, 0x64, 0x4F, 0x74, 2034280304Sjkim 0x0A, 0x26, 0x14, 2035280304Sjkim /* y */ 2036280304Sjkim 0x00, 0xE1, 0x9F, 0xBE, 0xB7, 0x6E, 0x0D, 0xA1, 0x71, 0x51, 0x7E, 0xCF, 2037280304Sjkim 0x40, 0x1B, 0x50, 0x28, 0x9B, 0xF0, 0x14, 0x10, 0x32, 0x88, 0x52, 0x7A, 2038280304Sjkim 0x9B, 0x41, 0x6A, 0x10, 0x5E, 0x80, 0x26, 0x0B, 0x54, 0x9F, 0xDC, 0x1B, 2039280304Sjkim 0x92, 0xC0, 0x3B, 2040280304Sjkim /* order */ 2041280304Sjkim 0x00, 0x00, 0x01, 0x01, 0xD5, 0x56, 0x57, 0x2A, 0xAB, 0xAC, 0x80, 0x01, 2042280304Sjkim 0x01, 0xD5, 0x56, 0x57, 0x2A, 0xAB, 0xAC, 0x80, 0x01, 0x02, 0x2D, 0x5C, 2043280304Sjkim 0x91, 0xDD, 0x17, 0x3F, 0x8F, 0xB5, 0x61, 0xDA, 0x68, 0x99, 0x16, 0x44, 2044280304Sjkim 0x43, 0x05, 0x1D 2045280304Sjkim } 2046280304Sjkim}; 2047238405Sjkim 2048280304Sjkimstatic const struct { 2049280304Sjkim EC_CURVE_DATA h; 2050280304Sjkim unsigned char data[20 + 45 * 6]; 2051280304Sjkim} _EC_X9_62_CHAR2_359V1 = { 2052280304Sjkim { 2053280304Sjkim NID_X9_62_characteristic_two_field, 20, 45, 0x4C 2054280304Sjkim }, 2055280304Sjkim { 2056280304Sjkim /* seed */ 2057280304Sjkim 0x2B, 0x35, 0x49, 0x20, 0xB7, 0x24, 0xD6, 0x96, 0xE6, 0x76, 0x87, 0x56, 2058280304Sjkim 0x15, 0x17, 0x58, 0x5B, 0xA1, 0x33, 0x2D, 0xC6, 2059280304Sjkim /* p */ 2060280304Sjkim 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2061280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2062280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2063280304Sjkim 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 2064280304Sjkim /* a */ 2065280304Sjkim 0x56, 0x67, 0x67, 0x6A, 0x65, 0x4B, 0x20, 0x75, 0x4F, 0x35, 0x6E, 0xA9, 2066280304Sjkim 0x20, 0x17, 0xD9, 0x46, 0x56, 0x7C, 0x46, 0x67, 0x55, 0x56, 0xF1, 0x95, 2067280304Sjkim 0x56, 0xA0, 0x46, 0x16, 0xB5, 0x67, 0xD2, 0x23, 0xA5, 0xE0, 0x56, 0x56, 2068280304Sjkim 0xFB, 0x54, 0x90, 0x16, 0xA9, 0x66, 0x56, 0xA5, 0x57, 2069280304Sjkim /* b */ 2070280304Sjkim 0x24, 0x72, 0xE2, 0xD0, 0x19, 0x7C, 0x49, 0x36, 0x3F, 0x1F, 0xE7, 0xF5, 2071280304Sjkim 0xB6, 0xDB, 0x07, 0x5D, 0x52, 0xB6, 0x94, 0x7D, 0x13, 0x5D, 0x8C, 0xA4, 2072280304Sjkim 0x45, 0x80, 0x5D, 0x39, 0xBC, 0x34, 0x56, 0x26, 0x08, 0x96, 0x87, 0x74, 2073280304Sjkim 0x2B, 0x63, 0x29, 0xE7, 0x06, 0x80, 0x23, 0x19, 0x88, 2074280304Sjkim /* x */ 2075280304Sjkim 0x3C, 0x25, 0x8E, 0xF3, 0x04, 0x77, 0x67, 0xE7, 0xED, 0xE0, 0xF1, 0xFD, 2076280304Sjkim 0xAA, 0x79, 0xDA, 0xEE, 0x38, 0x41, 0x36, 0x6A, 0x13, 0x2E, 0x16, 0x3A, 2077280304Sjkim 0xCE, 0xD4, 0xED, 0x24, 0x01, 0xDF, 0x9C, 0x6B, 0xDC, 0xDE, 0x98, 0xE8, 2078280304Sjkim 0xE7, 0x07, 0xC0, 0x7A, 0x22, 0x39, 0xB1, 0xB0, 0x97, 2079280304Sjkim /* y */ 2080280304Sjkim 0x53, 0xD7, 0xE0, 0x85, 0x29, 0x54, 0x70, 0x48, 0x12, 0x1E, 0x9C, 0x95, 2081280304Sjkim 0xF3, 0x79, 0x1D, 0xD8, 0x04, 0x96, 0x39, 0x48, 0xF3, 0x4F, 0xAE, 0x7B, 2082280304Sjkim 0xF4, 0x4E, 0xA8, 0x23, 0x65, 0xDC, 0x78, 0x68, 0xFE, 0x57, 0xE4, 0xAE, 2083280304Sjkim 0x2D, 0xE2, 0x11, 0x30, 0x5A, 0x40, 0x71, 0x04, 0xBD, 2084280304Sjkim /* order */ 2085280304Sjkim 0x01, 0xAF, 0x28, 0x6B, 0xCA, 0x1A, 0xF2, 0x86, 0xBC, 0xA1, 0xAF, 0x28, 2086280304Sjkim 0x6B, 0xCA, 0x1A, 0xF2, 0x86, 0xBC, 0xA1, 0xAF, 0x28, 0x6B, 0xC9, 0xFB, 2087280304Sjkim 0x8F, 0x6B, 0x85, 0xC5, 0x56, 0x89, 0x2C, 0x20, 0xA7, 0xEB, 0x96, 0x4F, 2088280304Sjkim 0xE7, 0x71, 0x9E, 0x74, 0xF4, 0x90, 0x75, 0x8D, 0x3B 2089280304Sjkim } 2090280304Sjkim}; 2091238405Sjkim 2092280304Sjkimstatic const struct { 2093280304Sjkim EC_CURVE_DATA h; 2094280304Sjkim unsigned char data[0 + 47 * 6]; 2095280304Sjkim} _EC_X9_62_CHAR2_368W1 = { 2096280304Sjkim { 2097280304Sjkim NID_X9_62_characteristic_two_field, 0, 47, 0xFF70 2098280304Sjkim }, 2099280304Sjkim { 2100280304Sjkim /* no seed */ 2101280304Sjkim /* p */ 2102280304Sjkim 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2103280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2104280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2105280304Sjkim 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 2106280304Sjkim /* a */ 2107280304Sjkim 0x00, 0xE0, 0xD2, 0xEE, 0x25, 0x09, 0x52, 0x06, 0xF5, 0xE2, 0xA4, 0xF9, 2108280304Sjkim 0xED, 0x22, 0x9F, 0x1F, 0x25, 0x6E, 0x79, 0xA0, 0xE2, 0xB4, 0x55, 0x97, 2109280304Sjkim 0x0D, 0x8D, 0x0D, 0x86, 0x5B, 0xD9, 0x47, 0x78, 0xC5, 0x76, 0xD6, 0x2F, 2110280304Sjkim 0x0A, 0xB7, 0x51, 0x9C, 0xCD, 0x2A, 0x1A, 0x90, 0x6A, 0xE3, 0x0D, 2111280304Sjkim /* b */ 2112280304Sjkim 0x00, 0xFC, 0x12, 0x17, 0xD4, 0x32, 0x0A, 0x90, 0x45, 0x2C, 0x76, 0x0A, 2113280304Sjkim 0x58, 0xED, 0xCD, 0x30, 0xC8, 0xDD, 0x06, 0x9B, 0x3C, 0x34, 0x45, 0x38, 2114280304Sjkim 0x37, 0xA3, 0x4E, 0xD5, 0x0C, 0xB5, 0x49, 0x17, 0xE1, 0xC2, 0x11, 0x2D, 2115280304Sjkim 0x84, 0xD1, 0x64, 0xF4, 0x44, 0xF8, 0xF7, 0x47, 0x86, 0x04, 0x6A, 2116280304Sjkim /* x */ 2117280304Sjkim 0x00, 0x10, 0x85, 0xE2, 0x75, 0x53, 0x81, 0xDC, 0xCC, 0xE3, 0xC1, 0x55, 2118280304Sjkim 0x7A, 0xFA, 0x10, 0xC2, 0xF0, 0xC0, 0xC2, 0x82, 0x56, 0x46, 0xC5, 0xB3, 2119280304Sjkim 0x4A, 0x39, 0x4C, 0xBC, 0xFA, 0x8B, 0xC1, 0x6B, 0x22, 0xE7, 0xE7, 0x89, 2120280304Sjkim 0xE9, 0x27, 0xBE, 0x21, 0x6F, 0x02, 0xE1, 0xFB, 0x13, 0x6A, 0x5F, 2121280304Sjkim /* y */ 2122280304Sjkim 0x00, 0x7B, 0x3E, 0xB1, 0xBD, 0xDC, 0xBA, 0x62, 0xD5, 0xD8, 0xB2, 0x05, 2123280304Sjkim 0x9B, 0x52, 0x57, 0x97, 0xFC, 0x73, 0x82, 0x2C, 0x59, 0x05, 0x9C, 0x62, 2124280304Sjkim 0x3A, 0x45, 0xFF, 0x38, 0x43, 0xCE, 0xE8, 0xF8, 0x7C, 0xD1, 0x85, 0x5A, 2125280304Sjkim 0xDA, 0xA8, 0x1E, 0x2A, 0x07, 0x50, 0xB8, 0x0F, 0xDA, 0x23, 0x10, 2126280304Sjkim /* order */ 2127280304Sjkim 0x00, 0x00, 0x01, 0x00, 0x90, 0x51, 0x2D, 0xA9, 0xAF, 0x72, 0xB0, 0x83, 2128280304Sjkim 0x49, 0xD9, 0x8A, 0x5D, 0xD4, 0xC7, 0xB0, 0x53, 0x2E, 0xCA, 0x51, 0xCE, 2129280304Sjkim 0x03, 0xE2, 0xD1, 0x0F, 0x3B, 0x7A, 0xC5, 0x79, 0xBD, 0x87, 0xE9, 0x09, 2130280304Sjkim 0xAE, 0x40, 0xA6, 0xF1, 0x31, 0xE9, 0xCF, 0xCE, 0x5B, 0xD9, 0x67 2131280304Sjkim } 2132280304Sjkim}; 2133238405Sjkim 2134280304Sjkimstatic const struct { 2135280304Sjkim EC_CURVE_DATA h; 2136280304Sjkim unsigned char data[0 + 54 * 6]; 2137280304Sjkim} _EC_X9_62_CHAR2_431R1 = { 2138280304Sjkim { 2139280304Sjkim NID_X9_62_characteristic_two_field, 0, 54, 0x2760 2140280304Sjkim }, 2141280304Sjkim { 2142280304Sjkim /* no seed */ 2143280304Sjkim /* p */ 2144280304Sjkim 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2145280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2146280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2147280304Sjkim 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2148280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 2149280304Sjkim /* a */ 2150280304Sjkim 0x1A, 0x82, 0x7E, 0xF0, 0x0D, 0xD6, 0xFC, 0x0E, 0x23, 0x4C, 0xAF, 0x04, 2151280304Sjkim 0x6C, 0x6A, 0x5D, 0x8A, 0x85, 0x39, 0x5B, 0x23, 0x6C, 0xC4, 0xAD, 0x2C, 2152280304Sjkim 0xF3, 0x2A, 0x0C, 0xAD, 0xBD, 0xC9, 0xDD, 0xF6, 0x20, 0xB0, 0xEB, 0x99, 2153280304Sjkim 0x06, 0xD0, 0x95, 0x7F, 0x6C, 0x6F, 0xEA, 0xCD, 0x61, 0x54, 0x68, 0xDF, 2154280304Sjkim 0x10, 0x4D, 0xE2, 0x96, 0xCD, 0x8F, 2155280304Sjkim /* b */ 2156280304Sjkim 0x10, 0xD9, 0xB4, 0xA3, 0xD9, 0x04, 0x7D, 0x8B, 0x15, 0x43, 0x59, 0xAB, 2157280304Sjkim 0xFB, 0x1B, 0x7F, 0x54, 0x85, 0xB0, 0x4C, 0xEB, 0x86, 0x82, 0x37, 0xDD, 2158280304Sjkim 0xC9, 0xDE, 0xDA, 0x98, 0x2A, 0x67, 0x9A, 0x5A, 0x91, 0x9B, 0x62, 0x6D, 2159280304Sjkim 0x4E, 0x50, 0xA8, 0xDD, 0x73, 0x1B, 0x10, 0x7A, 0x99, 0x62, 0x38, 0x1F, 2160280304Sjkim 0xB5, 0xD8, 0x07, 0xBF, 0x26, 0x18, 2161280304Sjkim /* x */ 2162280304Sjkim 0x12, 0x0F, 0xC0, 0x5D, 0x3C, 0x67, 0xA9, 0x9D, 0xE1, 0x61, 0xD2, 0xF4, 2163280304Sjkim 0x09, 0x26, 0x22, 0xFE, 0xCA, 0x70, 0x1B, 0xE4, 0xF5, 0x0F, 0x47, 0x58, 2164280304Sjkim 0x71, 0x4E, 0x8A, 0x87, 0xBB, 0xF2, 0xA6, 0x58, 0xEF, 0x8C, 0x21, 0xE7, 2165280304Sjkim 0xC5, 0xEF, 0xE9, 0x65, 0x36, 0x1F, 0x6C, 0x29, 0x99, 0xC0, 0xC2, 0x47, 2166280304Sjkim 0xB0, 0xDB, 0xD7, 0x0C, 0xE6, 0xB7, 2167280304Sjkim /* y */ 2168280304Sjkim 0x20, 0xD0, 0xAF, 0x89, 0x03, 0xA9, 0x6F, 0x8D, 0x5F, 0xA2, 0xC2, 0x55, 2169280304Sjkim 0x74, 0x5D, 0x3C, 0x45, 0x1B, 0x30, 0x2C, 0x93, 0x46, 0xD9, 0xB7, 0xE4, 2170280304Sjkim 0x85, 0xE7, 0xBC, 0xE4, 0x1F, 0x6B, 0x59, 0x1F, 0x3E, 0x8F, 0x6A, 0xDD, 2171280304Sjkim 0xCB, 0xB0, 0xBC, 0x4C, 0x2F, 0x94, 0x7A, 0x7D, 0xE1, 0xA8, 0x9B, 0x62, 2172280304Sjkim 0x5D, 0x6A, 0x59, 0x8B, 0x37, 0x60, 2173280304Sjkim /* order */ 2174280304Sjkim 0x00, 0x03, 0x40, 0x34, 0x03, 0x40, 0x34, 0x03, 0x40, 0x34, 0x03, 0x40, 2175280304Sjkim 0x34, 0x03, 0x40, 0x34, 0x03, 0x40, 0x34, 0x03, 0x40, 0x34, 0x03, 0x40, 2176280304Sjkim 0x34, 0x03, 0x40, 0x34, 0x03, 0x23, 0xC3, 0x13, 0xFA, 0xB5, 0x05, 0x89, 2177280304Sjkim 0x70, 0x3B, 0x5E, 0xC6, 0x8D, 0x35, 0x87, 0xFE, 0xC6, 0x0D, 0x16, 0x1C, 2178280304Sjkim 0xC1, 0x49, 0xC1, 0xAD, 0x4A, 0x91 2179280304Sjkim } 2180280304Sjkim}; 2181160814Ssimon 2182280304Sjkimstatic const struct { 2183280304Sjkim EC_CURVE_DATA h; 2184280304Sjkim unsigned char data[0 + 15 * 6]; 2185280304Sjkim} _EC_WTLS_1 = { 2186280304Sjkim { 2187280304Sjkim NID_X9_62_characteristic_two_field, 0, 15, 2 2188280304Sjkim }, 2189280304Sjkim { 2190280304Sjkim /* no seed */ 2191280304Sjkim /* p */ 2192280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2193280304Sjkim 0x00, 0x02, 0x01, 2194280304Sjkim /* a */ 2195280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2196280304Sjkim 0x00, 0x00, 0x01, 2197280304Sjkim /* b */ 2198280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2199280304Sjkim 0x00, 0x00, 0x01, 2200280304Sjkim /* x */ 2201280304Sjkim 0x01, 0x66, 0x79, 0x79, 0xA4, 0x0B, 0xA4, 0x97, 0xE5, 0xD5, 0xC2, 0x70, 2202280304Sjkim 0x78, 0x06, 0x17, 2203280304Sjkim /* y */ 2204280304Sjkim 0x00, 0xF4, 0x4B, 0x4A, 0xF1, 0xEC, 0xC2, 0x63, 0x0E, 0x08, 0x78, 0x5C, 2205280304Sjkim 0xEB, 0xCC, 0x15, 2206280304Sjkim /* order */ 2207280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xBF, 0x91, 0xAF, 2208280304Sjkim 0x6D, 0xEA, 0x73 2209280304Sjkim } 2210280304Sjkim}; 2211160814Ssimon 2212160814Ssimon/* IPSec curves */ 2213280304Sjkim/* 2214280304Sjkim * NOTE: The of curves over a extension field of non prime degree is not 2215280304Sjkim * recommended (Weil-descent). As the group order is not a prime this curve 2216280304Sjkim * is not suitable for ECDSA. 2217160814Ssimon */ 2218280304Sjkimstatic const struct { 2219280304Sjkim EC_CURVE_DATA h; 2220280304Sjkim unsigned char data[0 + 20 * 6]; 2221280304Sjkim} _EC_IPSEC_155_ID3 = { 2222280304Sjkim { 2223280304Sjkim NID_X9_62_characteristic_two_field, 0, 20, 3 2224280304Sjkim }, 2225280304Sjkim { 2226280304Sjkim /* no seed */ 2227280304Sjkim /* p */ 2228280304Sjkim 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2229280304Sjkim 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 2230280304Sjkim /* a */ 2231280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2232280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2233280304Sjkim /* b */ 2234280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2235280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x33, 0x8f, 2236280304Sjkim /* x */ 2237280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2238280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 2239280304Sjkim /* y */ 2240280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2241280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc8, 2242280304Sjkim /* order */ 2243280304Sjkim 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xC7, 0xF3, 2244280304Sjkim 0xC7, 0x88, 0x1B, 0xD0, 0x86, 0x8F, 0xA8, 0x6C 2245280304Sjkim } 2246280304Sjkim}; 2247238405Sjkim 2248280304Sjkim/* 2249280304Sjkim * NOTE: The of curves over a extension field of non prime degree is not 2250280304Sjkim * recommended (Weil-descent). As the group order is not a prime this curve 2251280304Sjkim * is not suitable for ECDSA. 2252160814Ssimon */ 2253280304Sjkimstatic const struct { 2254280304Sjkim EC_CURVE_DATA h; 2255280304Sjkim unsigned char data[0 + 24 * 6]; 2256280304Sjkim} _EC_IPSEC_185_ID4 = { 2257280304Sjkim { 2258280304Sjkim NID_X9_62_characteristic_two_field, 0, 24, 2 2259280304Sjkim }, 2260280304Sjkim { 2261280304Sjkim /* no seed */ 2262280304Sjkim /* p */ 2263280304Sjkim 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2264280304Sjkim 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 2265280304Sjkim /* a */ 2266280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2267280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2268280304Sjkim /* b */ 2269280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2270280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xe9, 2271280304Sjkim /* x */ 2272280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2273280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 2274280304Sjkim /* y */ 2275280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2276280304Sjkim 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 2277280304Sjkim /* order */ 2278280304Sjkim 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2279280304Sjkim 0xED, 0xF9, 0x7C, 0x44, 0xDB, 0x9F, 0x24, 0x20, 0xBA, 0xFC, 0xA7, 0x5E 2280280304Sjkim } 2281280304Sjkim}; 2282160814Ssimon 2283238405Sjkim#endif 2284238405Sjkim 2285160814Ssimontypedef struct _ec_list_element_st { 2286280304Sjkim int nid; 2287280304Sjkim const EC_CURVE_DATA *data; 2288280304Sjkim const EC_METHOD *(*meth) (void); 2289280304Sjkim const char *comment; 2290280304Sjkim} ec_list_element; 2291160814Ssimon 2292160814Ssimonstatic const ec_list_element curve_list[] = { 2293280304Sjkim /* prime field curves */ 2294280304Sjkim /* secg curves */ 2295280304Sjkim {NID_secp112r1, &_EC_SECG_PRIME_112R1.h, 0, 2296280304Sjkim "SECG/WTLS curve over a 112 bit prime field"}, 2297280304Sjkim {NID_secp112r2, &_EC_SECG_PRIME_112R2.h, 0, 2298280304Sjkim "SECG curve over a 112 bit prime field"}, 2299280304Sjkim {NID_secp128r1, &_EC_SECG_PRIME_128R1.h, 0, 2300280304Sjkim "SECG curve over a 128 bit prime field"}, 2301280304Sjkim {NID_secp128r2, &_EC_SECG_PRIME_128R2.h, 0, 2302280304Sjkim "SECG curve over a 128 bit prime field"}, 2303280304Sjkim {NID_secp160k1, &_EC_SECG_PRIME_160K1.h, 0, 2304280304Sjkim "SECG curve over a 160 bit prime field"}, 2305280304Sjkim {NID_secp160r1, &_EC_SECG_PRIME_160R1.h, 0, 2306280304Sjkim "SECG curve over a 160 bit prime field"}, 2307280304Sjkim {NID_secp160r2, &_EC_SECG_PRIME_160R2.h, 0, 2308280304Sjkim "SECG/WTLS curve over a 160 bit prime field"}, 2309280304Sjkim /* SECG secp192r1 is the same as X9.62 prime192v1 and hence omitted */ 2310280304Sjkim {NID_secp192k1, &_EC_SECG_PRIME_192K1.h, 0, 2311280304Sjkim "SECG curve over a 192 bit prime field"}, 2312280304Sjkim {NID_secp224k1, &_EC_SECG_PRIME_224K1.h, 0, 2313280304Sjkim "SECG curve over a 224 bit prime field"}, 2314238405Sjkim#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 2315280304Sjkim {NID_secp224r1, &_EC_NIST_PRIME_224.h, EC_GFp_nistp224_method, 2316280304Sjkim "NIST/SECG curve over a 224 bit prime field"}, 2317238405Sjkim#else 2318280304Sjkim {NID_secp224r1, &_EC_NIST_PRIME_224.h, 0, 2319280304Sjkim "NIST/SECG curve over a 224 bit prime field"}, 2320238405Sjkim#endif 2321280304Sjkim {NID_secp256k1, &_EC_SECG_PRIME_256K1.h, 0, 2322280304Sjkim "SECG curve over a 256 bit prime field"}, 2323280304Sjkim /* SECG secp256r1 is the same as X9.62 prime256v1 and hence omitted */ 2324280304Sjkim {NID_secp384r1, &_EC_NIST_PRIME_384.h, 0, 2325280304Sjkim "NIST/SECG curve over a 384 bit prime field"}, 2326238405Sjkim#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 2327280304Sjkim {NID_secp521r1, &_EC_NIST_PRIME_521.h, EC_GFp_nistp521_method, 2328280304Sjkim "NIST/SECG curve over a 521 bit prime field"}, 2329238405Sjkim#else 2330280304Sjkim {NID_secp521r1, &_EC_NIST_PRIME_521.h, 0, 2331280304Sjkim "NIST/SECG curve over a 521 bit prime field"}, 2332238405Sjkim#endif 2333280304Sjkim /* X9.62 curves */ 2334280304Sjkim {NID_X9_62_prime192v1, &_EC_NIST_PRIME_192.h, 0, 2335280304Sjkim "NIST/X9.62/SECG curve over a 192 bit prime field"}, 2336280304Sjkim {NID_X9_62_prime192v2, &_EC_X9_62_PRIME_192V2.h, 0, 2337280304Sjkim "X9.62 curve over a 192 bit prime field"}, 2338280304Sjkim {NID_X9_62_prime192v3, &_EC_X9_62_PRIME_192V3.h, 0, 2339280304Sjkim "X9.62 curve over a 192 bit prime field"}, 2340280304Sjkim {NID_X9_62_prime239v1, &_EC_X9_62_PRIME_239V1.h, 0, 2341280304Sjkim "X9.62 curve over a 239 bit prime field"}, 2342280304Sjkim {NID_X9_62_prime239v2, &_EC_X9_62_PRIME_239V2.h, 0, 2343280304Sjkim "X9.62 curve over a 239 bit prime field"}, 2344280304Sjkim {NID_X9_62_prime239v3, &_EC_X9_62_PRIME_239V3.h, 0, 2345280304Sjkim "X9.62 curve over a 239 bit prime field"}, 2346238405Sjkim#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 2347280304Sjkim {NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h, EC_GFp_nistp256_method, 2348280304Sjkim "X9.62/SECG curve over a 256 bit prime field"}, 2349238405Sjkim#else 2350280304Sjkim {NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h, 0, 2351280304Sjkim "X9.62/SECG curve over a 256 bit prime field"}, 2352238405Sjkim#endif 2353238405Sjkim#ifndef OPENSSL_NO_EC2M 2354280304Sjkim /* characteristic two field curves */ 2355280304Sjkim /* NIST/SECG curves */ 2356280304Sjkim {NID_sect113r1, &_EC_SECG_CHAR2_113R1.h, 0, 2357280304Sjkim "SECG curve over a 113 bit binary field"}, 2358280304Sjkim {NID_sect113r2, &_EC_SECG_CHAR2_113R2.h, 0, 2359280304Sjkim "SECG curve over a 113 bit binary field"}, 2360280304Sjkim {NID_sect131r1, &_EC_SECG_CHAR2_131R1.h, 0, 2361280304Sjkim "SECG/WTLS curve over a 131 bit binary field"}, 2362280304Sjkim {NID_sect131r2, &_EC_SECG_CHAR2_131R2.h, 0, 2363280304Sjkim "SECG curve over a 131 bit binary field"}, 2364280304Sjkim {NID_sect163k1, &_EC_NIST_CHAR2_163K.h, 0, 2365280304Sjkim "NIST/SECG/WTLS curve over a 163 bit binary field"}, 2366280304Sjkim {NID_sect163r1, &_EC_SECG_CHAR2_163R1.h, 0, 2367280304Sjkim "SECG curve over a 163 bit binary field"}, 2368280304Sjkim {NID_sect163r2, &_EC_NIST_CHAR2_163B.h, 0, 2369280304Sjkim "NIST/SECG curve over a 163 bit binary field"}, 2370280304Sjkim {NID_sect193r1, &_EC_SECG_CHAR2_193R1.h, 0, 2371280304Sjkim "SECG curve over a 193 bit binary field"}, 2372280304Sjkim {NID_sect193r2, &_EC_SECG_CHAR2_193R2.h, 0, 2373280304Sjkim "SECG curve over a 193 bit binary field"}, 2374280304Sjkim {NID_sect233k1, &_EC_NIST_CHAR2_233K.h, 0, 2375280304Sjkim "NIST/SECG/WTLS curve over a 233 bit binary field"}, 2376280304Sjkim {NID_sect233r1, &_EC_NIST_CHAR2_233B.h, 0, 2377280304Sjkim "NIST/SECG/WTLS curve over a 233 bit binary field"}, 2378280304Sjkim {NID_sect239k1, &_EC_SECG_CHAR2_239K1.h, 0, 2379280304Sjkim "SECG curve over a 239 bit binary field"}, 2380280304Sjkim {NID_sect283k1, &_EC_NIST_CHAR2_283K.h, 0, 2381280304Sjkim "NIST/SECG curve over a 283 bit binary field"}, 2382280304Sjkim {NID_sect283r1, &_EC_NIST_CHAR2_283B.h, 0, 2383280304Sjkim "NIST/SECG curve over a 283 bit binary field"}, 2384280304Sjkim {NID_sect409k1, &_EC_NIST_CHAR2_409K.h, 0, 2385280304Sjkim "NIST/SECG curve over a 409 bit binary field"}, 2386280304Sjkim {NID_sect409r1, &_EC_NIST_CHAR2_409B.h, 0, 2387280304Sjkim "NIST/SECG curve over a 409 bit binary field"}, 2388280304Sjkim {NID_sect571k1, &_EC_NIST_CHAR2_571K.h, 0, 2389280304Sjkim "NIST/SECG curve over a 571 bit binary field"}, 2390280304Sjkim {NID_sect571r1, &_EC_NIST_CHAR2_571B.h, 0, 2391280304Sjkim "NIST/SECG curve over a 571 bit binary field"}, 2392280304Sjkim /* X9.62 curves */ 2393280304Sjkim {NID_X9_62_c2pnb163v1, &_EC_X9_62_CHAR2_163V1.h, 0, 2394280304Sjkim "X9.62 curve over a 163 bit binary field"}, 2395280304Sjkim {NID_X9_62_c2pnb163v2, &_EC_X9_62_CHAR2_163V2.h, 0, 2396280304Sjkim "X9.62 curve over a 163 bit binary field"}, 2397280304Sjkim {NID_X9_62_c2pnb163v3, &_EC_X9_62_CHAR2_163V3.h, 0, 2398280304Sjkim "X9.62 curve over a 163 bit binary field"}, 2399280304Sjkim {NID_X9_62_c2pnb176v1, &_EC_X9_62_CHAR2_176V1.h, 0, 2400280304Sjkim "X9.62 curve over a 176 bit binary field"}, 2401280304Sjkim {NID_X9_62_c2tnb191v1, &_EC_X9_62_CHAR2_191V1.h, 0, 2402280304Sjkim "X9.62 curve over a 191 bit binary field"}, 2403280304Sjkim {NID_X9_62_c2tnb191v2, &_EC_X9_62_CHAR2_191V2.h, 0, 2404280304Sjkim "X9.62 curve over a 191 bit binary field"}, 2405280304Sjkim {NID_X9_62_c2tnb191v3, &_EC_X9_62_CHAR2_191V3.h, 0, 2406280304Sjkim "X9.62 curve over a 191 bit binary field"}, 2407280304Sjkim {NID_X9_62_c2pnb208w1, &_EC_X9_62_CHAR2_208W1.h, 0, 2408280304Sjkim "X9.62 curve over a 208 bit binary field"}, 2409280304Sjkim {NID_X9_62_c2tnb239v1, &_EC_X9_62_CHAR2_239V1.h, 0, 2410280304Sjkim "X9.62 curve over a 239 bit binary field"}, 2411280304Sjkim {NID_X9_62_c2tnb239v2, &_EC_X9_62_CHAR2_239V2.h, 0, 2412280304Sjkim "X9.62 curve over a 239 bit binary field"}, 2413280304Sjkim {NID_X9_62_c2tnb239v3, &_EC_X9_62_CHAR2_239V3.h, 0, 2414280304Sjkim "X9.62 curve over a 239 bit binary field"}, 2415280304Sjkim {NID_X9_62_c2pnb272w1, &_EC_X9_62_CHAR2_272W1.h, 0, 2416280304Sjkim "X9.62 curve over a 272 bit binary field"}, 2417280304Sjkim {NID_X9_62_c2pnb304w1, &_EC_X9_62_CHAR2_304W1.h, 0, 2418280304Sjkim "X9.62 curve over a 304 bit binary field"}, 2419280304Sjkim {NID_X9_62_c2tnb359v1, &_EC_X9_62_CHAR2_359V1.h, 0, 2420280304Sjkim "X9.62 curve over a 359 bit binary field"}, 2421280304Sjkim {NID_X9_62_c2pnb368w1, &_EC_X9_62_CHAR2_368W1.h, 0, 2422280304Sjkim "X9.62 curve over a 368 bit binary field"}, 2423280304Sjkim {NID_X9_62_c2tnb431r1, &_EC_X9_62_CHAR2_431R1.h, 0, 2424280304Sjkim "X9.62 curve over a 431 bit binary field"}, 2425280304Sjkim /* 2426280304Sjkim * the WAP/WTLS curves [unlike SECG, spec has its own OIDs for curves 2427280304Sjkim * from X9.62] 2428280304Sjkim */ 2429280304Sjkim {NID_wap_wsg_idm_ecid_wtls1, &_EC_WTLS_1.h, 0, 2430280304Sjkim "WTLS curve over a 113 bit binary field"}, 2431280304Sjkim {NID_wap_wsg_idm_ecid_wtls3, &_EC_NIST_CHAR2_163K.h, 0, 2432280304Sjkim "NIST/SECG/WTLS curve over a 163 bit binary field"}, 2433280304Sjkim {NID_wap_wsg_idm_ecid_wtls4, &_EC_SECG_CHAR2_113R1.h, 0, 2434280304Sjkim "SECG curve over a 113 bit binary field"}, 2435280304Sjkim {NID_wap_wsg_idm_ecid_wtls5, &_EC_X9_62_CHAR2_163V1.h, 0, 2436280304Sjkim "X9.62 curve over a 163 bit binary field"}, 2437238405Sjkim#endif 2438280304Sjkim {NID_wap_wsg_idm_ecid_wtls6, &_EC_SECG_PRIME_112R1.h, 0, 2439280304Sjkim "SECG/WTLS curve over a 112 bit prime field"}, 2440280304Sjkim {NID_wap_wsg_idm_ecid_wtls7, &_EC_SECG_PRIME_160R2.h, 0, 2441280304Sjkim "SECG/WTLS curve over a 160 bit prime field"}, 2442280304Sjkim {NID_wap_wsg_idm_ecid_wtls8, &_EC_WTLS_8.h, 0, 2443280304Sjkim "WTLS curve over a 112 bit prime field"}, 2444280304Sjkim {NID_wap_wsg_idm_ecid_wtls9, &_EC_WTLS_9.h, 0, 2445280304Sjkim "WTLS curve over a 160 bit prime field"}, 2446238405Sjkim#ifndef OPENSSL_NO_EC2M 2447280304Sjkim {NID_wap_wsg_idm_ecid_wtls10, &_EC_NIST_CHAR2_233K.h, 0, 2448280304Sjkim "NIST/SECG/WTLS curve over a 233 bit binary field"}, 2449280304Sjkim {NID_wap_wsg_idm_ecid_wtls11, &_EC_NIST_CHAR2_233B.h, 0, 2450280304Sjkim "NIST/SECG/WTLS curve over a 233 bit binary field"}, 2451238405Sjkim#endif 2452280304Sjkim {NID_wap_wsg_idm_ecid_wtls12, &_EC_WTLS_12.h, 0, 2453280304Sjkim "WTLS curvs over a 224 bit prime field"}, 2454238405Sjkim#ifndef OPENSSL_NO_EC2M 2455280304Sjkim /* IPSec curves */ 2456280304Sjkim {NID_ipsec3, &_EC_IPSEC_155_ID3.h, 0, 2457280304Sjkim "\n\tIPSec/IKE/Oakley curve #3 over a 155 bit binary field.\n" 2458280304Sjkim "\tNot suitable for ECDSA.\n\tQuestionable extension field!"}, 2459280304Sjkim {NID_ipsec4, &_EC_IPSEC_185_ID4.h, 0, 2460280304Sjkim "\n\tIPSec/IKE/Oakley curve #4 over a 185 bit binary field.\n" 2461280304Sjkim "\tNot suitable for ECDSA.\n\tQuestionable extension field!"}, 2462238405Sjkim#endif 2463160814Ssimon}; 2464160814Ssimon 2465238405Sjkim#define curve_list_length (sizeof(curve_list)/sizeof(ec_list_element)) 2466160814Ssimon 2467238405Sjkimstatic EC_GROUP *ec_group_new_from_data(const ec_list_element curve) 2468280304Sjkim{ 2469280304Sjkim EC_GROUP *group = NULL; 2470280304Sjkim EC_POINT *P = NULL; 2471280304Sjkim BN_CTX *ctx = NULL; 2472280304Sjkim BIGNUM *p = NULL, *a = NULL, *b = NULL, *x = NULL, *y = NULL, *order = 2473280304Sjkim NULL; 2474280304Sjkim int ok = 0; 2475280304Sjkim int seed_len, param_len; 2476280304Sjkim const EC_METHOD *meth; 2477280304Sjkim const EC_CURVE_DATA *data; 2478280304Sjkim const unsigned char *params; 2479160814Ssimon 2480280304Sjkim if ((ctx = BN_CTX_new()) == NULL) { 2481280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_MALLOC_FAILURE); 2482280304Sjkim goto err; 2483280304Sjkim } 2484238405Sjkim 2485280304Sjkim data = curve.data; 2486280304Sjkim seed_len = data->seed_len; 2487280304Sjkim param_len = data->param_len; 2488280304Sjkim params = (const unsigned char *)(data + 1); /* skip header */ 2489280304Sjkim params += seed_len; /* skip seed */ 2490238405Sjkim 2491280304Sjkim if (!(p = BN_bin2bn(params + 0 * param_len, param_len, NULL)) 2492280304Sjkim || !(a = BN_bin2bn(params + 1 * param_len, param_len, NULL)) 2493280304Sjkim || !(b = BN_bin2bn(params + 2 * param_len, param_len, NULL))) { 2494280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB); 2495280304Sjkim goto err; 2496280304Sjkim } 2497160814Ssimon 2498280304Sjkim if (curve.meth != 0) { 2499280304Sjkim meth = curve.meth(); 2500280304Sjkim if (((group = EC_GROUP_new(meth)) == NULL) || 2501280304Sjkim (!(group->meth->group_set_curve(group, p, a, b, ctx)))) { 2502280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB); 2503280304Sjkim goto err; 2504280304Sjkim } 2505280304Sjkim } else if (data->field_type == NID_X9_62_prime_field) { 2506280304Sjkim if ((group = EC_GROUP_new_curve_GFp(p, a, b, ctx)) == NULL) { 2507280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB); 2508280304Sjkim goto err; 2509280304Sjkim } 2510280304Sjkim } 2511238405Sjkim#ifndef OPENSSL_NO_EC2M 2512280304Sjkim else { /* field_type == 2513280304Sjkim * NID_X9_62_characteristic_two_field */ 2514280304Sjkim 2515280304Sjkim if ((group = EC_GROUP_new_curve_GF2m(p, a, b, ctx)) == NULL) { 2516280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB); 2517280304Sjkim goto err; 2518280304Sjkim } 2519280304Sjkim } 2520238405Sjkim#endif 2521160814Ssimon 2522280304Sjkim if ((P = EC_POINT_new(group)) == NULL) { 2523280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB); 2524280304Sjkim goto err; 2525280304Sjkim } 2526238405Sjkim 2527280304Sjkim if (!(x = BN_bin2bn(params + 3 * param_len, param_len, NULL)) 2528280304Sjkim || !(y = BN_bin2bn(params + 4 * param_len, param_len, NULL))) { 2529280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB); 2530280304Sjkim goto err; 2531280304Sjkim } 2532280304Sjkim if (!EC_POINT_set_affine_coordinates_GFp(group, P, x, y, ctx)) { 2533280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB); 2534280304Sjkim goto err; 2535280304Sjkim } 2536280304Sjkim if (!(order = BN_bin2bn(params + 5 * param_len, param_len, NULL)) 2537280304Sjkim || !BN_set_word(x, (BN_ULONG)data->cofactor)) { 2538280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB); 2539280304Sjkim goto err; 2540280304Sjkim } 2541280304Sjkim if (!EC_GROUP_set_generator(group, P, order, x)) { 2542280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB); 2543280304Sjkim goto err; 2544280304Sjkim } 2545280304Sjkim if (seed_len) { 2546280304Sjkim if (!EC_GROUP_set_seed(group, params - seed_len, seed_len)) { 2547280304Sjkim ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB); 2548280304Sjkim goto err; 2549280304Sjkim } 2550280304Sjkim } 2551280304Sjkim ok = 1; 2552280304Sjkim err: 2553280304Sjkim if (!ok) { 2554280304Sjkim EC_GROUP_free(group); 2555280304Sjkim group = NULL; 2556280304Sjkim } 2557280304Sjkim if (P) 2558280304Sjkim EC_POINT_free(P); 2559280304Sjkim if (ctx) 2560280304Sjkim BN_CTX_free(ctx); 2561280304Sjkim if (p) 2562280304Sjkim BN_free(p); 2563280304Sjkim if (a) 2564280304Sjkim BN_free(a); 2565280304Sjkim if (b) 2566280304Sjkim BN_free(b); 2567280304Sjkim if (order) 2568280304Sjkim BN_free(order); 2569280304Sjkim if (x) 2570280304Sjkim BN_free(x); 2571280304Sjkim if (y) 2572280304Sjkim BN_free(y); 2573280304Sjkim return group; 2574280304Sjkim} 2575160814Ssimon 2576160814SsimonEC_GROUP *EC_GROUP_new_by_curve_name(int nid) 2577280304Sjkim{ 2578280304Sjkim size_t i; 2579280304Sjkim EC_GROUP *ret = NULL; 2580160814Ssimon 2581280304Sjkim if (nid <= 0) 2582280304Sjkim return NULL; 2583160814Ssimon 2584280304Sjkim for (i = 0; i < curve_list_length; i++) 2585280304Sjkim if (curve_list[i].nid == nid) { 2586280304Sjkim ret = ec_group_new_from_data(curve_list[i]); 2587280304Sjkim break; 2588280304Sjkim } 2589160814Ssimon 2590280304Sjkim if (ret == NULL) { 2591280304Sjkim ECerr(EC_F_EC_GROUP_NEW_BY_CURVE_NAME, EC_R_UNKNOWN_GROUP); 2592280304Sjkim return NULL; 2593280304Sjkim } 2594160814Ssimon 2595280304Sjkim EC_GROUP_set_curve_name(ret, nid); 2596160814Ssimon 2597280304Sjkim return ret; 2598280304Sjkim} 2599160814Ssimon 2600160814Ssimonsize_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems) 2601280304Sjkim{ 2602280304Sjkim size_t i, min; 2603160814Ssimon 2604280304Sjkim if (r == NULL || nitems == 0) 2605280304Sjkim return curve_list_length; 2606160814Ssimon 2607280304Sjkim min = nitems < curve_list_length ? nitems : curve_list_length; 2608160814Ssimon 2609280304Sjkim for (i = 0; i < min; i++) { 2610280304Sjkim r[i].nid = curve_list[i].nid; 2611280304Sjkim r[i].comment = curve_list[i].comment; 2612280304Sjkim } 2613160814Ssimon 2614280304Sjkim return curve_list_length; 2615280304Sjkim} 2616