X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fec%2Fecp_nist.c;h=d7488e75c6c6d0f07bdf4a444ddc7bef9e0fffc3;hp=94a232f74708571824d32a9ab14a171eaf863bf2;hb=7793f30e09c104b209206608a20f2088b1b635fd;hpb=2e0db07627d6ec226f3bdbeb3ac211dbd619f908 diff --git a/crypto/ec/ecp_nist.c b/crypto/ec/ecp_nist.c index 94a232f747..d7488e75c6 100644 --- a/crypto/ec/ecp_nist.c +++ b/crypto/ec/ecp_nist.c @@ -1,4 +1,3 @@ -/* TODO */ /* crypto/ec/ecp_nist.c */ /* ==================================================================== * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. @@ -53,36 +52,93 @@ * 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" - +#if 0 const EC_METHOD *EC_GFp_nist_method(void) { static const EC_METHOD ret = { - ec_GFp_simple_group_init, - ec_GFp_nist_group_set_curve_GFp, + ec_GFp_nist_group_init, ec_GFp_nist_group_finish, ec_GFp_nist_group_clear_finish, - ec_GFp_simple_group_copy, + 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, - /* 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_group_check_discriminant, 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, + 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_nist_field_mult, + ec_GFp_simple_points_make_affine, + ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, - ec_GFp_nist_field_encode, - ec_GFp_nist_field_decode }; + 0 /* field_div */, + 0 /* field_encode */, + 0 /* field_decode */, + 0 /* field_set_to_one */ }; return &ret; } +#endif + + +int ec_GFp_nist_group_init(EC_GROUP *group) + { + int ok; + + ok = ec_GFp_simple_group_init(group); + group->field_data1 = NULL; + return ok; + } + + +int ec_GFp_nist_group_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +/* TODO */ + + +void ec_GFp_nist_group_finish(EC_GROUP *group); +/* TODO */ + + +void ec_GFp_nist_group_clear_finish(EC_GROUP *group); +/* TODO */ + + +int ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src); +/* TODO */ + + +int ec_GFp_nist_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +/* TODO */ + + +int ec_GFp_nist_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +/* TODO */