mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 20:35:50 +00:00
Changes to enable ECC over characteristic 2^m fields.
Contribution from Vipul Gupta <Vipul.Gupta@Sun.COM> Modified Files: nss/cmd/strsclnt/strsclnt.c nss/lib/cryptohi/seckey.c nss/lib/freebl/blapit.h nss/lib/freebl/ec.c nss/lib/freebl/manifest.mn nss/lib/freebl/mpi/Makefile nss/lib/softoken/ecdecode.c nss/lib/softoken/pkcs11.c nss/lib/ssl/ssl3con.c nss/lib/util/secoid.c nss/lib/util/secoidt.h
This commit is contained in:
parent
794693ed79
commit
3f52ba47c1
@ -83,6 +83,27 @@ int ssl2CipherSuites[] = {
|
||||
SSL_EN_RC2_128_CBC_EXPORT40_WITH_MD5, /* D */
|
||||
SSL_EN_DES_64_CBC_WITH_MD5, /* E */
|
||||
SSL_EN_DES_192_EDE3_CBC_WITH_MD5, /* F */
|
||||
#ifdef NSS_ENABLE_ECC
|
||||
/* NOTE: Since no new SSL2 ciphersuites are being
|
||||
* invented, and we've run out of lowercase letters
|
||||
* for SSL3 ciphers, we use letters G and beyond
|
||||
* for new SSL3 ciphers.
|
||||
*/
|
||||
TLS_ECDH_ECDSA_WITH_NULL_SHA, /* G */
|
||||
TLS_ECDH_ECDSA_WITH_RC4_128_SHA, /* H */
|
||||
TLS_ECDH_ECDSA_WITH_DES_CBC_SHA, /* I */
|
||||
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, /* J */
|
||||
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, /* K */
|
||||
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, /* L */
|
||||
TLS_ECDH_RSA_WITH_NULL_SHA, /* M */
|
||||
TLS_ECDH_RSA_WITH_RC4_128_SHA, /* N */
|
||||
TLS_ECDH_RSA_WITH_DES_CBC_SHA, /* O */
|
||||
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, /* P */
|
||||
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, /* Q */
|
||||
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, /* R */
|
||||
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, /* S */
|
||||
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, /* T */
|
||||
#endif /* NSS_ENABLE_ECC */
|
||||
0
|
||||
};
|
||||
|
||||
|
@ -943,10 +943,14 @@ seckey_supportedECParams(SECItem *encodedParams)
|
||||
oid.data = encodedParams->data + 2;
|
||||
tag = SECOID_FindOIDTag(&oid);
|
||||
|
||||
return (((tag >= SEC_OID_ANSIX962_EC_PRIME192V1)
|
||||
&& (tag <= SEC_OID_ANSIX962_EC_PRIME256V1)) ||
|
||||
((tag >= SEC_OID_SECG_EC_SECP112R1)
|
||||
&& (tag <= SEC_OID_SECG_EC_SECP521R1)));
|
||||
return (((tag >= SEC_OID_ANSIX962_EC_PRIME192V1) &&
|
||||
(tag <= SEC_OID_ANSIX962_EC_PRIME256V1)) ||
|
||||
((tag >= SEC_OID_SECG_EC_SECP112R1) &&
|
||||
(tag <= SEC_OID_SECG_EC_SECP521R1)) ||
|
||||
((tag >= SEC_OID_ANSIX962_EC_C2PNB163V1) &&
|
||||
(tag <= SEC_OID_ANSIX962_EC_C2TNB431R1)) ||
|
||||
((tag >= SEC_OID_SECG_EC_SECT113R1) &&
|
||||
(tag <= SEC_OID_SECG_EC_SECT571R1)));
|
||||
}
|
||||
|
||||
static int
|
||||
@ -1177,39 +1181,116 @@ seckey_ECParams2KeySize(SECItem *encodedParams)
|
||||
oid.data = encodedParams->data + 2;
|
||||
if ((tag = SECOID_FindOIDTag(&oid)) == SEC_OID_UNKNOWN)
|
||||
return 0;
|
||||
switch (tag) {
|
||||
case SEC_OID_ANSIX962_EC_PRIME192V1:
|
||||
case SEC_OID_ANSIX962_EC_PRIME192V2:
|
||||
case SEC_OID_ANSIX962_EC_PRIME192V3:
|
||||
return 192;
|
||||
case SEC_OID_ANSIX962_EC_PRIME239V1:
|
||||
case SEC_OID_ANSIX962_EC_PRIME239V2:
|
||||
case SEC_OID_ANSIX962_EC_PRIME239V3:
|
||||
return 239;
|
||||
case SEC_OID_ANSIX962_EC_PRIME256V1:
|
||||
return 256;
|
||||
|
||||
switch (tag) {
|
||||
case SEC_OID_SECG_EC_SECP112R1:
|
||||
case SEC_OID_SECG_EC_SECP112R2:
|
||||
return 112;
|
||||
return 112;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT113R1:
|
||||
case SEC_OID_SECG_EC_SECT113R2:
|
||||
return 113;
|
||||
|
||||
case SEC_OID_SECG_EC_SECP128R1:
|
||||
case SEC_OID_SECG_EC_SECP128R2:
|
||||
return 128;
|
||||
return 128;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT131R1:
|
||||
case SEC_OID_SECG_EC_SECT131R2:
|
||||
return 131;
|
||||
|
||||
case SEC_OID_SECG_EC_SECP160K1:
|
||||
case SEC_OID_SECG_EC_SECP160R1:
|
||||
case SEC_OID_SECG_EC_SECP160R2:
|
||||
return 160;
|
||||
return 160;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT163K1:
|
||||
case SEC_OID_SECG_EC_SECT163R1:
|
||||
case SEC_OID_SECG_EC_SECT163R2:
|
||||
case SEC_OID_ANSIX962_EC_C2PNB163V1:
|
||||
case SEC_OID_ANSIX962_EC_C2PNB163V2:
|
||||
case SEC_OID_ANSIX962_EC_C2PNB163V3:
|
||||
return 163;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB176V1:
|
||||
return 176;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB191V1:
|
||||
case SEC_OID_ANSIX962_EC_C2TNB191V2:
|
||||
case SEC_OID_ANSIX962_EC_C2TNB191V3:
|
||||
case SEC_OID_ANSIX962_EC_C2ONB191V4:
|
||||
case SEC_OID_ANSIX962_EC_C2ONB191V5:
|
||||
return 191;
|
||||
|
||||
case SEC_OID_SECG_EC_SECP192K1:
|
||||
return 192;
|
||||
case SEC_OID_ANSIX962_EC_PRIME192V1:
|
||||
case SEC_OID_ANSIX962_EC_PRIME192V2:
|
||||
case SEC_OID_ANSIX962_EC_PRIME192V3:
|
||||
return 192;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT193R1:
|
||||
case SEC_OID_SECG_EC_SECT193R2:
|
||||
return 193;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB208W1:
|
||||
return 208;
|
||||
|
||||
case SEC_OID_SECG_EC_SECP224K1:
|
||||
case SEC_OID_SECG_EC_SECP224R1:
|
||||
return 224;
|
||||
return 224;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT233K1:
|
||||
case SEC_OID_SECG_EC_SECT233R1:
|
||||
return 233;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT239K1:
|
||||
case SEC_OID_ANSIX962_EC_C2TNB239V1:
|
||||
case SEC_OID_ANSIX962_EC_C2TNB239V2:
|
||||
case SEC_OID_ANSIX962_EC_C2TNB239V3:
|
||||
case SEC_OID_ANSIX962_EC_C2ONB239V4:
|
||||
case SEC_OID_ANSIX962_EC_C2ONB239V5:
|
||||
case SEC_OID_ANSIX962_EC_PRIME239V1:
|
||||
case SEC_OID_ANSIX962_EC_PRIME239V2:
|
||||
case SEC_OID_ANSIX962_EC_PRIME239V3:
|
||||
return 239;
|
||||
|
||||
case SEC_OID_SECG_EC_SECP256K1:
|
||||
return 256;
|
||||
case SEC_OID_ANSIX962_EC_PRIME256V1:
|
||||
return 256;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB272W1:
|
||||
return 272;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT283K1:
|
||||
case SEC_OID_SECG_EC_SECT283R1:
|
||||
return 283;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB304W1:
|
||||
return 304;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB359V1:
|
||||
return 359;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB368W1:
|
||||
return 368;
|
||||
|
||||
case SEC_OID_SECG_EC_SECP384R1:
|
||||
return 384;
|
||||
return 384;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT409K1:
|
||||
case SEC_OID_SECG_EC_SECT409R1:
|
||||
return 409;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB431R1:
|
||||
return 431;
|
||||
|
||||
case SEC_OID_SECG_EC_SECP521R1:
|
||||
return 521;
|
||||
return 521;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT571K1:
|
||||
case SEC_OID_SECG_EC_SECT571R1:
|
||||
return 571;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@ -36,7 +36,7 @@
|
||||
* may use your version of this file under either the MPL or the
|
||||
* GPL.
|
||||
*
|
||||
* $Id: blapit.h,v 1.9 2003/02/27 01:31:12 nelsonb%netscape.com Exp $
|
||||
* $Id: blapit.h,v 1.10 2003/03/29 00:18:18 nelsonb%netscape.com Exp $
|
||||
*/
|
||||
|
||||
#ifndef _BLAPIT_H_
|
||||
@ -286,8 +286,8 @@ struct ECFieldIDStr {
|
||||
int size; /* field size in bits */
|
||||
ECFieldType type;
|
||||
union {
|
||||
SECItem prime; /* prime p for (GFp) */
|
||||
SECItem m; /* integer m for (GF2m) */
|
||||
SECItem prime; /* prime p for (GFp) */
|
||||
SECItem poly; /* irreducible binary polynomial for (GF2m) */
|
||||
} u;
|
||||
int k1; /* first coefficient of pentanomial or
|
||||
* the only coefficient of trinomial
|
||||
|
@ -41,6 +41,7 @@
|
||||
#include "secitem.h"
|
||||
#include "ec.h"
|
||||
#include "GFp_ecl.h"
|
||||
#include "GF2m_ecl.h"
|
||||
|
||||
#ifdef NSS_ENABLE_ECC
|
||||
|
||||
@ -69,7 +70,7 @@ ec_point_add(ECParams *params, SECItem *pointP,
|
||||
SECItem *pointQ, SECItem *pointR)
|
||||
{
|
||||
mp_int Px, Py, Qx, Qy, Rx, Ry;
|
||||
mp_int prime, a;
|
||||
mp_int irreducible, a;
|
||||
SECStatus rv = SECFailure;
|
||||
mp_err err = MP_OKAY;
|
||||
int len;
|
||||
@ -109,7 +110,7 @@ ec_point_add(ECParams *params, SECItem *pointP,
|
||||
MP_DIGITS(&Qy) = 0;
|
||||
MP_DIGITS(&Rx) = 0;
|
||||
MP_DIGITS(&Ry) = 0;
|
||||
MP_DIGITS(&prime) = 0;
|
||||
MP_DIGITS(&irreducible) = 0;
|
||||
MP_DIGITS(&a) = 0;
|
||||
CHECK_MPI_OK( mp_init(&Px) );
|
||||
CHECK_MPI_OK( mp_init(&Py) );
|
||||
@ -117,7 +118,7 @@ ec_point_add(ECParams *params, SECItem *pointP,
|
||||
CHECK_MPI_OK( mp_init(&Qy) );
|
||||
CHECK_MPI_OK( mp_init(&Rx) );
|
||||
CHECK_MPI_OK( mp_init(&Ry) );
|
||||
CHECK_MPI_OK( mp_init(&prime) );
|
||||
CHECK_MPI_OK( mp_init(&irreducible) );
|
||||
CHECK_MPI_OK( mp_init(&a) );
|
||||
|
||||
/* Initialize Px and Py */
|
||||
@ -132,14 +133,21 @@ ec_point_add(ECParams *params, SECItem *pointP,
|
||||
CHECK_MPI_OK( mp_read_unsigned_octets(&Qy, pointQ->data + 1 + len,
|
||||
(mp_size) len) );
|
||||
|
||||
/* Set up the prime and curve coefficient */
|
||||
SECITEM_TO_MPINT( params->fieldID.u.prime, &prime );
|
||||
/* Set up the curve coefficient */
|
||||
SECITEM_TO_MPINT( params->curve.a, &a );
|
||||
|
||||
/* Compute R = P + Q */
|
||||
if (GFp_ec_pt_add(&prime, &a, &Px, &Py, &Qx, &Qy,
|
||||
if (params->fieldID.type == ec_field_GFp) {
|
||||
SECITEM_TO_MPINT( params->fieldID.u.prime, &irreducible );
|
||||
if (GFp_ec_pt_add(&irreducible, &a, &Px, &Py, &Qx, &Qy,
|
||||
&Rx, &Ry) != SECSuccess)
|
||||
goto cleanup;
|
||||
} else {
|
||||
SECITEM_TO_MPINT( params->fieldID.u.poly, &irreducible );
|
||||
if (GF2m_ec_pt_add(&irreducible, &a, &Px, &Py, &Qx, &Qy, &Rx, &Ry)
|
||||
!= SECSuccess)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Construct the SECItem representation of the result */
|
||||
pointR->data[0] = EC_POINT_FORM_UNCOMPRESSED;
|
||||
@ -163,7 +171,7 @@ cleanup:
|
||||
mp_clear(&Qy);
|
||||
mp_clear(&Rx);
|
||||
mp_clear(&Ry);
|
||||
mp_clear(&prime);
|
||||
mp_clear(&irreducible);
|
||||
mp_clear(&a);
|
||||
if (err) {
|
||||
MP_TO_SEC_ERROR(err);
|
||||
@ -182,7 +190,7 @@ ec_point_mul(ECParams *params, mp_int *k,
|
||||
SECItem *pointP, SECItem *pointQ)
|
||||
{
|
||||
mp_int Px, Py, Qx, Qy;
|
||||
mp_int prime, a, b;
|
||||
mp_int irreducible, a, b;
|
||||
SECStatus rv = SECFailure;
|
||||
mp_err err = MP_OKAY;
|
||||
int len;
|
||||
@ -209,8 +217,7 @@ ec_point_mul(ECParams *params, mp_int *k,
|
||||
|
||||
/* NOTE: We only support prime field curves for now */
|
||||
len = (params->fieldID.size + 7) >> 3;
|
||||
if ((params->fieldID.type != ec_field_GFp) ||
|
||||
(pointP->data[0] != EC_POINT_FORM_UNCOMPRESSED) ||
|
||||
if ((pointP->data[0] != EC_POINT_FORM_UNCOMPRESSED) ||
|
||||
(pointP->len != (2 * len + 1))) {
|
||||
return SECFailure;
|
||||
};
|
||||
@ -219,33 +226,40 @@ ec_point_mul(ECParams *params, mp_int *k,
|
||||
MP_DIGITS(&Py) = 0;
|
||||
MP_DIGITS(&Qx) = 0;
|
||||
MP_DIGITS(&Qy) = 0;
|
||||
MP_DIGITS(&prime) = 0;
|
||||
MP_DIGITS(&irreducible) = 0;
|
||||
MP_DIGITS(&a) = 0;
|
||||
MP_DIGITS(&b) = 0;
|
||||
CHECK_MPI_OK( mp_init(&Px) );
|
||||
CHECK_MPI_OK( mp_init(&Py) );
|
||||
CHECK_MPI_OK( mp_init(&Qx) );
|
||||
CHECK_MPI_OK( mp_init(&Qy) );
|
||||
CHECK_MPI_OK( mp_init(&prime) );
|
||||
CHECK_MPI_OK( mp_init(&irreducible) );
|
||||
CHECK_MPI_OK( mp_init(&a) );
|
||||
CHECK_MPI_OK( mp_init(&b) );
|
||||
|
||||
|
||||
/* Initialize Px and Py */
|
||||
CHECK_MPI_OK( mp_read_unsigned_octets(&Px, pointP->data + 1,
|
||||
(mp_size) len) );
|
||||
CHECK_MPI_OK( mp_read_unsigned_octets(&Py, pointP->data + 1 + len,
|
||||
(mp_size) len) );
|
||||
|
||||
/* Set up mp_ints containing the prime and curve coefficients */
|
||||
SECITEM_TO_MPINT( params->fieldID.u.prime, &prime );
|
||||
/* Set up mp_ints containing the curve coefficients */
|
||||
SECITEM_TO_MPINT( params->curve.a, &a );
|
||||
SECITEM_TO_MPINT( params->curve.b, &b );
|
||||
|
||||
/* Compute Q = k * P */
|
||||
if (GFp_ec_pt_mul(&prime, &a, &b, &Px, &Py, k,
|
||||
&Qx, &Qy) != SECSuccess)
|
||||
if (params->fieldID.type == ec_field_GFp) {
|
||||
SECITEM_TO_MPINT( params->fieldID.u.prime, &irreducible );
|
||||
if (GFp_ec_pt_mul(&irreducible, &a, &b, &Px, &Py, k, &Qx, &Qy)
|
||||
!= SECSuccess)
|
||||
goto cleanup;
|
||||
} else {
|
||||
SECITEM_TO_MPINT( params->fieldID.u.poly, &irreducible );
|
||||
if (GF2m_ec_pt_mul(&irreducible, &a, &b, &Px, &Py, k, &Qx, &Qy)
|
||||
!= SECSuccess) {
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
/* Construct the SECItem representation of point Q */
|
||||
pointQ->data[0] = EC_POINT_FORM_UNCOMPRESSED;
|
||||
@ -253,6 +267,7 @@ ec_point_mul(ECParams *params, mp_int *k,
|
||||
(mp_size) len) );
|
||||
CHECK_MPI_OK( mp_to_fixlen_octets(&Qy, pointQ->data + 1 + len,
|
||||
(mp_size) len) );
|
||||
|
||||
rv = SECSuccess;
|
||||
|
||||
#if EC_DEBUG
|
||||
@ -267,7 +282,7 @@ cleanup:
|
||||
mp_clear(&Py);
|
||||
mp_clear(&Qx);
|
||||
mp_clear(&Qy);
|
||||
mp_clear(&prime);
|
||||
mp_clear(&irreducible);
|
||||
mp_clear(&a);
|
||||
mp_clear(&b);
|
||||
if (err) {
|
||||
@ -328,8 +343,13 @@ EC_NewKeyFromSeed(ECParams *ecParams, ECPrivateKey **privKey,
|
||||
key->ecParams.type = ecParams->type;
|
||||
key->ecParams.fieldID.size = ecParams->fieldID.size;
|
||||
key->ecParams.fieldID.type = ecParams->fieldID.type;
|
||||
CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.fieldID.u.prime,
|
||||
&ecParams->fieldID.u.prime));
|
||||
if (ecParams->fieldID.type == ec_field_GFp) {
|
||||
CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.fieldID.u.prime,
|
||||
&ecParams->fieldID.u.prime));
|
||||
} else {
|
||||
CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.fieldID.u.poly,
|
||||
&ecParams->fieldID.u.poly));
|
||||
}
|
||||
key->ecParams.fieldID.k1 = ecParams->fieldID.k1;
|
||||
key->ecParams.fieldID.k2 = ecParams->fieldID.k2;
|
||||
key->ecParams.fieldID.k3 = ecParams->fieldID.k3;
|
||||
@ -787,7 +807,6 @@ ECDSA_VerifyDigest(ECPublicKey *key, const SECItem *signature,
|
||||
|
||||
ecParams = &(key->ecParams);
|
||||
len = (ecParams->fieldID.size + 7) >> 3;
|
||||
printf("len is %d\n", len);
|
||||
if (signature->len < 2*len) {
|
||||
PORT_SetError(SEC_ERROR_INVALID_ARGS);
|
||||
goto cleanup;
|
||||
|
@ -68,8 +68,8 @@ PRIVATE_EXPORTS = \
|
||||
ec.h \
|
||||
$(NULL)
|
||||
|
||||
MPI_HDRS = mpi-config.h mpi.h mpi-priv.h mplogic.h mpprime.h logtab.h
|
||||
MPI_SRCS = mpprime.c mpmontg.c mplogic.c mpi.c
|
||||
MPI_HDRS = mpi-config.h mpi.h mpi-priv.h mplogic.h mpprime.h logtab.h mp_gf2m.h
|
||||
MPI_SRCS = mpprime.c mpmontg.c mplogic.c mpi.c mp_gf2m.c
|
||||
|
||||
ifdef MOZILLA_BSAFE_BUILD
|
||||
CSRCS = \
|
||||
@ -100,6 +100,7 @@ CSRCS = \
|
||||
dh.c \
|
||||
ec.c \
|
||||
GFp_ecl.c \
|
||||
GF2m_ecl.c \
|
||||
pqg.c \
|
||||
dsa.c \
|
||||
rsa.c \
|
||||
@ -116,6 +117,7 @@ ALL_HDRS = \
|
||||
des.h \
|
||||
ec.h \
|
||||
GFp_ecl.h \
|
||||
GF2m_ecl.h \
|
||||
loader.h \
|
||||
rijndael.h \
|
||||
secmpi.h \
|
||||
|
@ -37,7 +37,7 @@
|
||||
## GPL.
|
||||
##
|
||||
##
|
||||
## $Id: Makefile,v 1.18 2002/09/27 01:23:28 nelsonb%netscape.com Exp $
|
||||
## $Id: Makefile,v 1.19 2003/03/29 00:18:22 nelsonb%netscape.com Exp $
|
||||
##
|
||||
|
||||
## Define CC to be the C compiler you wish to use. The GNU cc
|
||||
@ -262,7 +262,7 @@ VERS=1.7p6
|
||||
##
|
||||
## This is the list of source files that need to be packed into
|
||||
## the distribution file
|
||||
SRCS= mpi.c mpprime.c mplogic.c mpmontg.c mpi-test.c primes.c tests/ \
|
||||
SRCS= mpi.c mpprime.c mplogic.c mp_gf2m.c mpmontg.c mpi-test.c primes.c tests/ \
|
||||
utils/gcd.c utils/invmod.c utils/lap.c \
|
||||
utils/ptab.pl utils/sieve.c utils/isprime.c\
|
||||
utils/dec2hex.c utils/hex2dec.c utils/bbs_rand.c \
|
||||
@ -274,7 +274,7 @@ SRCS= mpi.c mpprime.c mplogic.c mpmontg.c mpi-test.c primes.c tests/ \
|
||||
types.pl stats timetest multest
|
||||
|
||||
## These are the header files that go into the distribution file
|
||||
HDRS=mpi.h mpi-config.h utils/mpi.h utils/mpi-config.h mpprime.h mplogic.h \
|
||||
HDRS=mpi.h mpi-config.h utils/mpi.h utils/mpi-config.h mpprime.h mplogic.h mp_gf2m.h \
|
||||
utils/bbs_rand.h tests/mpi.h tests/mpprime.h
|
||||
|
||||
## These are the documentation files that go into the distribution file
|
||||
@ -284,9 +284,9 @@ DOCS=README doc utils/README utils/PRIMES
|
||||
TOOLS=gcd invmod isprime lap dec2hex hex2dec primegen prng \
|
||||
basecvt fact exptmod pi makeprime identest
|
||||
|
||||
LIBOBJS = mpprime.o mpmontg.o mplogic.o mpi.o $(AS_OBJS)
|
||||
LIBOBJS = mpprime.o mpmontg.o mplogic.o mp_gf2m.o mpi.o $(AS_OBJS)
|
||||
LIBHDRS = mpi-config.h mpi-priv.h mpi.h
|
||||
APPHDRS = mpi-config.h mpi.h mplogic.h mpprime.h
|
||||
APPHDRS = mpi-config.h mpi.h mplogic.h mp_gf2m.h mpprime.h
|
||||
|
||||
help:
|
||||
@ echo ""
|
||||
@ -320,6 +320,8 @@ mpi.o: mpi.c logtab.h $(LIBHDRS)
|
||||
|
||||
mplogic.o: mplogic.c mpi-priv.h mplogic.h $(LIBHDRS)
|
||||
|
||||
mp_gf2m.o: mp_gf2m.c mpi-priv.h mp_gf2m.h $(LIBHDRS)
|
||||
|
||||
mpmontg.o: mpmontg.c mpi-priv.h mplogic.h mpprime.h $(LIBHDRS)
|
||||
|
||||
mpprime.o: mpprime.c mpi-priv.h mpprime.h mplogic.h primes.c $(LIBHDRS)
|
||||
@ -354,7 +356,7 @@ mpi.i: mpi.h
|
||||
#---------------------------------------
|
||||
|
||||
MPTESTOBJS = mptest1.o mptest2.o mptest3.o mptest3a.o mptest4.o mptest4a.o \
|
||||
mptest4b.o mptest6.o mptest7.o mptest8.o mptest9.o
|
||||
mptest4b.o mptest6.o mptest7.o mptest8.o mptest9.o mptestb.o
|
||||
MPTESTS = $(MPTESTOBJS:.o=)
|
||||
|
||||
$(MPTESTOBJS): mptest%.o: tests/mptest-%.c $(LIBHDRS)
|
||||
@ -364,7 +366,7 @@ $(MPTESTS): mptest%: mptest%.o libmpi.a
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
|
||||
|
||||
tests: mptest1 mptest2 mptest3 mptest3a mptest4 mptest4a mptest4b mptest6 \
|
||||
bbsrand
|
||||
mptestb bbsrand
|
||||
|
||||
utests: mptest7 mptest8 mptest9
|
||||
|
||||
|
@ -114,7 +114,942 @@ EC_FillParams(PRArenaPool *arena, const SECItem *encodedParams,
|
||||
params->cofactor = 0;
|
||||
params->type = ec_params_named;
|
||||
|
||||
#if EC_DEBUG
|
||||
printf("Curve: %s\n", SECOID_FindOIDTagDescription(tag));
|
||||
#endif
|
||||
|
||||
switch (tag) {
|
||||
case SEC_OID_ANSIX962_EC_C2PNB163V1:
|
||||
/* Populate params for c2pnb163v1 */
|
||||
params->fieldID.size = 163;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"0000000107"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"072546B5435234A422E0789675F432C8" \
|
||||
"9435DE5242"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"00C9517D06D5240D3CFF38C74B20B6CD" \
|
||||
"4D6F9DD4D9"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"07AF69989546103D79329FCC3D74880F" \
|
||||
"33BBE803CB" \
|
||||
"01EC23211B5966ADEA1D3F87F7EA5848" \
|
||||
"AEF0B7CA9F"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"0400000000000000000001E60FC8821C" \
|
||||
"C74DAEAFC1"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB163V2:
|
||||
/* Populate params for c2pnb163v2 */
|
||||
params->fieldID.size = 163;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"0000000107"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"0108B39E77C4B108BED981ED0E890E11" \
|
||||
"7C511CF072"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"0667ACEB38AF4E488C407433FFAE4F1C" \
|
||||
"811638DF20"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"0024266E4EB5106D0A964D92C4860E26" \
|
||||
"71DB9B6CC5" \
|
||||
"079F684DDF6684C5CD258B3890021B23" \
|
||||
"86DFD19FC5"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"03FFFFFFFFFFFFFFFFFFFDF64DE1151A" \
|
||||
"DBB78F10A7"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB163V3:
|
||||
/* Populate params for c2pnb163v3 */
|
||||
params->fieldID.size = 163;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"0000000107"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"07A526C63D3E25A256A007699F5447E3" \
|
||||
"2AE456B50E"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"03F7061798EB99E238FD6F1BF95B48FE" \
|
||||
"EB4854252B"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"02F9F87B7C574D0BDECF8A22E6524775" \
|
||||
"F98CDEBDCB" \
|
||||
"05B935590C155E17EA48EB3FF3718B89" \
|
||||
"3DF59A05D0"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"03FFFFFFFFFFFFFFFFFFFE1AEE140F11" \
|
||||
"0AFF961309"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB176V1:
|
||||
/* Populate params for c2pnb176v1 */
|
||||
params->fieldID.size = 176;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"01000000000000000000000000000000" \
|
||||
"00080000000007"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"E4E6DB2995065C407D9D39B8D0967B96" \
|
||||
"704BA8E9C90B"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"5DDA470ABE6414DE8EC133AE28E9BBD7" \
|
||||
"FCEC0AE0FFF2"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"8D16C2866798B600F9F08BB4A8E860F3" \
|
||||
"298CE04A5798" \
|
||||
"6FA4539C2DADDDD6BAB5167D61B436E1" \
|
||||
"D92BB16A562C"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"00010092537397ECA4F6145799D62B0A" \
|
||||
"19CE06FE26AD"));
|
||||
params->cofactor = 0xFF6E;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB191V1:
|
||||
/* Populate params for c2tnb191v1 */
|
||||
params->fieldID.size = 191;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"80000000000000000000000000000000" \
|
||||
"0000000000000201"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"2866537B676752636A68F56554E12640" \
|
||||
"276B649EF7526267"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"2E45EF571F00786F67B0081B9495A3D9" \
|
||||
"5462F5DE0AA185EC"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"36B3DAF8A23206F9C4F299D7B21A9C36" \
|
||||
"9137F2C84AE1AA0D" \
|
||||
"765BE73433B3F95E332932E70EA245CA" \
|
||||
"2418EA0EF98018FB"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"40000000000000000000000004A20E90" \
|
||||
"C39067C893BBB9A5"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB191V2:
|
||||
/* Populate params for c2tnb191v2 */
|
||||
params->fieldID.size = 191;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"80000000000000000000000000000000" \
|
||||
"0000000000000201"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"401028774D7777C7B7666D1366EA4320" \
|
||||
"71274F89FF01E718"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"0620048D28BCBD03B6249C99182B7C8C" \
|
||||
"D19700C362C46A01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"3809B2B7CC1B28CC5A87926AAD83FD28" \
|
||||
"789E81E2C9E3BF10" \
|
||||
"17434386626D14F3DBF01760D9213A3E" \
|
||||
"1CF37AEC437D668A"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"20000000000000000000000050508CB8" \
|
||||
"9F652824E06B8173"));
|
||||
params->cofactor = 4;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB191V3:
|
||||
/* Populate params for c2tnb191v3 */
|
||||
params->fieldID.size = 191;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"80000000000000000000000000000000" \
|
||||
"0000000000000201"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"6C01074756099122221056911C77D77E" \
|
||||
"77A777E7E7E77FCB"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"71FE1AF926CF847989EFEF8DB459F663" \
|
||||
"94D90F32AD3F15E8"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"375D4CE24FDE434489DE8746E7178601" \
|
||||
"5009E66E38A926DD" \
|
||||
"545A39176196575D985999366E6AD34C" \
|
||||
"E0A77CD7127B06BE"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"155555555555555555555555610C0B19" \
|
||||
"6812BFB6288A3EA3"));
|
||||
params->cofactor = 6;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB208W1:
|
||||
/* Populate params for c2pnb208w1 */
|
||||
params->fieldID.size = 208;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"01000000000000000000000000000000" \
|
||||
"0800000000000000000007"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"00"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"C8619ED45A62E6212E1160349E2BFA84" \
|
||||
"4439FAFC2A3FD1638F9E"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"89FDFBE4ABE193DF9559ECF07AC0CE78" \
|
||||
"554E2784EB8C1ED1A57A" \
|
||||
"0F55B51A06E78E9AC38A035FF520D8B0" \
|
||||
"1781BEB1A6BB08617DE3"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"000101BAF95C9723C57B6C21DA2EFF2D" \
|
||||
"5ED588BDD5717E212F9D"));
|
||||
params->cofactor = 0xFE48;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB239V1:
|
||||
/* Populate params for c2tnb239v1 */
|
||||
params->fieldID.size = 239;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"80000000000000000000000000000000" \
|
||||
"0000000000000000001000000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"32010857077C5431123A46B808906756" \
|
||||
"F543423E8D27877578125778AC76"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"790408F2EEDAF392B012EDEFB3392F30" \
|
||||
"F4327C0CA3F31FC383C422AA8C16"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"57927098FA932E7C0A96D3FD5B706EF7" \
|
||||
"E5F5C156E16B7E7C86038552E91D" \
|
||||
"61D8EE5077C33FECF6F1A16B268DE469" \
|
||||
"C3C7744EA9A971649FC7A9616305"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"2000000000000000000000000000000F" \
|
||||
"4D42FFE1492A4993F1CAD666E447"));
|
||||
params->cofactor = 4;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB239V2:
|
||||
/* Populate params for c2tnb239v2 */
|
||||
params->fieldID.size = 239;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"80000000000000000000000000000000" \
|
||||
"0000000000000000001000000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"4230017757A767FAE42398569B746325" \
|
||||
"D45313AF0766266479B75654E65F"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"5037EA654196CFF0CD82B2C14A2FCF2E" \
|
||||
"3FF8775285B545722F03EACDB74B"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"28F9D04E900069C8DC47A08534FE76D2" \
|
||||
"B900B7D7EF31F5709F200C4CA205" \
|
||||
"5667334C45AFF3B5A03BAD9DD75E2C71" \
|
||||
"A99362567D5453F7FA6E227EC833"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"1555555555555555555555555555553C" \
|
||||
"6F2885259C31E3FCDF154624522D"));
|
||||
params->cofactor = 6;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB239V3:
|
||||
/* Populate params for c2tnb239v3 */
|
||||
params->fieldID.size = 239;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"80000000000000000000000000000000" \
|
||||
"0000000000000000001000000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"01238774666A67766D6676F778E676B6" \
|
||||
"6999176666E687666D8766C66A9F"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"6A941977BA9F6A435199ACFC51067ED5" \
|
||||
"87F519C5ECB541B8E44111DE1D40"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"70F6E9D04D289C4E89913CE3530BFDE9" \
|
||||
"03977D42B146D539BF1BDE4E9C92" \
|
||||
"2E5A0EAF6E5E1305B9004DCE5C0ED7FE" \
|
||||
"59A35608F33837C816D80B79F461"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"0CCCCCCCCCCCCCCCCCCCCCCCCCCCCCAC" \
|
||||
"4912D2D9DF903EF9888B8A0E4CFF"));
|
||||
params->cofactor = 0x0A;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB272W1:
|
||||
/* Populate params for c2pnb272w1 */
|
||||
params->fieldID.size = 272;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"01000000000000000000000000000000" \
|
||||
"00000000000000000000000100000000" \
|
||||
"00000B"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"91A091F03B5FBA4AB2CCF49C4EDD220F" \
|
||||
"B028712D42BE752B2C40094DBACDB586" \
|
||||
"FB20"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"7167EFC92BB2E3CE7C8AAAFF34E12A9C" \
|
||||
"557003D7C73A6FAF003F99F6CC8482E5" \
|
||||
"40F7"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"6108BABB2CEEBCF787058A056CBE0CFE" \
|
||||
"622D7723A289E08A07AE13EF0D10D171" \
|
||||
"DD8D" \
|
||||
"10C7695716851EEF6BA7F6872E6142FB" \
|
||||
"D241B830FF5EFCACECCAB05E02005DDE" \
|
||||
"9D23"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"000100FAF51354E0E39E4892DF6E319C" \
|
||||
"72C8161603FA45AA7B998A167B8F1E62" \
|
||||
"9521"));
|
||||
params->cofactor = 0xFF06;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB304W1:
|
||||
/* Populate params for c2pnb304w1 */
|
||||
params->fieldID.size = 304;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"01000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000000807"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"FD0D693149A118F651E6DCE680208537" \
|
||||
"7E5F882D1B510B44160074C128807836" \
|
||||
"5A0396C8E681"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"BDDB97E555A50A908E43B01C798EA5DA" \
|
||||
"A6788F1EA2794EFCF57166B8C1403960" \
|
||||
"1E55827340BE"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"197B07845E9BE2D96ADB0F5F3C7F2CFF" \
|
||||
"BD7A3EB8B6FEC35C7FD67F26DDF6285A" \
|
||||
"644F740A2614" \
|
||||
"E19FBEB76E0DA171517ECF401B50289B" \
|
||||
"F014103288527A9B416A105E80260B54" \
|
||||
"9FDC1B92C03B"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"000101D556572AABAC800101D556572A" \
|
||||
"ABAC8001022D5C91DD173F8FB561DA68" \
|
||||
"99164443051D"));
|
||||
params->cofactor = 0xFE2E;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB359V1:
|
||||
/* Populate params for c2tnb359v1 */
|
||||
params->fieldID.size = 359;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"80000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000100000000000000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"5667676A654B20754F356EA92017D946" \
|
||||
"567C46675556F19556A04616B567D223" \
|
||||
"A5E05656FB549016A96656A557"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"2472E2D0197C49363F1FE7F5B6DB075D" \
|
||||
"52B6947D135D8CA445805D39BC345626" \
|
||||
"089687742B6329E70680231988"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"3C258EF3047767E7EDE0F1FDAA79DAEE" \
|
||||
"3841366A132E163ACED4ED2401DF9C6B" \
|
||||
"DCDE98E8E707C07A2239B1B097" \
|
||||
"53D7E08529547048121E9C95F3791DD8" \
|
||||
"04963948F34FAE7BF44EA82365DC7868" \
|
||||
"FE57E4AE2DE211305A407104BD"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"01AF286BCA1AF286BCA1AF286BCA1AF2" \
|
||||
"86BCA1AF286BC9FB8F6B85C556892C20" \
|
||||
"A7EB964FE7719E74F490758D3B"));
|
||||
params->cofactor = 0x4C;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2PNB368W1:
|
||||
/* Populate params for c2pnb368w1 */
|
||||
params->fieldID.size = 368;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"01000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"000000002000000000000000000007"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"E0D2EE25095206F5E2A4F9ED229F1F25" \
|
||||
"6E79A0E2B455970D8D0D865BD94778C5" \
|
||||
"76D62F0AB7519CCD2A1A906AE30D"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"FC1217D4320A90452C760A58EDCD30C8" \
|
||||
"DD069B3C34453837A34ED50CB54917E1" \
|
||||
"C2112D84D164F444F8F74786046A"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"1085E2755381DCCCE3C1557AFA10C2F0" \
|
||||
"C0C2825646C5B34A394CBCFA8BC16B22" \
|
||||
"E7E789E927BE216F02E1FB136A5F" \
|
||||
"7B3EB1BDDCBA62D5D8B2059B525797FC" \
|
||||
"73822C59059C623A45FF3843CEE8F87C" \
|
||||
"D1855ADAA81E2A0750B80FDA2310"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"00010090512DA9AF72B08349D98A5DD4" \
|
||||
"C7B0532ECA51CE03E2D10F3B7AC579BD" \
|
||||
"87E909AE40A6F131E9CFCE5BD967"));
|
||||
params->cofactor = 0xFF70;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_C2TNB431R1:
|
||||
/* Populate params for c2tnb431r1 */
|
||||
params->fieldID.size = 431;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"80000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000000001000000000000000000" \
|
||||
"000000000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"1A827EF00DD6FC0E234CAF046C6A5D8A" \
|
||||
"85395B236CC4AD2CF32A0CADBDC9DDF6" \
|
||||
"20B0EB9906D0957F6C6FEACD615468DF" \
|
||||
"104DE296CD8F"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"10D9B4A3D9047D8B154359ABFB1B7F54" \
|
||||
"85B04CEB868237DDC9DEDA982A679A5A" \
|
||||
"919B626D4E50A8DD731B107A9962381F" \
|
||||
"B5D807BF2618"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"120FC05D3C67A99DE161D2F4092622FE" \
|
||||
"CA701BE4F50F4758714E8A87BBF2A658" \
|
||||
"EF8C21E7C5EFE965361F6C2999C0C247" \
|
||||
"B0DBD70CE6B7" \
|
||||
"20D0AF8903A96F8D5FA2C255745D3C45" \
|
||||
"1B302C9346D9B7E485E7BCE41F6B591F" \
|
||||
"3E8F6ADDCBB0BC4C2F947A7DE1A89B62" \
|
||||
"5D6A598B3760"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"03403403403403403403403403403403" \
|
||||
"40340340340340340340340323C313FA" \
|
||||
"B50589703B5EC68D3587FEC60D161CC1" \
|
||||
"49C1AD4A91"));
|
||||
params->cofactor = 0x2760;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT113R1:
|
||||
/* Populate params for sect113r1 */
|
||||
params->fieldID.size = 113;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"020000000000000000000000000201"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"003088250CA6E7C7FE649CE85820F7"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"00E8BEE4D3E2260744188BE0E9C723"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"009D73616F35F4AB1407D73562C10F" \
|
||||
"00A52830277958EE84D1315ED31886"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"0100000000000000D9CCEC8A39E56F"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT113R2:
|
||||
/* Populate params for sect113r2 */
|
||||
params->fieldID.size = 113;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"020000000000000000000000000201"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"00689918DBEC7E5A0DD6DFC0AA55C7"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"0095E9A9EC9B297BD4BF36E059184F"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"01A57A6A7B26CA5EF52FCDB8164797" \
|
||||
"00B3ADC94ED1FE674C06E695BABA1D"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"010000000000000108789B2496AF93"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT131R1:
|
||||
/* Populate params for sect131r1 */
|
||||
params->fieldID.size = 131;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000001" \
|
||||
"0D"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"07A11B09A76B562144418FF3FF8C2570" \
|
||||
"B8"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"0217C05610884B63B9C6C7291678F9D3" \
|
||||
"41"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"0081BAF91FDF9833C40F9C1813436383" \
|
||||
"99" \
|
||||
"078C6E7EA38C001F73C8134B1B4EF9E1" \
|
||||
"50"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"0400000000000000023123953A9464B5" \
|
||||
"4D"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT131R2:
|
||||
/* Populate params for sect131r2 */
|
||||
params->fieldID.size = 131;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000001" \
|
||||
"0D"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"03E5A88919D7CAFCBF415F07C2176573" \
|
||||
"B2"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"04B8266A46C55657AC734CE38F018F21" \
|
||||
"92"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"0356DCD8F2F95031AD652D23951BB366" \
|
||||
"A8" \
|
||||
"0648F06D867940A5366D9E265DE9EB24" \
|
||||
"0F"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"0400000000000000016954A233049BA9" \
|
||||
"8F"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT163K1:
|
||||
/* Populate params for sect163k1
|
||||
* (the NIST K-163 curve)
|
||||
*/
|
||||
params->fieldID.size = 163;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"00000000C9"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"02FE13C0537BBC11ACAA07D793DE4E6D" \
|
||||
"5E5C94EEE8" \
|
||||
"0289070FB05D38FF58321F2E800536D5" \
|
||||
"38CCDAA3D9"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"04000000000000000000020108A2E0CC" \
|
||||
"0D99F8A5EF"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT163R1:
|
||||
/* Populate params for sect163r1 */
|
||||
params->fieldID.size = 163;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"00000000C9"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"07B6882CAAEFA84F9554FF8428BD88E2" \
|
||||
"46D2782AE2"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"0713612DCDDCB40AAB946BDA29CA91F7" \
|
||||
"3AF958AFD9"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"0369979697AB43897789566789567F78" \
|
||||
"7A7876A654" \
|
||||
"00435EDB42EFAFB2989D51FEFCE3C809" \
|
||||
"88F41FF883"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"03FFFFFFFFFFFFFFFFFFFF48AAB689C2" \
|
||||
"9CA710279B"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT163R2:
|
||||
/* Populate params for sect163r2
|
||||
* (the NIST B-163 curve)
|
||||
*/
|
||||
params->fieldID.size = 163;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"00000000C9"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"020A601907B8C953CA1481EB10512F78" \
|
||||
"744A3205FD"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"03F0EBA16286A2D57EA0991168D49946" \
|
||||
"37E8343E36" \
|
||||
"00D51FBC6C71A0094FA2CDD545B11C5C" \
|
||||
"0C797324F1"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"040000000000000000000292FE77E70C" \
|
||||
"12A4234C33"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT193R1:
|
||||
/* Populate params for sect193r1 */
|
||||
params->fieldID.size = 193;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"02000000000000000000000000000000" \
|
||||
"000000000000008001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"0017858FEB7A98975169E171F77B4087" \
|
||||
"DE098AC8A911DF7B01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"00FDFB49BFE6C3A89FACADAA7A1E5BBC" \
|
||||
"7CC1C2E5D831478814"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"01F481BC5F0FF84A74AD6CDF6FDEF4BF" \
|
||||
"6179625372D8C0C5E1" \
|
||||
"0025E399F2903712CCF3EA9E3A1AD17F" \
|
||||
"B0B3201B6AF7CE1B05"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"01000000000000000000000000C7F34A" \
|
||||
"778F443ACC920EBA49"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT193R2:
|
||||
/* Populate params for sect193r2 */
|
||||
params->fieldID.size = 193;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"02000000000000000000000000000000" \
|
||||
"000000000000008001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"0163F35A5137C2CE3EA6ED8667190B0B" \
|
||||
"C43ECD69977702709B"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"00C9BB9E8927D4D64C377E2AB2856A5B" \
|
||||
"16E3EFB7F61D4316AE"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"00D9B67D192E0367C803F39E1A7E82CA1" \
|
||||
"4A651350AAE617E8F" \
|
||||
"01CE94335607C304AC29E7DEFBD9CA01" \
|
||||
"F596F927224CDECF6C"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"010000000000000000000000015AAB56" \
|
||||
"1B005413CCD4EE99D5"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT233K1:
|
||||
/* Populate params for sect233k1
|
||||
* (the NIST K-233 curve)
|
||||
*/
|
||||
params->fieldID.size = 233;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"02000000000000000000000000000000" \
|
||||
"0000000004000000000000000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"00"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"017232BA853A7E731AF129F22FF41495" \
|
||||
"63A419C26BF50A4C9D6EEFAD6126" \
|
||||
"01DB537DECE819B7F70F555A67C427A8" \
|
||||
"CD9BF18AEB9B56E0C11056FAE6A3"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"00800000000000000000000000000006" \
|
||||
"9D5BB915BCD46EFB1AD5F173ABDF"));
|
||||
params->cofactor = 4;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT233R1:
|
||||
/* Populate params for sect233r1
|
||||
* (the NIST B-233 curve)
|
||||
*/
|
||||
params->fieldID.size = 233;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"02000000000000000000000000000000" \
|
||||
"0000000004000000000000000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"00000000000000000000000000000000" \
|
||||
"0000000000000000000000000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"0066647EDE6C332C7F8C0923BB58213B" \
|
||||
"333B20E9CE4281FE115F7D8F90AD"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"00FAC9DFCBAC8313BB2139F1BB755FEF" \
|
||||
"65BC391F8B36F8F8EB7371FD558B" \
|
||||
"01006A08A41903350678E58528BEBF8A" \
|
||||
"0BEFF867A7CA36716F7E01F81052"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"01000000000000000000000000000013" \
|
||||
"E974E72F8A6922031D2603CFE0D7"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT239K1:
|
||||
/* Populate params for sect239k1 */
|
||||
params->fieldID.size = 239;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"80000000000000000000400000000000" \
|
||||
"0000000000000000000000000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"00"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"29A0B6A887A983E9730988A68727A8B2" \
|
||||
"D126C44CC2CC7B2A6555193035DC" \
|
||||
"76310804F12E549BDB011C103089E735" \
|
||||
"10ACB275FC312A5DC6B76553F0CA"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"2000000000000000000000000000005A" \
|
||||
"79FEC67CB6E91F1C1DA800E478A5"));
|
||||
params->cofactor = 4;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT283K1:
|
||||
/* Populate params for sect283k1
|
||||
* (the NIST K-283 curve)
|
||||
*/
|
||||
params->fieldID.size = 283;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"000010A1"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"00"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"0503213F78CA44883F1A3B8162F188E5" \
|
||||
"53CD265F23C1567A16876913B0C2AC24" \
|
||||
"58492836" \
|
||||
"01CCDA380F1C9E318D90F95D07E5426F" \
|
||||
"E87E45C0E8184698E45962364E341161" \
|
||||
"77DD2259"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" \
|
||||
"FFFFE9AE2ED07577265DFF7F94451E06" \
|
||||
"1E163C61"));
|
||||
params->cofactor = 4;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT283R1:
|
||||
/* Populate params for sect283r1
|
||||
* (the NIST B-283 curve)
|
||||
*/
|
||||
params->fieldID.size = 283;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"000010A1"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"027B680AC8B8596DA5A4AF8A19A0303F" \
|
||||
"CA97FD7645309FA2A581485AF6263E31" \
|
||||
"3B79A2F5"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"05F939258DB7DD90E1934F8C70B0DFEC" \
|
||||
"2EED25B8557EAC9C80E2E198F8CDBECD" \
|
||||
"86B12053" \
|
||||
"03676854FE24141CB98FE6D4B20D02B4" \
|
||||
"516FF702350EDDB0826779C813F0DF45" \
|
||||
"BE8112F4"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" \
|
||||
"FFFFEF90399660FC938A90165B042A7C" \
|
||||
"EFADB307"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT409K1:
|
||||
/* Populate params for sect409k1
|
||||
* (the NIST K-409 curve)
|
||||
*/
|
||||
params->fieldID.size = 409;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"02000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000000000000080000000000000" \
|
||||
"00000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"00"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"0060F05F658F49C1AD3AB1890F718421" \
|
||||
"0EFD0987E307C84C27ACCFB8F9F67CC2" \
|
||||
"C460189EB5AAAA62EE222EB1B35540CF" \
|
||||
"E9023746" \
|
||||
"01E369050B7C4E42ACBA1DACBF04299C" \
|
||||
"3460782F918EA427E6325165E9EA10E3" \
|
||||
"DA5F6C42E9C55215AA9CA27A5863EC48" \
|
||||
"D8E0286B"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"007FFFFFFFFFFFFFFFFFFFFFFFFFFFFF" \
|
||||
"FFFFFFFFFFFFFFFFFFFFFE5F83B2D4EA" \
|
||||
"20400EC4557D5ED3E3E7CA5B4B5C83B8" \
|
||||
"E01E5FCF"));
|
||||
params->cofactor = 4;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT409R1:
|
||||
/* Populate params for sect409r1
|
||||
* (the NIST B-409 curve)
|
||||
*/
|
||||
params->fieldID.size = 409;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"02000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000000000000080000000000000" \
|
||||
"00000001"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"0021A5C2C8EE9FEB5C4B9A753B7B476B" \
|
||||
"7FD6422EF1F3DD674761FA99D6AC27C8" \
|
||||
"A9A197B272822F6CD57A55AA4F50AE31" \
|
||||
"7B13545F"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"015D4860D088DDB3496B0C6064756260" \
|
||||
"441CDE4AF1771D4DB01FFE5B34E59703" \
|
||||
"DC255A868A1180515603AEAB60794E54" \
|
||||
"BB7996A7" \
|
||||
"0061B1CFAB6BE5F32BBFA78324ED106A" \
|
||||
"7636B9C5A7BD198D0158AA4F5488D08F" \
|
||||
"38514F1FDF4B4F40D2181B3681C364BA" \
|
||||
"0273C706"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"01000000000000000000000000000000" \
|
||||
"0000000000000000000001E2AAD6A612" \
|
||||
"F33307BE5FA47C3C9E052F838164CD37" \
|
||||
"D9A21173"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT571K1:
|
||||
/* Populate params for sect571k1
|
||||
* (the NIST K-571 curve)
|
||||
*/
|
||||
params->fieldID.size = 571;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"0000000000000425"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"00"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"026EB7A859923FBC82189631F8103FE4" \
|
||||
"AC9CA2970012D5D46024804801841CA4" \
|
||||
"4370958493B205E647DA304DB4CEB08C" \
|
||||
"BBD1BA39494776FB988B47174DCA88C7" \
|
||||
"E2945283A01C8972" \
|
||||
"0349DC807F4FBF374F4AEADE3BCA9531" \
|
||||
"4DD58CEC9F307A54FFC61EFC006D8A2C" \
|
||||
"9D4979C0AC44AEA74FBEBBB9F772AEDC" \
|
||||
"B620B01A7BA7AF1B320430C8591984F6" \
|
||||
"01CD4C143EF1C7A3"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"02000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000131850E1F19A63E4B391A8DB" \
|
||||
"917F4138B630D84BE5D639381E91DEB4" \
|
||||
"5CFE778F637C1001"));
|
||||
params->cofactor = 4;
|
||||
break;
|
||||
|
||||
case SEC_OID_SECG_EC_SECT571R1:
|
||||
/* Populate params for sect571r1
|
||||
* (the NIST B-571 curve)
|
||||
*/
|
||||
params->fieldID.size = 571;
|
||||
params->fieldID.type = ec_field_GF2m;
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->fieldID.u.poly,
|
||||
"08000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"00000000000000000000000000000000" \
|
||||
"0000000000000425"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.a,
|
||||
"01"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->curve.b,
|
||||
"02F40E7E2221F295DE297117B7F3D62F" \
|
||||
"5C6A97FFCB8CEFF1CD6BA8CE4A9A18AD" \
|
||||
"84FFABBD8EFA59332BE7AD6756A66E29" \
|
||||
"4AFD185A78FF12AA520E4DE739BACA0C" \
|
||||
"7FFEFF7F2955727A"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->base,
|
||||
"04" \
|
||||
"0303001D34B856296C16C0D40D3CD775" \
|
||||
"0A93D1D2955FA80AA5F40FC8DB7B2ABD" \
|
||||
"BDE53950F4C0D293CDD711A35B67FB14" \
|
||||
"99AE60038614F1394ABFA3B4C850D927" \
|
||||
"E1E7769C8EEC2D19" \
|
||||
"037BF27342DA639B6DCCFFFEB73D69D7" \
|
||||
"8C6C27A6009CBBCA1980F8533921E8A6" \
|
||||
"84423E43BAB08A576291AF8F461BB2A8" \
|
||||
"B3531D2F0485C19B16E2F1516E23DD3C" \
|
||||
"1A4827AF1B8AC15B"));
|
||||
CHECK_OK(hexString2SECItem(params->arena, ¶ms->order,
|
||||
"03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" \
|
||||
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" \
|
||||
"FFFFFFFFE661CE18FF55987308059B18" \
|
||||
"6823851EC7DD9CA1161DE93D5174D66E" \
|
||||
"8382E9BB2FE84E47"));
|
||||
params->cofactor = 2;
|
||||
break;
|
||||
|
||||
case SEC_OID_ANSIX962_EC_PRIME192V1:
|
||||
/* Populate params for prime192v1 aka secp192r1
|
||||
* (the NIST P-192 curve)
|
||||
@ -617,7 +1552,7 @@ EC_FillParams(PRArenaPool *arena, const SECItem *encodedParams,
|
||||
"6409"));
|
||||
params->cofactor = 1;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
};
|
||||
|
@ -236,6 +236,8 @@ struct mechanismList {
|
||||
|
||||
#define CKF_EC_PNU CKF_EC_FP | CKF_EC_NAMEDCURVE | CKF_EC_UNCOMPRESS
|
||||
|
||||
#define CKF_EC_BPNU CKF_EC_F_2M | CKF_EC_PNU
|
||||
|
||||
#define CK_MAX 0xffffffff
|
||||
|
||||
static const struct mechanismList mechanisms[] = {
|
||||
@ -284,10 +286,10 @@ static const struct mechanismList mechanisms[] = {
|
||||
{CKM_DH_PKCS_DERIVE, {128, 1024, CKF_DERIVE}, PR_TRUE},
|
||||
#ifdef NSS_ENABLE_ECC
|
||||
/* -------------------- Elliptic Curve Operations --------------------- */
|
||||
{CKM_EC_KEY_PAIR_GEN, {112, 571, CKF_GENERATE_KEY_PAIR|CKF_EC_PNU}, PR_TRUE},
|
||||
{CKM_ECDH1_DERIVE, {112, 571, CKF_DERIVE|CKF_EC_PNU}, PR_TRUE},
|
||||
{CKM_ECDSA, {112, 571, CKF_SN_VR|CKF_EC_PNU}, PR_TRUE},
|
||||
{CKM_ECDSA_SHA1, {112, 571, CKF_SN_VR|CKF_EC_PNU}, PR_TRUE},
|
||||
{CKM_EC_KEY_PAIR_GEN, {112, 571, CKF_GENERATE_KEY_PAIR|CKF_EC_BPNU}, PR_TRUE},
|
||||
{CKM_ECDH1_DERIVE, {112, 571, CKF_DERIVE|CKF_EC_BPNU}, PR_TRUE},
|
||||
{CKM_ECDSA, {112, 571, CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE},
|
||||
{CKM_ECDSA_SHA1, {112, 571, CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE},
|
||||
#endif /* NSS_ENABLE_ECC */
|
||||
/* ------------------------- RC2 Operations --------------------------- */
|
||||
{CKM_RC2_KEY_GEN, {1, 128, CKF_GENERATE}, PR_TRUE},
|
||||
|
@ -37,7 +37,7 @@
|
||||
* may use your version of this file under either the MPL or the
|
||||
* GPL.
|
||||
*
|
||||
* $Id: ssl3con.c,v 1.52 2003/03/26 00:31:12 wtc%netscape.com Exp $
|
||||
* $Id: ssl3con.c,v 1.53 2003/03/29 00:18:26 nelsonb%netscape.com Exp $
|
||||
*/
|
||||
|
||||
#include "nssrenam.h"
|
||||
@ -423,28 +423,27 @@ typedef enum { ec_noName = 0,
|
||||
ec_pastLastName
|
||||
} ECName;
|
||||
|
||||
/* XXX Change this when more curves are supported */
|
||||
#define supportedCurve(x) (((x) >= ec_secp160k1) && ((x) <= ec_secp521r1))
|
||||
#define supportedCurve(x) (((x) > ec_noName) && ((x) < ec_pastLastName))
|
||||
|
||||
/* Table containing OID tags for elliptic curves named in the
|
||||
* ECC-TLS IETF draft.
|
||||
*/
|
||||
static const SECOidTag ecName2OIDTag[] = {
|
||||
0,
|
||||
0, /* SEC_OID_SECG_EC_SECT163K1, */ /* 1 */
|
||||
0, /* SEC_OID_SECG_EC_SECT163R1, */ /* 2 */
|
||||
0, /* SEC_OID_SECG_EC_SECT163R2, */ /* 3 */
|
||||
0, /* SEC_OID_SECG_EC_SECT193R1, */ /* 4 */
|
||||
0, /* SEC_OID_SECG_EC_SECT193R2, */ /* 5 */
|
||||
0, /* SEC_OID_SECG_EC_SECT233K1, */ /* 6 */
|
||||
0, /* SEC_OID_SECG_EC_SECT233R1, */ /* 7 */
|
||||
0, /* SEC_OID_SECG_EC_SECT239K1, */ /* 8 */
|
||||
0, /* SEC_OID_SECG_EC_SECT283K1, */ /* 9 */
|
||||
0, /* SEC_OID_SECG_EC_SECT283R1, */ /* 10 */
|
||||
0, /* SEC_OID_SECG_EC_SECT409K1, */ /* 11 */
|
||||
0, /* SEC_OID_SECG_EC_SECT409R1, */ /* 12 */
|
||||
0, /* SEC_OID_SECG_EC_SECT571K1, */ /* 13 */
|
||||
0, /* SEC_OID_SECG_EC_SECT571R1, */ /* 14 */
|
||||
SEC_OID_SECG_EC_SECT163K1, /* 1 */
|
||||
SEC_OID_SECG_EC_SECT163R1, /* 2 */
|
||||
SEC_OID_SECG_EC_SECT163R2, /* 3 */
|
||||
SEC_OID_SECG_EC_SECT193R1, /* 4 */
|
||||
SEC_OID_SECG_EC_SECT193R2, /* 5 */
|
||||
SEC_OID_SECG_EC_SECT233K1, /* 6 */
|
||||
SEC_OID_SECG_EC_SECT233R1, /* 7 */
|
||||
SEC_OID_SECG_EC_SECT239K1, /* 8 */
|
||||
SEC_OID_SECG_EC_SECT283K1, /* 9 */
|
||||
SEC_OID_SECG_EC_SECT283R1, /* 10 */
|
||||
SEC_OID_SECG_EC_SECT409K1, /* 11 */
|
||||
SEC_OID_SECG_EC_SECT409R1, /* 12 */
|
||||
SEC_OID_SECG_EC_SECT571K1, /* 13 */
|
||||
SEC_OID_SECG_EC_SECT571R1, /* 14 */
|
||||
SEC_OID_SECG_EC_SECP160K1, /* 15 */
|
||||
SEC_OID_SECG_EC_SECP160R1, /* 16 */
|
||||
SEC_OID_SECG_EC_SECP160R2, /* 17 */
|
||||
|
@ -466,6 +466,48 @@ CONST_OID secgECsecp256k1[] = { SECG_OID, 0x0a };
|
||||
CONST_OID secgECsecp384r1[] = { SECG_OID, 0x22 };
|
||||
CONST_OID secgECsecp521r1[] = { SECG_OID, 0x23 };
|
||||
|
||||
/* ANSI X9.62 characteristic two curve OIDs */
|
||||
CONST_OID ansiX962c2pnb163v1[] = { ANSI_X962_GF2m_OID, 0x01 };
|
||||
CONST_OID ansiX962c2pnb163v2[] = { ANSI_X962_GF2m_OID, 0x02 };
|
||||
CONST_OID ansiX962c2pnb163v3[] = { ANSI_X962_GF2m_OID, 0x03 };
|
||||
CONST_OID ansiX962c2pnb176v1[] = { ANSI_X962_GF2m_OID, 0x04 };
|
||||
CONST_OID ansiX962c2tnb191v1[] = { ANSI_X962_GF2m_OID, 0x05 };
|
||||
CONST_OID ansiX962c2tnb191v2[] = { ANSI_X962_GF2m_OID, 0x06 };
|
||||
CONST_OID ansiX962c2tnb191v3[] = { ANSI_X962_GF2m_OID, 0x07 };
|
||||
CONST_OID ansiX962c2onb191v4[] = { ANSI_X962_GF2m_OID, 0x08 };
|
||||
CONST_OID ansiX962c2onb191v5[] = { ANSI_X962_GF2m_OID, 0x09 };
|
||||
CONST_OID ansiX962c2pnb208w1[] = { ANSI_X962_GF2m_OID, 0x0a };
|
||||
CONST_OID ansiX962c2tnb239v1[] = { ANSI_X962_GF2m_OID, 0x0b };
|
||||
CONST_OID ansiX962c2tnb239v2[] = { ANSI_X962_GF2m_OID, 0x0c };
|
||||
CONST_OID ansiX962c2tnb239v3[] = { ANSI_X962_GF2m_OID, 0x0d };
|
||||
CONST_OID ansiX962c2onb239v4[] = { ANSI_X962_GF2m_OID, 0x0e };
|
||||
CONST_OID ansiX962c2onb239v5[] = { ANSI_X962_GF2m_OID, 0x0f };
|
||||
CONST_OID ansiX962c2pnb272w1[] = { ANSI_X962_GF2m_OID, 0x10 };
|
||||
CONST_OID ansiX962c2pnb304w1[] = { ANSI_X962_GF2m_OID, 0x11 };
|
||||
CONST_OID ansiX962c2tnb359v1[] = { ANSI_X962_GF2m_OID, 0x12 };
|
||||
CONST_OID ansiX962c2pnb368w1[] = { ANSI_X962_GF2m_OID, 0x13 };
|
||||
CONST_OID ansiX962c2tnb431r1[] = { ANSI_X962_GF2m_OID, 0x14 };
|
||||
|
||||
/* SECG characterisitic two curve OIDs */
|
||||
CONST_OID secgECsect113r1[] = {SECG_OID, 0x04 };
|
||||
CONST_OID secgECsect113r2[] = {SECG_OID, 0x05 };
|
||||
CONST_OID secgECsect131r1[] = {SECG_OID, 0x16 };
|
||||
CONST_OID secgECsect131r2[] = {SECG_OID, 0x17 };
|
||||
CONST_OID secgECsect163k1[] = {SECG_OID, 0x01 };
|
||||
CONST_OID secgECsect163r1[] = {SECG_OID, 0x02 };
|
||||
CONST_OID secgECsect163r2[] = {SECG_OID, 0x0f };
|
||||
CONST_OID secgECsect193r1[] = {SECG_OID, 0x18 };
|
||||
CONST_OID secgECsect193r2[] = {SECG_OID, 0x19 };
|
||||
CONST_OID secgECsect233k1[] = {SECG_OID, 0x1a };
|
||||
CONST_OID secgECsect233r1[] = {SECG_OID, 0x1b };
|
||||
CONST_OID secgECsect239k1[] = {SECG_OID, 0x03 };
|
||||
CONST_OID secgECsect283k1[] = {SECG_OID, 0x10 };
|
||||
CONST_OID secgECsect283r1[] = {SECG_OID, 0x11 };
|
||||
CONST_OID secgECsect409k1[] = {SECG_OID, 0x24 };
|
||||
CONST_OID secgECsect409r1[] = {SECG_OID, 0x25 };
|
||||
CONST_OID secgECsect571k1[] = {SECG_OID, 0x26 };
|
||||
CONST_OID secgECsect571r1[] = {SECG_OID, 0x27 };
|
||||
|
||||
#define OI(x) { siDEROID, (unsigned char *)x, sizeof x }
|
||||
#ifndef SECOID_NO_STRINGS
|
||||
#define OD(oid,tag,desc,mech,ext) { OI(oid), tag, desc, mech, ext }
|
||||
@ -1181,6 +1223,163 @@ const static SECOidData oids[] = {
|
||||
"SECG elliptic curve secp521r1 (aka NIST P-521)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
|
||||
/* ANSI X9.62 named elliptic curves (characteristic two field) */
|
||||
OD( ansiX962c2pnb163v1, SEC_OID_ANSIX962_EC_C2PNB163V1,
|
||||
"ANSI X9.62 elliptic curve c2pnb163v1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2pnb163v2, SEC_OID_ANSIX962_EC_C2PNB163V2,
|
||||
"ANSI X9.62 elliptic curve c2pnb163v2",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2pnb163v3, SEC_OID_ANSIX962_EC_C2PNB163V3,
|
||||
"ANSI X9.62 elliptic curve c2pnb163v3",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2pnb176v1, SEC_OID_ANSIX962_EC_C2PNB176V1,
|
||||
"ANSI X9.62 elliptic curve c2pnb176v1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2tnb191v1, SEC_OID_ANSIX962_EC_C2TNB191V1,
|
||||
"ANSI X9.62 elliptic curve c2tnb191v1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2tnb191v2, SEC_OID_ANSIX962_EC_C2TNB191V2,
|
||||
"ANSI X9.62 elliptic curve c2tnb191v2",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2tnb191v3, SEC_OID_ANSIX962_EC_C2TNB191V3,
|
||||
"ANSI X9.62 elliptic curve c2tnb191v3",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2onb191v4, SEC_OID_ANSIX962_EC_C2ONB191V4,
|
||||
"ANSI X9.62 elliptic curve c2onb191v4",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2onb191v5, SEC_OID_ANSIX962_EC_C2ONB191V5,
|
||||
"ANSI X9.62 elliptic curve c2onb191v5",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2pnb208w1, SEC_OID_ANSIX962_EC_C2PNB208W1,
|
||||
"ANSI X9.62 elliptic curve c2pnb208w1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2tnb239v1, SEC_OID_ANSIX962_EC_C2TNB239V1,
|
||||
"ANSI X9.62 elliptic curve c2tnb239v1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2tnb239v2, SEC_OID_ANSIX962_EC_C2TNB239V2,
|
||||
"ANSI X9.62 elliptic curve c2tnb239v2",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2tnb239v3, SEC_OID_ANSIX962_EC_C2TNB239V3,
|
||||
"ANSI X9.62 elliptic curve c2tnb239v3",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2onb239v4, SEC_OID_ANSIX962_EC_C2ONB239V4,
|
||||
"ANSI X9.62 elliptic curve c2onb239v4",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2onb239v5, SEC_OID_ANSIX962_EC_C2ONB239V5,
|
||||
"ANSI X9.62 elliptic curve c2onb239v5",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2pnb272w1, SEC_OID_ANSIX962_EC_C2PNB272W1,
|
||||
"ANSI X9.62 elliptic curve c2pnb272w1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2pnb304w1, SEC_OID_ANSIX962_EC_C2PNB304W1,
|
||||
"ANSI X9.62 elliptic curve c2pnb304w1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2tnb359v1, SEC_OID_ANSIX962_EC_C2TNB359V1,
|
||||
"ANSI X9.62 elliptic curve c2tnb359v1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2pnb368w1, SEC_OID_ANSIX962_EC_C2PNB368W1,
|
||||
"ANSI X9.62 elliptic curve c2pnb368w1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( ansiX962c2tnb431r1, SEC_OID_ANSIX962_EC_C2TNB431R1,
|
||||
"ANSI X9.62 elliptic curve c2tnb431r1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
|
||||
/* SECG named elliptic curves (characterisitic two field) */
|
||||
OD( secgECsect113r1, SEC_OID_SECG_EC_SECT113R1,
|
||||
"SECG elliptic curve sect113r1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect113r2, SEC_OID_SECG_EC_SECT113R2,
|
||||
"SECG elliptic curve sect113r2",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect131r1, SEC_OID_SECG_EC_SECT131R1,
|
||||
"SECG elliptic curve sect131r1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect131r2, SEC_OID_SECG_EC_SECT131R2,
|
||||
"SECG elliptic curve sect131r2",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect163k1, SEC_OID_SECG_EC_SECT163K1,
|
||||
"SECG elliptic curve sect163k1 (aka NIST K-163)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect163r1, SEC_OID_SECG_EC_SECT163R1,
|
||||
"SECG elliptic curve sect163r1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect163r2, SEC_OID_SECG_EC_SECT163R2,
|
||||
"SECG elliptic curve sect163r2 (aka NIST B-163)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect193r1, SEC_OID_SECG_EC_SECT193R1,
|
||||
"SECG elliptic curve sect193r1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect193r2, SEC_OID_SECG_EC_SECT193R2,
|
||||
"SECG elliptic curve sect193r2",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect233k1, SEC_OID_SECG_EC_SECT233K1,
|
||||
"SECG elliptic curve sect233k1 (aka NIST K-233)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect233r1, SEC_OID_SECG_EC_SECT233R1,
|
||||
"SECG elliptic curve sect233r1 (aka NIST B-233)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect239k1, SEC_OID_SECG_EC_SECT239K1,
|
||||
"SECG elliptic curve sect239k1",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect283k1, SEC_OID_SECG_EC_SECT283K1,
|
||||
"SECG elliptic curve sect283k1 (aka NIST K-283)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect283r1, SEC_OID_SECG_EC_SECT283R1,
|
||||
"SECG elliptic curve sect283r1 (aka NIST B-283)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect409k1, SEC_OID_SECG_EC_SECT409K1,
|
||||
"SECG elliptic curve sect409k1 (aka NIST K-409)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect409r1, SEC_OID_SECG_EC_SECT409R1,
|
||||
"SECG elliptic curve sect409r1 (aka NIST B-409)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect571k1, SEC_OID_SECG_EC_SECT571K1,
|
||||
"SECG elliptic curve sect571k1 (aka NIST K-571)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
OD( secgECsect571r1, SEC_OID_SECG_EC_SECT571R1,
|
||||
"SECG elliptic curve sect571r1 (aka NIST B-571)",
|
||||
CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
|
||||
OD( netscapeAOLScreenname, SEC_OID_NETSCAPE_AOLSCREENNAME,
|
||||
"AOL Screenname", CKM_INVALID_MECHANISM,
|
||||
INVALID_CERT_EXTENSION ),
|
||||
|
@ -40,7 +40,7 @@
|
||||
/*
|
||||
* secoidt.h - public data structures for ASN.1 OID functions
|
||||
*
|
||||
* $Id: secoidt.h,v 1.13 2003/03/20 23:53:39 relyea%netscape.com Exp $
|
||||
* $Id: secoidt.h,v 1.14 2003/03/29 00:18:30 nelsonb%netscape.com Exp $
|
||||
*/
|
||||
|
||||
#include "secitem.h"
|
||||
@ -341,7 +341,50 @@ typedef enum {
|
||||
/* SEC_OID_SECG_EC_SECP256R1 is SEC_OID_ANSIX962_EC_PRIME256V1 */
|
||||
SEC_OID_SECG_EC_SECP384R1 = 220,
|
||||
SEC_OID_SECG_EC_SECP521R1 = 221,
|
||||
SEC_OID_NETSCAPE_AOLSCREENNAME = 222,
|
||||
|
||||
/* ANSI X9.62 named elliptic curves (characteristic two field) */
|
||||
SEC_OID_ANSIX962_EC_C2PNB163V1 = 222,
|
||||
SEC_OID_ANSIX962_EC_C2PNB163V2 = 223,
|
||||
SEC_OID_ANSIX962_EC_C2PNB163V3 = 224,
|
||||
SEC_OID_ANSIX962_EC_C2PNB176V1 = 225,
|
||||
SEC_OID_ANSIX962_EC_C2TNB191V1 = 226,
|
||||
SEC_OID_ANSIX962_EC_C2TNB191V2 = 227,
|
||||
SEC_OID_ANSIX962_EC_C2TNB191V3 = 228,
|
||||
SEC_OID_ANSIX962_EC_C2ONB191V4 = 229,
|
||||
SEC_OID_ANSIX962_EC_C2ONB191V5 = 230,
|
||||
SEC_OID_ANSIX962_EC_C2PNB208W1 = 231,
|
||||
SEC_OID_ANSIX962_EC_C2TNB239V1 = 232,
|
||||
SEC_OID_ANSIX962_EC_C2TNB239V2 = 233,
|
||||
SEC_OID_ANSIX962_EC_C2TNB239V3 = 234,
|
||||
SEC_OID_ANSIX962_EC_C2ONB239V4 = 235,
|
||||
SEC_OID_ANSIX962_EC_C2ONB239V5 = 236,
|
||||
SEC_OID_ANSIX962_EC_C2PNB272W1 = 237,
|
||||
SEC_OID_ANSIX962_EC_C2PNB304W1 = 238,
|
||||
SEC_OID_ANSIX962_EC_C2TNB359V1 = 239,
|
||||
SEC_OID_ANSIX962_EC_C2PNB368W1 = 240,
|
||||
SEC_OID_ANSIX962_EC_C2TNB431R1 = 241,
|
||||
|
||||
/* SECG named elliptic curves (characteristic two field) */
|
||||
SEC_OID_SECG_EC_SECT113R1 = 242,
|
||||
SEC_OID_SECG_EC_SECT113R2 = 243,
|
||||
SEC_OID_SECG_EC_SECT131R1 = 244,
|
||||
SEC_OID_SECG_EC_SECT131R2 = 245,
|
||||
SEC_OID_SECG_EC_SECT163K1 = 246,
|
||||
SEC_OID_SECG_EC_SECT163R1 = 247,
|
||||
SEC_OID_SECG_EC_SECT163R2 = 248,
|
||||
SEC_OID_SECG_EC_SECT193R1 = 249,
|
||||
SEC_OID_SECG_EC_SECT193R2 = 250,
|
||||
SEC_OID_SECG_EC_SECT233K1 = 251,
|
||||
SEC_OID_SECG_EC_SECT233R1 = 252,
|
||||
SEC_OID_SECG_EC_SECT239K1 = 253,
|
||||
SEC_OID_SECG_EC_SECT283K1 = 254,
|
||||
SEC_OID_SECG_EC_SECT283R1 = 255,
|
||||
SEC_OID_SECG_EC_SECT409K1 = 256,
|
||||
SEC_OID_SECG_EC_SECT409R1 = 257,
|
||||
SEC_OID_SECG_EC_SECT571K1 = 258,
|
||||
SEC_OID_SECG_EC_SECT571R1 = 259,
|
||||
|
||||
SEC_OID_NETSCAPE_AOLSCREENNAME = 260,
|
||||
|
||||
SEC_OID_TOTAL
|
||||
} SECOidTag;
|
||||
|
Loading…
Reference in New Issue
Block a user