From 1acc24a8ba4ea461b5e2ae94b7c9b625dc7d4c52 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Thu, 10 Mar 2011 01:00:30 +0000 Subject: [PATCH] Make no-ec2m work again. --- crypto/ec/ec_oct.c | 21 +++++++++++++++++++++ fips/ecdh/fips_ecdhvs.c | 20 +++++++++++++++++--- fips/ecdsa/fips_ecdsavs.c | 7 +++++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/crypto/ec/ec_oct.c b/crypto/ec/ec_oct.c index 606e09491d..fd9db0798d 100644 --- a/crypto/ec/ec_oct.c +++ b/crypto/ec/ec_oct.c @@ -88,8 +88,15 @@ int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *poi return ec_GFp_simple_set_compressed_coordinates( group, point, x, y_bit, ctx); else +#ifdef OPENSSL_NO_EC2M + { + ECerr(EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP, EC_R_GF2M_NOT_SUPPORTED); + return 0; + } +#else return ec_GF2m_simple_set_compressed_coordinates( group, point, x, y_bit, ctx); +#endif } return group->meth->point_set_compressed_coordinates(group, point, x, y_bit, ctx); } @@ -142,8 +149,15 @@ size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *point, point_co return ec_GFp_simple_point2oct(group, point, form, buf, len, ctx); else +#ifdef OPENSSL_NO_EC2M + { + ECerr(EC_F_EC_POINT_POINT2OCT, EC_R_GF2M_NOT_SUPPORTED); + return 0; + } +#else return ec_GF2m_simple_point2oct(group, point, form, buf, len, ctx); +#endif } return group->meth->point2oct(group, point, form, buf, len, ctx); @@ -170,8 +184,15 @@ int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *point, return ec_GFp_simple_oct2point(group, point, buf, len, ctx); else +#ifdef OPENSSL_NO_EC2M + { + ECerr(EC_F_EC_POINT_OCT2POINT, EC_R_GF2M_NOT_SUPPORTED); + return 0; + } +#else return ec_GF2m_simple_oct2point(group, point, buf, len, ctx); +#endif } return group->meth->oct2point(group, point, buf, len, ctx); } diff --git a/fips/ecdh/fips_ecdhvs.c b/fips/ecdh/fips_ecdhvs.c index 3182f6e4ce..c68daf2e94 100644 --- a/fips/ecdh/fips_ecdhvs.c +++ b/fips/ecdh/fips_ecdhvs.c @@ -171,10 +171,17 @@ static EC_POINT *make_peer(EC_GROUP *group, BIGNUM *x, BIGNUM *y) return NULL; c = BN_CTX_new(); if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) - == NID_X9_62_characteristic_two_field) - rv = EC_POINT_set_affine_coordinates_GF2m(group, peer, x, y, c); - else + == NID_X9_62_prime_field) rv = EC_POINT_set_affine_coordinates_GFp(group, peer, x, y, c); + else +#ifdef OPENSSL_NO_EC2M + { + fprintf(stderr, "ERROR: GF2m not supported\n"); + exit(1); + } +#else + rv = EC_POINT_set_affine_coordinates_GF2m(group, peer, x, y, c); +#endif BN_CTX_free(c); if (rv) @@ -204,7 +211,14 @@ static int ec_print_pubkey(FILE *out, EC_KEY *key) if (EC_METHOD_get_field_type(meth) == NID_X9_62_prime_field) rv = EC_POINT_get_affine_coordinates_GFp(grp, pt, tx, ty, ctx); else +#ifdef OPENSSL_NO_EC2M + { + fprintf(stderr, "ERROR: GF2m not supported\n"); + exit(1); + } +#else rv = EC_POINT_get_affine_coordinates_GF2m(grp, pt, tx, ty, ctx); +#endif do_bn_print_name(out, "QeIUTx", tx); do_bn_print_name(out, "QeIUTy", ty); diff --git a/fips/ecdsa/fips_ecdsavs.c b/fips/ecdsa/fips_ecdsavs.c index f67f07503a..379df65501 100644 --- a/fips/ecdsa/fips_ecdsavs.c +++ b/fips/ecdsa/fips_ecdsavs.c @@ -169,7 +169,14 @@ static int ec_get_pubkey(EC_KEY *key, BIGNUM *x, BIGNUM *y) if (EC_METHOD_get_field_type(meth) == NID_X9_62_prime_field) rv = EC_POINT_get_affine_coordinates_GFp(grp, pt, x, y, ctx); else +#ifdef OPENSSL_NO_EC2M + { + fprintf(stderr, "ERROR: GF2m not supported\n"); + exit(1); + } +#else rv = EC_POINT_get_affine_coordinates_GF2m(grp, pt, x, y, ctx); +#endif BN_CTX_free(ctx); -- 2.40.0