1/* crypto/ec/ecp_nist.c */ 2/* ==================================================================== 3 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in 14 * the documentation and/or other materials provided with the 15 * distribution. 16 * 17 * 3. All advertising materials mentioning features or use of this 18 * software must display the following acknowledgment: 19 * "This product includes software developed by the OpenSSL Project 20 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 21 * 22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 23 * endorse or promote products derived from this software without 24 * prior written permission. For written permission, please contact 25 * openssl-core@openssl.org. 26 * 27 * 5. Products derived from this software may not be called "OpenSSL" 28 * nor may "OpenSSL" appear in their names without prior written 29 * permission of the OpenSSL Project. 30 * 31 * 6. Redistributions of any form whatsoever must retain the following 32 * acknowledgment: 33 * "This product includes software developed by the OpenSSL Project 34 * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 35 * 36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 47 * OF THE POSSIBILITY OF SUCH DAMAGE. 48 * ==================================================================== 49 * 50 * This product includes cryptographic software written by Eric Young 51 * (eay@cryptsoft.com). This product includes software written by Tim 52 * Hudson (tjh@cryptsoft.com). 53 * 54 */ 55 56#include "ec_lcl.h" 57 58#if 0 59const EC_METHOD *EC_GFp_nist_method(void) 60 { 61 static const EC_METHOD ret = { 62 ec_GFp_nist_group_init, 63 ec_GFp_nist_group_finish, 64 ec_GFp_nist_group_clear_finish, 65 ec_GFp_nist_group_copy, 66 ec_GFp_nist_group_set_curve_GFp, 67 ec_GFp_simple_group_get_curve_GFp, 68 ec_GFp_simple_group_set_generator, 69 ec_GFp_simple_group_get0_generator, 70 ec_GFp_simple_group_get_order, 71 ec_GFp_simple_group_get_cofactor, 72 ec_GFp_simple_point_init, 73 ec_GFp_simple_point_finish, 74 ec_GFp_simple_point_clear_finish, 75 ec_GFp_simple_point_copy, 76 ec_GFp_simple_point_set_to_infinity, 77 ec_GFp_simple_set_Jprojective_coordinates_GFp, 78 ec_GFp_simple_get_Jprojective_coordinates_GFp, 79 ec_GFp_simple_point_set_affine_coordinates_GFp, 80 ec_GFp_simple_point_get_affine_coordinates_GFp, 81 ec_GFp_simple_set_compressed_coordinates_GFp, 82 ec_GFp_simple_point2oct, 83 ec_GFp_simple_oct2point, 84 ec_GFp_simple_add, 85 ec_GFp_simple_dbl, 86 ec_GFp_simple_invert, 87 ec_GFp_simple_is_at_infinity, 88 ec_GFp_simple_is_on_curve, 89 ec_GFp_simple_cmp, 90 ec_GFp_simple_make_affine, 91 ec_GFp_simple_points_make_affine, 92 ec_GFp_nist_field_mul, 93 ec_GFp_nist_field_sqr, 94 0 /* field_encode */, 95 0 /* field_decode */, 96 0 /* field_set_to_one */ }; 97 98 return &ret; 99 } 100#endif 101 102 103int ec_GFp_nist_group_init(EC_GROUP *group) 104 { 105 int ok; 106 107 ok = ec_GFp_simple_group_init(group); 108 group->field_data1 = NULL; 109 return ok; 110 } 111 112 113int ec_GFp_nist_group_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); 114/* TODO */ 115 116 117void ec_GFp_nist_group_finish(EC_GROUP *group); 118/* TODO */ 119 120 121void ec_GFp_nist_group_clear_finish(EC_GROUP *group); 122/* TODO */ 123 124 125int ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src); 126/* TODO */ 127 128 129int ec_GFp_nist_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); 130/* TODO */ 131 132 133int ec_GFp_nist_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); 134/* TODO */ 135