add support for elliptic curves over binary fields
[openssl.git] / crypto / ec / ecp_nist.c
index 354130bed2b0fd9578b4e8fde8bcd26a7125a5bf..d7488e75c6c6d0f07bdf4a444ddc7bef9e0fffc3 100644 (file)
  * Hudson (tjh@cryptsoft.com).
  *
  */
+/* ====================================================================
+ * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
+ * Portions of this software developed by SUN MICROSYSTEMS, INC.,
+ * and contributed to the OpenSSL project.
+ */
 
 #include "ec_lcl.h"
 
@@ -65,10 +70,12 @@ const EC_METHOD *EC_GFp_nist_method(void)
                ec_GFp_nist_group_copy,
                ec_GFp_nist_group_set_curve_GFp,
                ec_GFp_simple_group_get_curve_GFp,
+               ec_GFp_simple_group_get_degree,
                ec_GFp_simple_group_set_generator,
                ec_GFp_simple_group_get0_generator,
                ec_GFp_simple_group_get_order,
                ec_GFp_simple_group_get_cofactor,
+               ec_GFp_simple_group_check_discriminant,
                ec_GFp_simple_point_init,
                ec_GFp_simple_point_finish,
                ec_GFp_simple_point_clear_finish,
@@ -84,14 +91,19 @@ const EC_METHOD *EC_GFp_nist_method(void)
                ec_GFp_simple_add,
                ec_GFp_simple_dbl,
                ec_GFp_simple_invert,
+               0 /* mul */,
+               0 /* precompute_mult */,
                ec_GFp_simple_is_at_infinity,
                ec_GFp_simple_is_on_curve,
                ec_GFp_simple_cmp,
                ec_GFp_simple_make_affine,
+               ec_GFp_simple_points_make_affine,
                ec_GFp_nist_field_mul,
                ec_GFp_nist_field_sqr,
+               0 /* field_div */,
                0 /* field_encode */,
-               0 /* field_decode */ };
+               0 /* field_decode */,
+               0 /* field_set_to_one */ };
 
        return &ret;
        }
@@ -103,7 +115,7 @@ int ec_GFp_nist_group_init(EC_GROUP *group)
        int ok;
 
        ok = ec_GFp_simple_group_init(group);
-       group->field_data = NULL;
+       group->field_data1 = NULL;
        return ok;
        }