summaryrefslogtreecommitdiffstats
path: root/crypto/ec/ec2_smpl.c
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2011-01-19 14:35:53 +0000
committerDr. Stephen Henson <steve@openssl.org>2011-01-19 14:35:53 +0000
commit198ce9a611b451656e7c984e16452e285597a015 (patch)
tree1d2f911b3340ae1e7ed76c367c0daf7d52e7d199 /crypto/ec/ec2_smpl.c
parent78c45722960510f63f9ee151959ea2f63fac7ba3 (diff)
Add additional parameter to dsa_builtin_paramgen to output the generated
seed to: this doesn't introduce any binary compatibility issues as the function is only used internally. The seed output is needed for FIPS 140-2 algorithm testing: the functionality used to be in DSA_generate_parameters_ex() but was removed in OpenSSL 1.0.0
Diffstat (limited to 'crypto/ec/ec2_smpl.c')
-rw-r--r--crypto/ec/ec2_smpl.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/crypto/ec/ec2_smpl.c b/crypto/ec/ec2_smpl.c
index cf357b462a..00ad347b9a 100644
--- a/crypto/ec/ec2_smpl.c
+++ b/crypto/ec/ec2_smpl.c
@@ -363,7 +363,12 @@ int ec_GF2m_simple_point_set_affine_coordinates(const EC_GROUP *group, EC_POINT
if (!BN_copy(&point->Z, BN_value_one())) goto err;
BN_set_negative(&point->Z, 0);
point->Z_is_one = 1;
- ret = 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;
err:
return ret;
@@ -937,6 +942,9 @@ int ec_GF2m_simple_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT
{
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)
{
@@ -967,6 +975,15 @@ int ec_GF2m_simple_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT
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)