1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/lib/freebl/ecl/ecl-exp.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,162 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#ifndef __ecl_exp_h_ 1.9 +#define __ecl_exp_h_ 1.10 + 1.11 +/* Curve field type */ 1.12 +typedef enum { 1.13 + ECField_GFp, 1.14 + ECField_GF2m 1.15 +} ECField; 1.16 + 1.17 +/* Hexadecimal encoding of curve parameters */ 1.18 +struct ECCurveParamsStr { 1.19 + char *text; 1.20 + ECField field; 1.21 + unsigned int size; 1.22 + char *irr; 1.23 + char *curvea; 1.24 + char *curveb; 1.25 + char *genx; 1.26 + char *geny; 1.27 + char *order; 1.28 + int cofactor; 1.29 +}; 1.30 +typedef struct ECCurveParamsStr ECCurveParams; 1.31 + 1.32 +/* Named curve parameters */ 1.33 +typedef enum { 1.34 + 1.35 + ECCurve_noName = 0, 1.36 + 1.37 + /* NIST prime curves */ 1.38 + ECCurve_NIST_P192, 1.39 + ECCurve_NIST_P224, 1.40 + ECCurve_NIST_P256, 1.41 + ECCurve_NIST_P384, 1.42 + ECCurve_NIST_P521, 1.43 + 1.44 + /* NIST binary curves */ 1.45 + ECCurve_NIST_K163, 1.46 + ECCurve_NIST_B163, 1.47 + ECCurve_NIST_K233, 1.48 + ECCurve_NIST_B233, 1.49 + ECCurve_NIST_K283, 1.50 + ECCurve_NIST_B283, 1.51 + ECCurve_NIST_K409, 1.52 + ECCurve_NIST_B409, 1.53 + ECCurve_NIST_K571, 1.54 + ECCurve_NIST_B571, 1.55 + 1.56 + /* ANSI X9.62 prime curves */ 1.57 + /* ECCurve_X9_62_PRIME_192V1 == ECCurve_NIST_P192 */ 1.58 + ECCurve_X9_62_PRIME_192V2, 1.59 + ECCurve_X9_62_PRIME_192V3, 1.60 + ECCurve_X9_62_PRIME_239V1, 1.61 + ECCurve_X9_62_PRIME_239V2, 1.62 + ECCurve_X9_62_PRIME_239V3, 1.63 + /* ECCurve_X9_62_PRIME_256V1 == ECCurve_NIST_P256 */ 1.64 + 1.65 + /* ANSI X9.62 binary curves */ 1.66 + ECCurve_X9_62_CHAR2_PNB163V1, 1.67 + ECCurve_X9_62_CHAR2_PNB163V2, 1.68 + ECCurve_X9_62_CHAR2_PNB163V3, 1.69 + ECCurve_X9_62_CHAR2_PNB176V1, 1.70 + ECCurve_X9_62_CHAR2_TNB191V1, 1.71 + ECCurve_X9_62_CHAR2_TNB191V2, 1.72 + ECCurve_X9_62_CHAR2_TNB191V3, 1.73 + ECCurve_X9_62_CHAR2_PNB208W1, 1.74 + ECCurve_X9_62_CHAR2_TNB239V1, 1.75 + ECCurve_X9_62_CHAR2_TNB239V2, 1.76 + ECCurve_X9_62_CHAR2_TNB239V3, 1.77 + ECCurve_X9_62_CHAR2_PNB272W1, 1.78 + ECCurve_X9_62_CHAR2_PNB304W1, 1.79 + ECCurve_X9_62_CHAR2_TNB359V1, 1.80 + ECCurve_X9_62_CHAR2_PNB368W1, 1.81 + ECCurve_X9_62_CHAR2_TNB431R1, 1.82 + 1.83 + /* SEC2 prime curves */ 1.84 + ECCurve_SECG_PRIME_112R1, 1.85 + ECCurve_SECG_PRIME_112R2, 1.86 + ECCurve_SECG_PRIME_128R1, 1.87 + ECCurve_SECG_PRIME_128R2, 1.88 + ECCurve_SECG_PRIME_160K1, 1.89 + ECCurve_SECG_PRIME_160R1, 1.90 + ECCurve_SECG_PRIME_160R2, 1.91 + ECCurve_SECG_PRIME_192K1, 1.92 + /* ECCurve_SECG_PRIME_192R1 == ECCurve_NIST_P192 */ 1.93 + ECCurve_SECG_PRIME_224K1, 1.94 + /* ECCurve_SECG_PRIME_224R1 == ECCurve_NIST_P224 */ 1.95 + ECCurve_SECG_PRIME_256K1, 1.96 + /* ECCurve_SECG_PRIME_256R1 == ECCurve_NIST_P256 */ 1.97 + /* ECCurve_SECG_PRIME_384R1 == ECCurve_NIST_P384 */ 1.98 + /* ECCurve_SECG_PRIME_521R1 == ECCurve_NIST_P521 */ 1.99 + 1.100 + /* SEC2 binary curves */ 1.101 + ECCurve_SECG_CHAR2_113R1, 1.102 + ECCurve_SECG_CHAR2_113R2, 1.103 + ECCurve_SECG_CHAR2_131R1, 1.104 + ECCurve_SECG_CHAR2_131R2, 1.105 + /* ECCurve_SECG_CHAR2_163K1 == ECCurve_NIST_K163 */ 1.106 + ECCurve_SECG_CHAR2_163R1, 1.107 + /* ECCurve_SECG_CHAR2_163R2 == ECCurve_NIST_B163 */ 1.108 + ECCurve_SECG_CHAR2_193R1, 1.109 + ECCurve_SECG_CHAR2_193R2, 1.110 + /* ECCurve_SECG_CHAR2_233K1 == ECCurve_NIST_K233 */ 1.111 + /* ECCurve_SECG_CHAR2_233R1 == ECCurve_NIST_B233 */ 1.112 + ECCurve_SECG_CHAR2_239K1, 1.113 + /* ECCurve_SECG_CHAR2_283K1 == ECCurve_NIST_K283 */ 1.114 + /* ECCurve_SECG_CHAR2_283R1 == ECCurve_NIST_B283 */ 1.115 + /* ECCurve_SECG_CHAR2_409K1 == ECCurve_NIST_K409 */ 1.116 + /* ECCurve_SECG_CHAR2_409R1 == ECCurve_NIST_B409 */ 1.117 + /* ECCurve_SECG_CHAR2_571K1 == ECCurve_NIST_K571 */ 1.118 + /* ECCurve_SECG_CHAR2_571R1 == ECCurve_NIST_B571 */ 1.119 + 1.120 + /* WTLS curves */ 1.121 + ECCurve_WTLS_1, 1.122 + /* there is no WTLS 2 curve */ 1.123 + /* ECCurve_WTLS_3 == ECCurve_NIST_K163 */ 1.124 + /* ECCurve_WTLS_4 == ECCurve_SECG_CHAR2_113R1 */ 1.125 + /* ECCurve_WTLS_5 == ECCurve_X9_62_CHAR2_PNB163V1 */ 1.126 + /* ECCurve_WTLS_6 == ECCurve_SECG_PRIME_112R1 */ 1.127 + /* ECCurve_WTLS_7 == ECCurve_SECG_PRIME_160R1 */ 1.128 + ECCurve_WTLS_8, 1.129 + ECCurve_WTLS_9, 1.130 + /* ECCurve_WTLS_10 == ECCurve_NIST_K233 */ 1.131 + /* ECCurve_WTLS_11 == ECCurve_NIST_B233 */ 1.132 + /* ECCurve_WTLS_12 == ECCurve_NIST_P224 */ 1.133 + 1.134 + ECCurve_pastLastCurve 1.135 +} ECCurveName; 1.136 + 1.137 +/* Aliased named curves */ 1.138 + 1.139 +#define ECCurve_X9_62_PRIME_192V1 ECCurve_NIST_P192 1.140 +#define ECCurve_X9_62_PRIME_256V1 ECCurve_NIST_P256 1.141 +#define ECCurve_SECG_PRIME_192R1 ECCurve_NIST_P192 1.142 +#define ECCurve_SECG_PRIME_224R1 ECCurve_NIST_P224 1.143 +#define ECCurve_SECG_PRIME_256R1 ECCurve_NIST_P256 1.144 +#define ECCurve_SECG_PRIME_384R1 ECCurve_NIST_P384 1.145 +#define ECCurve_SECG_PRIME_521R1 ECCurve_NIST_P521 1.146 +#define ECCurve_SECG_CHAR2_163K1 ECCurve_NIST_K163 1.147 +#define ECCurve_SECG_CHAR2_163R2 ECCurve_NIST_B163 1.148 +#define ECCurve_SECG_CHAR2_233K1 ECCurve_NIST_K233 1.149 +#define ECCurve_SECG_CHAR2_233R1 ECCurve_NIST_B233 1.150 +#define ECCurve_SECG_CHAR2_283K1 ECCurve_NIST_K283 1.151 +#define ECCurve_SECG_CHAR2_283R1 ECCurve_NIST_B283 1.152 +#define ECCurve_SECG_CHAR2_409K1 ECCurve_NIST_K409 1.153 +#define ECCurve_SECG_CHAR2_409R1 ECCurve_NIST_B409 1.154 +#define ECCurve_SECG_CHAR2_571K1 ECCurve_NIST_K571 1.155 +#define ECCurve_SECG_CHAR2_571R1 ECCurve_NIST_B571 1.156 +#define ECCurve_WTLS_3 ECCurve_NIST_K163 1.157 +#define ECCurve_WTLS_4 ECCurve_SECG_CHAR2_113R1 1.158 +#define ECCurve_WTLS_5 ECCurve_X9_62_CHAR2_PNB163V1 1.159 +#define ECCurve_WTLS_6 ECCurve_SECG_PRIME_112R1 1.160 +#define ECCurve_WTLS_7 ECCurve_SECG_PRIME_160R1 1.161 +#define ECCurve_WTLS_10 ECCurve_NIST_K233 1.162 +#define ECCurve_WTLS_11 ECCurve_NIST_B233 1.163 +#define ECCurve_WTLS_12 ECCurve_NIST_P224 1.164 + 1.165 +#endif /* __ecl_exp_h_ */