More method functions for elliptic curves,
[openssl.git] / crypto / ec / ecp_mont.c
index ca08ebb152aac83297d627c4fa5e76b4f26c8e75..873d142af2eafad77a400e5addf127db2ab0803b 100644 (file)
@@ -1,4 +1,3 @@
-/* TODO */
 /* crypto/ec/ecp_mont.c */
 /* ====================================================================
  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
 const EC_METHOD *EC_GFp_mont_method(void)
        {
        static const EC_METHOD ret = {
-               ec_GFp_simple_group_init,
-               ec_GFp_simple_group_set_curve_GFp,
-               ec_GFp_simple_group_finish,
-               ec_GFp_simple_group_clear_finish,
-               ec_GFp_simple_group_copy,
+               ec_GFp_mont_group_init,
+               ec_GFp_mont_group_finish,
+               ec_GFp_mont_group_clear_finish,
+               ec_GFp_mont_group_copy,
+               ec_GFp_mont_group_set_curve_GFp,
+               ec_GFp_simple_group_get_curve_GFp,
                ec_GFp_simple_group_set_generator,
-               /* TODO: 'set' and 'get' functions for EC_GROUPs */
+               ec_GFp_simple_group_get0_generator,
+               ec_GFp_simple_group_get_order,
+               ec_GFp_simple_group_get_cofactor,
                ec_GFp_simple_point_init,
                ec_GFp_simple_point_finish,
                ec_GFp_simple_point_clear_finish,
                ec_GFp_simple_point_copy,
-               /* TODO: 'set' and 'get' functions for EC_POINTs */
+               ec_GFp_simple_point_set_to_infinity,
+               ec_GFp_simple_set_Jprojective_coordinates_GFp,
+               ec_GFp_simple_get_Jprojective_coordinates_GFp,
+               ec_GFp_simple_point_set_affine_coordinates_GFp,
+               ec_GFp_simple_point_get_affine_coordinates_GFp,
+               ec_GFp_simple_set_compressed_coordinates_GFp,
                ec_GFp_simple_point2oct,
                ec_GFp_simple_oct2point,
                ec_GFp_simple_add,
                ec_GFp_simple_dbl,
+               ec_GFp_simple_invert,
                ec_GFp_simple_is_at_infinity,
                ec_GFp_simple_is_on_curve,
+               ec_GFp_simple_cmp,
                ec_GFp_simple_make_affine,
-               ec_GFp_mont_field_mult,
+               ec_GFp_mont_field_mul,
                ec_GFp_mont_field_sqr,
                ec_GFp_mont_field_encode,
                ec_GFp_mont_field_decode };
 
        return &ret;
        }
+
+
+int ec_GFp_mont_group_init(EC_GROUP *group)
+       {
+       int ok;
+
+       ok = ec_GFp_simple_group_init(group);
+       group->field_data = NULL;
+       return ok;
+       }
+
+
+int ec_GFp_mont_group_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
+/* TODO */
+
+
+void ec_GFp_mont_group_finish(EC_GROUP *group);
+/* TODO */
+
+
+void ec_GFp_mont_group_clear_finish(EC_GROUP *group);
+/* TODO */
+
+
+int ec_GFp_mont_group_copy(EC_GROUP *dest, const EC_GROUP *src);
+/* TODO */
+
+
+int ec_GFp_mont_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
+/* TODO */
+
+
+int ec_GFp_mont_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
+/* TODO */
+
+
+int ec_GFp_mont_field_encode(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
+/* TODO */
+
+
+int ec_GFp_mont_field_decode(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
+/* TODO */