2 * ***** BEGIN LICENSE BLOCK *****
3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 * http://www.mozilla.org/MPL/
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
15 * The Original Code is the elliptic curve math library.
17 * The Initial Developer of the Original Code is
18 * Sun Microsystems, Inc.
19 * Portions created by the Initial Developer are Copyright (C) 2003
20 * the Initial Developer. All Rights Reserved.
23 * Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
25 * Alternatively, the contents of this file may be used under the terms of
26 * either the GNU General Public License Version 2 or later (the "GPL"), or
27 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28 * in which case the provisions of the GPL or the LGPL are applicable instead
29 * of those above. If you wish to allow use of your version of this file only
30 * under the terms of either the GPL or the LGPL, and not to allow others to
31 * use your version of this file under the terms of the MPL, indicate your
32 * decision by deleting the provisions above and replace them with the notice
33 * and other provisions required by the GPL or the LGPL. If you do not delete
34 * the provisions above, a recipient may use your version of this file under
35 * the terms of any one of the MPL, the GPL or the LGPL.
37 * ***** END LICENSE BLOCK ***** */
39 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
40 * Use is subject to license terms.
42 * Sun elects to use this software under the MPL license.
48 #pragma ident "%Z%%M% %I% %E% SMI"
50 /* Curve field type */
56 /* Hexadecimal encoding of curve parameters */
57 struct ECCurveParamsStr
{
69 typedef struct ECCurveParamsStr ECCurveParams
;
71 /* Named curve parameters */
76 /* NIST prime curves */
83 /* NIST binary curves */
95 /* ANSI X9.62 prime curves */
96 /* ECCurve_X9_62_PRIME_192V1 == ECCurve_NIST_P192 */
97 ECCurve_X9_62_PRIME_192V2
,
98 ECCurve_X9_62_PRIME_192V3
,
99 ECCurve_X9_62_PRIME_239V1
,
100 ECCurve_X9_62_PRIME_239V2
,
101 ECCurve_X9_62_PRIME_239V3
,
102 /* ECCurve_X9_62_PRIME_256V1 == ECCurve_NIST_P256 */
104 /* ANSI X9.62 binary curves */
105 ECCurve_X9_62_CHAR2_PNB163V1
,
106 ECCurve_X9_62_CHAR2_PNB163V2
,
107 ECCurve_X9_62_CHAR2_PNB163V3
,
108 ECCurve_X9_62_CHAR2_PNB176V1
,
109 ECCurve_X9_62_CHAR2_TNB191V1
,
110 ECCurve_X9_62_CHAR2_TNB191V2
,
111 ECCurve_X9_62_CHAR2_TNB191V3
,
112 ECCurve_X9_62_CHAR2_PNB208W1
,
113 ECCurve_X9_62_CHAR2_TNB239V1
,
114 ECCurve_X9_62_CHAR2_TNB239V2
,
115 ECCurve_X9_62_CHAR2_TNB239V3
,
116 ECCurve_X9_62_CHAR2_PNB272W1
,
117 ECCurve_X9_62_CHAR2_PNB304W1
,
118 ECCurve_X9_62_CHAR2_TNB359V1
,
119 ECCurve_X9_62_CHAR2_PNB368W1
,
120 ECCurve_X9_62_CHAR2_TNB431R1
,
122 /* SEC2 prime curves */
123 ECCurve_SECG_PRIME_112R1
,
124 ECCurve_SECG_PRIME_112R2
,
125 ECCurve_SECG_PRIME_128R1
,
126 ECCurve_SECG_PRIME_128R2
,
127 ECCurve_SECG_PRIME_160K1
,
128 ECCurve_SECG_PRIME_160R1
,
129 ECCurve_SECG_PRIME_160R2
,
130 ECCurve_SECG_PRIME_192K1
,
131 /* ECCurve_SECG_PRIME_192R1 == ECCurve_NIST_P192 */
132 ECCurve_SECG_PRIME_224K1
,
133 /* ECCurve_SECG_PRIME_224R1 == ECCurve_NIST_P224 */
134 ECCurve_SECG_PRIME_256K1
,
135 /* ECCurve_SECG_PRIME_256R1 == ECCurve_NIST_P256 */
136 /* ECCurve_SECG_PRIME_384R1 == ECCurve_NIST_P384 */
137 /* ECCurve_SECG_PRIME_521R1 == ECCurve_NIST_P521 */
139 /* SEC2 binary curves */
140 ECCurve_SECG_CHAR2_113R1
,
141 ECCurve_SECG_CHAR2_113R2
,
142 ECCurve_SECG_CHAR2_131R1
,
143 ECCurve_SECG_CHAR2_131R2
,
144 /* ECCurve_SECG_CHAR2_163K1 == ECCurve_NIST_K163 */
145 ECCurve_SECG_CHAR2_163R1
,
146 /* ECCurve_SECG_CHAR2_163R2 == ECCurve_NIST_B163 */
147 ECCurve_SECG_CHAR2_193R1
,
148 ECCurve_SECG_CHAR2_193R2
,
149 /* ECCurve_SECG_CHAR2_233K1 == ECCurve_NIST_K233 */
150 /* ECCurve_SECG_CHAR2_233R1 == ECCurve_NIST_B233 */
151 ECCurve_SECG_CHAR2_239K1
,
152 /* ECCurve_SECG_CHAR2_283K1 == ECCurve_NIST_K283 */
153 /* ECCurve_SECG_CHAR2_283R1 == ECCurve_NIST_B283 */
154 /* ECCurve_SECG_CHAR2_409K1 == ECCurve_NIST_K409 */
155 /* ECCurve_SECG_CHAR2_409R1 == ECCurve_NIST_B409 */
156 /* ECCurve_SECG_CHAR2_571K1 == ECCurve_NIST_K571 */
157 /* ECCurve_SECG_CHAR2_571R1 == ECCurve_NIST_B571 */
161 /* there is no WTLS 2 curve */
162 /* ECCurve_WTLS_3 == ECCurve_NIST_K163 */
163 /* ECCurve_WTLS_4 == ECCurve_SECG_CHAR2_113R1 */
164 /* ECCurve_WTLS_5 == ECCurve_X9_62_CHAR2_PNB163V1 */
165 /* ECCurve_WTLS_6 == ECCurve_SECG_PRIME_112R1 */
166 /* ECCurve_WTLS_7 == ECCurve_SECG_PRIME_160R1 */
169 /* ECCurve_WTLS_10 == ECCurve_NIST_K233 */
170 /* ECCurve_WTLS_11 == ECCurve_NIST_B233 */
171 /* ECCurve_WTLS_12 == ECCurve_NIST_P224 */
173 ECCurve_pastLastCurve
176 /* Aliased named curves */
178 #define ECCurve_X9_62_PRIME_192V1 ECCurve_NIST_P192
179 #define ECCurve_X9_62_PRIME_256V1 ECCurve_NIST_P256
180 #define ECCurve_SECG_PRIME_192R1 ECCurve_NIST_P192
181 #define ECCurve_SECG_PRIME_224R1 ECCurve_NIST_P224
182 #define ECCurve_SECG_PRIME_256R1 ECCurve_NIST_P256
183 #define ECCurve_SECG_PRIME_384R1 ECCurve_NIST_P384
184 #define ECCurve_SECG_PRIME_521R1 ECCurve_NIST_P521
185 #define ECCurve_SECG_CHAR2_163K1 ECCurve_NIST_K163
186 #define ECCurve_SECG_CHAR2_163R2 ECCurve_NIST_B163
187 #define ECCurve_SECG_CHAR2_233K1 ECCurve_NIST_K233
188 #define ECCurve_SECG_CHAR2_233R1 ECCurve_NIST_B233
189 #define ECCurve_SECG_CHAR2_283K1 ECCurve_NIST_K283
190 #define ECCurve_SECG_CHAR2_283R1 ECCurve_NIST_B283
191 #define ECCurve_SECG_CHAR2_409K1 ECCurve_NIST_K409
192 #define ECCurve_SECG_CHAR2_409R1 ECCurve_NIST_B409
193 #define ECCurve_SECG_CHAR2_571K1 ECCurve_NIST_K571
194 #define ECCurve_SECG_CHAR2_571R1 ECCurve_NIST_B571
195 #define ECCurve_WTLS_3 ECCurve_NIST_K163
196 #define ECCurve_WTLS_4 ECCurve_SECG_CHAR2_113R1
197 #define ECCurve_WTLS_5 ECCurve_X9_62_CHAR2_PNB163V1
198 #define ECCurve_WTLS_6 ECCurve_SECG_PRIME_112R1
199 #define ECCurve_WTLS_7 ECCurve_SECG_PRIME_160R1
200 #define ECCurve_WTLS_10 ECCurve_NIST_K233
201 #define ECCurve_WTLS_11 ECCurve_NIST_B233
202 #define ECCurve_WTLS_12 ECCurve_NIST_P224
204 #endif /* _ECL_EXP_H */