michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef __ecl_exp_h_ michael@0: #define __ecl_exp_h_ michael@0: michael@0: /* Curve field type */ michael@0: typedef enum { michael@0: ECField_GFp, michael@0: ECField_GF2m michael@0: } ECField; michael@0: michael@0: /* Hexadecimal encoding of curve parameters */ michael@0: struct ECCurveParamsStr { michael@0: char *text; michael@0: ECField field; michael@0: unsigned int size; michael@0: char *irr; michael@0: char *curvea; michael@0: char *curveb; michael@0: char *genx; michael@0: char *geny; michael@0: char *order; michael@0: int cofactor; michael@0: }; michael@0: typedef struct ECCurveParamsStr ECCurveParams; michael@0: michael@0: /* Named curve parameters */ michael@0: typedef enum { michael@0: michael@0: ECCurve_noName = 0, michael@0: michael@0: /* NIST prime curves */ michael@0: ECCurve_NIST_P192, michael@0: ECCurve_NIST_P224, michael@0: ECCurve_NIST_P256, michael@0: ECCurve_NIST_P384, michael@0: ECCurve_NIST_P521, michael@0: michael@0: /* NIST binary curves */ michael@0: ECCurve_NIST_K163, michael@0: ECCurve_NIST_B163, michael@0: ECCurve_NIST_K233, michael@0: ECCurve_NIST_B233, michael@0: ECCurve_NIST_K283, michael@0: ECCurve_NIST_B283, michael@0: ECCurve_NIST_K409, michael@0: ECCurve_NIST_B409, michael@0: ECCurve_NIST_K571, michael@0: ECCurve_NIST_B571, michael@0: michael@0: /* ANSI X9.62 prime curves */ michael@0: /* ECCurve_X9_62_PRIME_192V1 == ECCurve_NIST_P192 */ michael@0: ECCurve_X9_62_PRIME_192V2, michael@0: ECCurve_X9_62_PRIME_192V3, michael@0: ECCurve_X9_62_PRIME_239V1, michael@0: ECCurve_X9_62_PRIME_239V2, michael@0: ECCurve_X9_62_PRIME_239V3, michael@0: /* ECCurve_X9_62_PRIME_256V1 == ECCurve_NIST_P256 */ michael@0: michael@0: /* ANSI X9.62 binary curves */ michael@0: ECCurve_X9_62_CHAR2_PNB163V1, michael@0: ECCurve_X9_62_CHAR2_PNB163V2, michael@0: ECCurve_X9_62_CHAR2_PNB163V3, michael@0: ECCurve_X9_62_CHAR2_PNB176V1, michael@0: ECCurve_X9_62_CHAR2_TNB191V1, michael@0: ECCurve_X9_62_CHAR2_TNB191V2, michael@0: ECCurve_X9_62_CHAR2_TNB191V3, michael@0: ECCurve_X9_62_CHAR2_PNB208W1, michael@0: ECCurve_X9_62_CHAR2_TNB239V1, michael@0: ECCurve_X9_62_CHAR2_TNB239V2, michael@0: ECCurve_X9_62_CHAR2_TNB239V3, michael@0: ECCurve_X9_62_CHAR2_PNB272W1, michael@0: ECCurve_X9_62_CHAR2_PNB304W1, michael@0: ECCurve_X9_62_CHAR2_TNB359V1, michael@0: ECCurve_X9_62_CHAR2_PNB368W1, michael@0: ECCurve_X9_62_CHAR2_TNB431R1, michael@0: michael@0: /* SEC2 prime curves */ michael@0: ECCurve_SECG_PRIME_112R1, michael@0: ECCurve_SECG_PRIME_112R2, michael@0: ECCurve_SECG_PRIME_128R1, michael@0: ECCurve_SECG_PRIME_128R2, michael@0: ECCurve_SECG_PRIME_160K1, michael@0: ECCurve_SECG_PRIME_160R1, michael@0: ECCurve_SECG_PRIME_160R2, michael@0: ECCurve_SECG_PRIME_192K1, michael@0: /* ECCurve_SECG_PRIME_192R1 == ECCurve_NIST_P192 */ michael@0: ECCurve_SECG_PRIME_224K1, michael@0: /* ECCurve_SECG_PRIME_224R1 == ECCurve_NIST_P224 */ michael@0: ECCurve_SECG_PRIME_256K1, michael@0: /* ECCurve_SECG_PRIME_256R1 == ECCurve_NIST_P256 */ michael@0: /* ECCurve_SECG_PRIME_384R1 == ECCurve_NIST_P384 */ michael@0: /* ECCurve_SECG_PRIME_521R1 == ECCurve_NIST_P521 */ michael@0: michael@0: /* SEC2 binary curves */ michael@0: ECCurve_SECG_CHAR2_113R1, michael@0: ECCurve_SECG_CHAR2_113R2, michael@0: ECCurve_SECG_CHAR2_131R1, michael@0: ECCurve_SECG_CHAR2_131R2, michael@0: /* ECCurve_SECG_CHAR2_163K1 == ECCurve_NIST_K163 */ michael@0: ECCurve_SECG_CHAR2_163R1, michael@0: /* ECCurve_SECG_CHAR2_163R2 == ECCurve_NIST_B163 */ michael@0: ECCurve_SECG_CHAR2_193R1, michael@0: ECCurve_SECG_CHAR2_193R2, michael@0: /* ECCurve_SECG_CHAR2_233K1 == ECCurve_NIST_K233 */ michael@0: /* ECCurve_SECG_CHAR2_233R1 == ECCurve_NIST_B233 */ michael@0: ECCurve_SECG_CHAR2_239K1, michael@0: /* ECCurve_SECG_CHAR2_283K1 == ECCurve_NIST_K283 */ michael@0: /* ECCurve_SECG_CHAR2_283R1 == ECCurve_NIST_B283 */ michael@0: /* ECCurve_SECG_CHAR2_409K1 == ECCurve_NIST_K409 */ michael@0: /* ECCurve_SECG_CHAR2_409R1 == ECCurve_NIST_B409 */ michael@0: /* ECCurve_SECG_CHAR2_571K1 == ECCurve_NIST_K571 */ michael@0: /* ECCurve_SECG_CHAR2_571R1 == ECCurve_NIST_B571 */ michael@0: michael@0: /* WTLS curves */ michael@0: ECCurve_WTLS_1, michael@0: /* there is no WTLS 2 curve */ michael@0: /* ECCurve_WTLS_3 == ECCurve_NIST_K163 */ michael@0: /* ECCurve_WTLS_4 == ECCurve_SECG_CHAR2_113R1 */ michael@0: /* ECCurve_WTLS_5 == ECCurve_X9_62_CHAR2_PNB163V1 */ michael@0: /* ECCurve_WTLS_6 == ECCurve_SECG_PRIME_112R1 */ michael@0: /* ECCurve_WTLS_7 == ECCurve_SECG_PRIME_160R1 */ michael@0: ECCurve_WTLS_8, michael@0: ECCurve_WTLS_9, michael@0: /* ECCurve_WTLS_10 == ECCurve_NIST_K233 */ michael@0: /* ECCurve_WTLS_11 == ECCurve_NIST_B233 */ michael@0: /* ECCurve_WTLS_12 == ECCurve_NIST_P224 */ michael@0: michael@0: ECCurve_pastLastCurve michael@0: } ECCurveName; michael@0: michael@0: /* Aliased named curves */ michael@0: michael@0: #define ECCurve_X9_62_PRIME_192V1 ECCurve_NIST_P192 michael@0: #define ECCurve_X9_62_PRIME_256V1 ECCurve_NIST_P256 michael@0: #define ECCurve_SECG_PRIME_192R1 ECCurve_NIST_P192 michael@0: #define ECCurve_SECG_PRIME_224R1 ECCurve_NIST_P224 michael@0: #define ECCurve_SECG_PRIME_256R1 ECCurve_NIST_P256 michael@0: #define ECCurve_SECG_PRIME_384R1 ECCurve_NIST_P384 michael@0: #define ECCurve_SECG_PRIME_521R1 ECCurve_NIST_P521 michael@0: #define ECCurve_SECG_CHAR2_163K1 ECCurve_NIST_K163 michael@0: #define ECCurve_SECG_CHAR2_163R2 ECCurve_NIST_B163 michael@0: #define ECCurve_SECG_CHAR2_233K1 ECCurve_NIST_K233 michael@0: #define ECCurve_SECG_CHAR2_233R1 ECCurve_NIST_B233 michael@0: #define ECCurve_SECG_CHAR2_283K1 ECCurve_NIST_K283 michael@0: #define ECCurve_SECG_CHAR2_283R1 ECCurve_NIST_B283 michael@0: #define ECCurve_SECG_CHAR2_409K1 ECCurve_NIST_K409 michael@0: #define ECCurve_SECG_CHAR2_409R1 ECCurve_NIST_B409 michael@0: #define ECCurve_SECG_CHAR2_571K1 ECCurve_NIST_K571 michael@0: #define ECCurve_SECG_CHAR2_571R1 ECCurve_NIST_B571 michael@0: #define ECCurve_WTLS_3 ECCurve_NIST_K163 michael@0: #define ECCurve_WTLS_4 ECCurve_SECG_CHAR2_113R1 michael@0: #define ECCurve_WTLS_5 ECCurve_X9_62_CHAR2_PNB163V1 michael@0: #define ECCurve_WTLS_6 ECCurve_SECG_PRIME_112R1 michael@0: #define ECCurve_WTLS_7 ECCurve_SECG_PRIME_160R1 michael@0: #define ECCurve_WTLS_10 ECCurve_NIST_K233 michael@0: #define ECCurve_WTLS_11 ECCurve_NIST_B233 michael@0: #define ECCurve_WTLS_12 ECCurve_NIST_P224 michael@0: michael@0: #endif /* __ecl_exp_h_ */