Add additional parameter to dsa_builtin_paramgen to output the generated
[openssl.git] / crypto / ec / ec2_smpl.c
index cf357b462a27bcda50ff8f600bdfcf9635dab1e6..00ad347b9ac828bc0dbd6e02ea10ea48eaf4d9ee 100644 (file)
@@ -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)