if (!BN_copy(&point->Z, BN_value_one())) goto err;
BN_set_negative(&point->Z, 0);
point->Z_is_one = 1;
- if (BN_num_bits(x) > BN_num_bits(&group->field))
- ret = 2;
- else if (BN_num_bits(y) > BN_num_bits(&group->field))
- ret = 2;
- else
- ret = 1;
+ ret = 1;
err:
return ret;
{
return EC_POINT_is_at_infinity(group, b) ? 0 : 1;
}
-
- if (EC_POINT_is_at_infinity(group, b))
- return 1;
if (a->Z_is_one && b->Z_is_one)
{
return ret;
}
-int ec_GF2m_simple_range(const EC_GROUP *group, const EC_POINT *a)
- {
- if (BN_num_bits(&a->X) > BN_num_bits(&group->field))
- return 0;
- if (BN_num_bits(&a->Y) > BN_num_bits(&group->field))
- return 0;
- return 1;
- }
-
/* Forces the given EC_POINT to internally use affine coordinates. */
int ec_GF2m_simple_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx)
ECerr(EC_F_EC_KEY_CHECK_KEY, ERR_R_PASSED_NULL_PARAMETER);
return 0;
}
-
- if (EC_POINT_is_at_infinity(eckey->group, eckey->pub_key))
- {
- ECerr(EC_F_EC_KEY_CHECK_KEY, EC_R_POINT_AT_INFINITY);
- goto err;
- }
-
+
if ((ctx = BN_CTX_new()) == NULL)
goto err;
if ((point = EC_POINT_new(eckey->group)) == NULL)
int ec_GFp_simple_is_at_infinity(const EC_GROUP *, const EC_POINT *);
int ec_GFp_simple_is_on_curve(const EC_GROUP *, const EC_POINT *, BN_CTX *);
int ec_GFp_simple_cmp(const EC_GROUP *, const EC_POINT *a, const EC_POINT *b, BN_CTX *);
-int ec_GFp_simple_range(const EC_GROUP *group, const EC_POINT *a);
int ec_GFp_simple_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *);
int ec_GFp_simple_points_make_affine(const EC_GROUP *, size_t num, EC_POINT *[], BN_CTX *);
int ec_GFp_simple_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
int ec_GF2m_simple_is_at_infinity(const EC_GROUP *, const EC_POINT *);
int ec_GF2m_simple_is_on_curve(const EC_GROUP *, const EC_POINT *, BN_CTX *);
int ec_GF2m_simple_cmp(const EC_GROUP *, const EC_POINT *a, const EC_POINT *b, BN_CTX *);
-int ec_GF2m_simple_range(const EC_GROUP *group, const EC_POINT *a);
int ec_GF2m_simple_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *);
int ec_GF2m_simple_points_make_affine(const EC_GROUP *, size_t num, EC_POINT *[], BN_CTX *);
int ec_GF2m_simple_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
}
point->Z_is_one = Z_is_one;
}
-
- if (BN_cmp(&point->X, x) || BN_cmp(&point->Y, y))
- ret = 2;
- else
- ret = 1;
+
+ ret = 1;
err:
if (new_ctx != NULL)
{
return EC_POINT_is_at_infinity(group, b) ? 0 : 1;
}
-
- if (EC_POINT_is_at_infinity(group, b))
- return 1;
if (a->Z_is_one && b->Z_is_one)
{
return ret;
}
+
int ec_GFp_simple_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx)
{
BN_CTX *new_ctx = NULL;