New option to disable characteristic two fields in EC code.
This commit is contained in:
@@ -703,6 +703,8 @@ static const struct { EC_CURVE_DATA h; unsigned char data[0+28*6]; }
|
||||
0x13,0xDD,0x29,0x45,0x5C,0x5C,0x2A,0x3D }
|
||||
};
|
||||
|
||||
#ifndef OPENSSL_NO_EC2M
|
||||
|
||||
/* characteristic two curves */
|
||||
static const struct { EC_CURVE_DATA h; unsigned char data[20+15*6]; }
|
||||
_EC_SECG_CHAR2_113R1 = {
|
||||
@@ -1817,6 +1819,8 @@ static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
|
||||
0xBA,0xFC,0xA7,0x5E }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct _ec_list_element_st {
|
||||
int nid;
|
||||
const EC_CURVE_DATA *data;
|
||||
@@ -1855,6 +1859,7 @@ static const ec_list_element curve_list[] = {
|
||||
{ NID_X9_62_prime239v2, &_EC_X9_62_PRIME_239V2.h, 0, "X9.62 curve over a 239 bit prime field" },
|
||||
{ NID_X9_62_prime239v3, &_EC_X9_62_PRIME_239V3.h, 0, "X9.62 curve over a 239 bit prime field" },
|
||||
{ NID_X9_62_prime256v1, &_EC_X9_62_PRIME_256V1.h, 0, "X9.62/SECG curve over a 256 bit prime field" },
|
||||
#ifndef OPENSSL_NO_EC2M
|
||||
/* characteristic two field curves */
|
||||
/* NIST/SECG curves */
|
||||
{ NID_sect113r1, &_EC_SECG_CHAR2_113R1.h, 0, "SECG curve over a 113 bit binary field" },
|
||||
@@ -1898,18 +1903,23 @@ static const ec_list_element curve_list[] = {
|
||||
{ NID_wap_wsg_idm_ecid_wtls3, &_EC_NIST_CHAR2_163K.h, 0, "NIST/SECG/WTLS curve over a 163 bit binary field" },
|
||||
{ NID_wap_wsg_idm_ecid_wtls4, &_EC_SECG_CHAR2_113R1.h, 0, "SECG curve over a 113 bit binary field" },
|
||||
{ NID_wap_wsg_idm_ecid_wtls5, &_EC_X9_62_CHAR2_163V1.h, 0, "X9.62 curve over a 163 bit binary field" },
|
||||
#endif
|
||||
{ NID_wap_wsg_idm_ecid_wtls6, &_EC_SECG_PRIME_112R1.h, 0, "SECG/WTLS curve over a 112 bit prime field" },
|
||||
{ NID_wap_wsg_idm_ecid_wtls7, &_EC_SECG_PRIME_160R2.h, 0, "SECG/WTLS curve over a 160 bit prime field" },
|
||||
{ NID_wap_wsg_idm_ecid_wtls8, &_EC_WTLS_8.h, 0, "WTLS curve over a 112 bit prime field" },
|
||||
{ NID_wap_wsg_idm_ecid_wtls9, &_EC_WTLS_9.h, 0, "WTLS curve over a 160 bit prime field" },
|
||||
#ifndef OPENSSL_NO_EC2M
|
||||
{ NID_wap_wsg_idm_ecid_wtls10, &_EC_NIST_CHAR2_233K.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
|
||||
{ NID_wap_wsg_idm_ecid_wtls11, &_EC_NIST_CHAR2_233B.h, 0, "NIST/SECG/WTLS curve over a 233 bit binary field" },
|
||||
#endif
|
||||
{ NID_wap_wsg_idm_ecid_wtls12, &_EC_WTLS_12.h, 0, "WTLS curvs over a 224 bit prime field" },
|
||||
#ifndef OPENSSL_NO_EC2M
|
||||
/* IPSec curves */
|
||||
{ NID_ipsec3, &_EC_IPSEC_155_ID3.h, 0, "\n\tIPSec/IKE/Oakley curve #3 over a 155 bit binary field.\n"
|
||||
"\tNot suitable for ECDSA.\n\tQuestionable extension field!" },
|
||||
{ NID_ipsec4, &_EC_IPSEC_185_ID4.h, 0, "\n\tIPSec/IKE/Oakley curve #4 over a 185 bit binary field.\n"
|
||||
"\tNot suitable for ECDSA.\n\tQuestionable extension field!" },
|
||||
#endif
|
||||
};
|
||||
|
||||
#define curve_list_length (sizeof(curve_list)/sizeof(ec_list_element))
|
||||
@@ -1964,6 +1974,7 @@ static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
#ifndef OPENSSL_NO_EC2M
|
||||
else /* field_type == NID_X9_62_characteristic_two_field */
|
||||
{
|
||||
if ((group = EC_GROUP_new_curve_GF2m(p, a, b, ctx)) == NULL)
|
||||
@@ -1972,6 +1983,7 @@ static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((P = EC_POINT_new(group)) == NULL)
|
||||
{
|
||||
@@ -1985,7 +1997,7 @@ static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
|
||||
ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_BN_LIB);
|
||||
goto err;
|
||||
}
|
||||
if (!EC_POINT_set_affine_coordinates_GF2m(group, P, x, y, ctx))
|
||||
if (!EC_POINT_set_affine_coordinates_GFp(group, P, x, y, ctx))
|
||||
{
|
||||
ECerr(EC_F_EC_GROUP_NEW_FROM_DATA, ERR_R_EC_LIB);
|
||||
goto err;
|
||||
|
||||
Reference in New Issue
Block a user