{
static const EC_METHOD ret = {
NID_X9_62_prime_field,
- ec_GFp_nist_group_init,
- ec_GFp_nist_group_finish,
- ec_GFp_nist_group_clear_finish,
- ec_GFp_nist_group_copy,
+ ec_GFp_simple_group_init,
+ ec_GFp_simple_group_finish,
+ ec_GFp_simple_group_clear_finish,
+ ec_GFp_simple_group_copy,
ec_GFp_nist_group_set_curve,
ec_GFp_simple_group_get_curve,
ec_GFp_simple_group_get_degree,
#define NO_32_BIT_TYPE
#endif
-int ec_GFp_nist_group_init(EC_GROUP *group)
- {
- int ok;
-
- ok = ec_GFp_simple_group_init(group);
- group->field_data1 = NULL;
- return ok;
- }
-
-void ec_GFp_nist_group_finish(EC_GROUP *group)
- {
- BN_free(&group->field);
- BN_free(&group->a);
- BN_free(&group->b);
- }
-
-
-void ec_GFp_nist_group_clear_finish(EC_GROUP *group)
- {
- BN_clear_free(&group->field);
- BN_clear_free(&group->a);
- BN_clear_free(&group->b);
- }
-
int ec_GFp_nist_group_set_curve(EC_GROUP *group, const BIGNUM *p,
const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
if (BN_ucmp(BN_get0_nist_prime_192(), p) == 0)
group->field_mod_func = BN_nist_mod_192;
else if (BN_ucmp(BN_get0_nist_prime_224(), p) == 0)
+ {
#if !defined(NO_32_BIT_TYPE) || defined(OPENSSL_NO_ASM)
group->field_mod_func = BN_nist_mod_224;
#else
ECerr(EC_F_EC_GFP_NIST_GROUP_SET_CURVE_GFP, EC_R_NOT_A_SUPPORTED_NIST_PRIME);
goto err;
#endif
+ }
else if (BN_ucmp(BN_get0_nist_prime_256(), p) == 0)
+ {
#if !defined(NO_32_BIT_TYPE) || defined(OPENSSL_NO_ASM)
group->field_mod_func = BN_nist_mod_256;
#else
ECerr(EC_F_EC_GFP_NIST_GROUP_SET_CURVE_GFP, EC_R_NOT_A_SUPPORTED_NIST_PRIME);
goto err;
#endif
+ }
else if (BN_ucmp(BN_get0_nist_prime_384(), p) == 0)
+ {
#if !defined(NO_32_BIT_TYPE) || defined(OPENSSL_NO_ASM)
group->field_mod_func = BN_nist_mod_384;
#else
ECerr(EC_F_EC_GFP_NIST_GROUP_SET_CURVE_GFP, EC_R_NOT_A_SUPPORTED_NIST_PRIME);
goto err;
#endif
+ }
else if (BN_ucmp(BN_get0_nist_prime_521(), p) == 0)
/* this one works in the NO_32_BIT_TYPE case */
group->field_mod_func = BN_nist_mod_521;
/* group->field */
if (!BN_copy(&group->field, p)) goto err;
- group->field.neg = 0;
+ BN_set_sign(&group->field, 0);
/* group->a */
if (!group->field_mod_func(&group->a, a, p, ctx)) goto err;
return ret;
}
-int ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src)
- {
- if (dest == NULL || src == NULL)
- return 0;
-
- if (!BN_copy(&dest->field, &src->field))
- return 0;
- if (!BN_copy(&dest->a, &src->a))
- return 0;
- if (!BN_copy(&dest->b, &src->b))
- return 0;
-
- dest->curve_name = src->curve_name;
-
- dest->a_is_minus3 = src->a_is_minus3;
-
- dest->field_data1 = src->field_data1;
-
- return 1;
- }
int ec_GFp_nist_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
const BIGNUM *b, BN_CTX *ctx)
return ret;
}
+
int ec_GFp_nist_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
BN_CTX *ctx)
{