ecc api cleanup; summary:
[openssl.git] / crypto / ec / ec.h
index 52bce1b4f09c71e24743ac6cfda816f782ddfd40..a19a075b0d36cbec993787b1958f028c528cc6de 100644 (file)
@@ -139,12 +139,12 @@ const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *);
 int EC_METHOD_get_field_type(const EC_METHOD *);
 
 int EC_GROUP_set_generator(EC_GROUP *, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor);
-EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *);
+const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *);
 int EC_GROUP_get_order(const EC_GROUP *, BIGNUM *order, BN_CTX *);
 int EC_GROUP_get_cofactor(const EC_GROUP *, BIGNUM *cofactor, BN_CTX *);
 
-void EC_GROUP_set_nid(EC_GROUP *, int); /* curve name */
-int EC_GROUP_get_nid(const EC_GROUP *);
+void EC_GROUP_set_curve_name(EC_GROUP *, int nid);
+int EC_GROUP_get_curve_name(const EC_GROUP *);
 
 void EC_GROUP_set_asn1_flag(EC_GROUP *, int flag);
 int EC_GROUP_get_asn1_flag(const EC_GROUP *);
@@ -178,8 +178,9 @@ int EC_GROUP_cmp(const EC_GROUP *, const EC_GROUP *, BN_CTX *);
 EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
 EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
 
-/* EC_GROUP_new_by_nid() creates a EC_GROUP structure specified by a NID */
-EC_GROUP *EC_GROUP_new_by_nid(int nid);
+/* EC_GROUP_new_by_curve_name() creates a EC_GROUP structure
+ * specified by a curve name (in form of a NID) */
+EC_GROUP *EC_GROUP_new_by_curve_name(int nid);
 /* handling of internal curves */
 typedef struct { 
        int nid;
@@ -291,36 +292,37 @@ int     ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off);
 /* the EC_KEY stuff */
 typedef struct ec_key_st EC_KEY;
 
-typedef struct ec_key_meth_data_st {
-       int (*init)(EC_KEY *);
-       void (*finish)(EC_KEY *);
-       } EC_KEY_METH_DATA;
-
-struct ec_key_st {
-       int version;
-
-       EC_GROUP *group;
-
-       EC_POINT *pub_key;
-       BIGNUM   *priv_key;
-
-       unsigned int enc_flag;
-       point_conversion_form_t conv_form;
-
-       int     references;
-
-       EC_KEY_METH_DATA *meth_data;
-       }/* EC_KEY */;
 /* some values for the encoding_flag */
 #define EC_PKEY_NO_PARAMETERS  0x001
 #define EC_PKEY_NO_PUBKEY      0x002
 
 EC_KEY *EC_KEY_new(void);
+EC_KEY *EC_KEY_new_by_curve_name(int nid);
 void EC_KEY_free(EC_KEY *);
 EC_KEY *EC_KEY_copy(EC_KEY *, const EC_KEY *);
 EC_KEY *EC_KEY_dup(const EC_KEY *);
+
 int EC_KEY_up_ref(EC_KEY *);
 
+const EC_GROUP *EC_KEY_get0_group(const EC_KEY *);
+int EC_KEY_set_group(EC_KEY *, const EC_GROUP *);
+const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *);
+int EC_KEY_set_private_key(EC_KEY *, const BIGNUM *);
+const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *);
+int EC_KEY_set_public_key(EC_KEY *, const EC_POINT *);
+unsigned EC_KEY_get_enc_flags(const EC_KEY *);
+void EC_KEY_set_enc_flags(EC_KEY *, unsigned int);
+point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *);
+void EC_KEY_set_conv_form(EC_KEY *, point_conversion_form_t);
+/* functions to set/get method specific data  */
+void *EC_KEY_get_key_method_data(EC_KEY *, 
+       void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *));
+void EC_KEY_insert_key_method_data(EC_KEY *, void *data,
+       void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *));
+/* wrapper functions for the underlying EC_GROUP object */
+void EC_KEY_set_asn1_flag(EC_KEY *, int);
+int EC_KEY_precompute_mult(EC_KEY *, BN_CTX *ctx);
+
 /* EC_KEY_generate_key() creates a ec private (public) key */
 int EC_KEY_generate_key(EC_KEY *);
 /* EC_KEY_check_key() */
@@ -383,6 +385,7 @@ void ERR_load_EC_strings(void);
 #define EC_F_EC_ASN1_GROUP2PKPARAMETERS                         156
 #define EC_F_EC_ASN1_PARAMETERS2GROUP                   157
 #define EC_F_EC_ASN1_PKPARAMETERS2GROUP                         158
+#define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY          208
 #define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT    159
 #define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE             195
 #define EC_F_EC_GF2M_SIMPLE_OCT2POINT                   160
@@ -393,10 +396,13 @@ void ERR_load_EC_strings(void);
 #define EC_F_EC_GFP_MONT_FIELD_DECODE                   133
 #define EC_F_EC_GFP_MONT_FIELD_ENCODE                   134
 #define EC_F_EC_GFP_MONT_FIELD_MUL                      131
+#define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE               209
 #define EC_F_EC_GFP_MONT_FIELD_SQR                      132
+#define EC_F_EC_GFP_MONT_GROUP_SET_CURVE                189
+#define EC_F_EC_GFP_MONT_GROUP_SET_CURVE_GFP            135
 #define EC_F_EC_GFP_NIST_FIELD_MUL                      200
 #define EC_F_EC_GFP_NIST_FIELD_SQR                      201
-#define EC_F_EC_GFP_NIST_GROUP_SET_CURVE_GFP            202
+#define EC_F_EC_GFP_NIST_GROUP_SET_CURVE                202
 #define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT     165
 #define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE              166
 #define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP          100
@@ -424,7 +430,7 @@ void ERR_load_EC_strings(void);
 #define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS               194
 #define EC_F_EC_GROUP_GROUP2NID                                 147
 #define EC_F_EC_GROUP_NEW                               108
-#define EC_F_EC_GROUP_NEW_BY_NID                        174
+#define EC_F_EC_GROUP_NEW_BY_CURVE_NAME                         174
 #define EC_F_EC_GROUP_NEW_FROM_DATA                     175
 #define EC_F_EC_GROUP_PRECOMPUTE_MULT                   142
 #define EC_F_EC_GROUP_SET_CURVE_GF2M                    176
@@ -434,9 +440,9 @@ void ERR_load_EC_strings(void);
 #define EC_F_EC_KEY_CHECK_KEY                           177
 #define EC_F_EC_KEY_COPY                                178
 #define EC_F_EC_KEY_GENERATE_KEY                        179
+#define EC_F_EC_KEY_NEW                                         182
 #define EC_F_EC_KEY_PRINT                               180
 #define EC_F_EC_KEY_PRINT_FP                            181
-#define EC_F_EC_NEW                                     182
 #define EC_F_EC_POINTS_MAKE_AFFINE                      136
 #define EC_F_EC_POINTS_MUL                              138
 #define EC_F_EC_POINT_ADD                               112
@@ -446,6 +452,7 @@ void ERR_load_EC_strings(void);
 #define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M       183
 #define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP        116
 #define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP   117
+#define EC_F_EC_POINT_INVERT                            210
 #define EC_F_EC_POINT_IS_AT_INFINITY                    118
 #define EC_F_EC_POINT_IS_ON_CURVE                       119
 #define EC_F_EC_POINT_MAKE_AFFINE                       120
@@ -462,8 +469,6 @@ void ERR_load_EC_strings(void);
 #define EC_F_EC_PRE_COMP_DUP                            207
 #define EC_F_EC_WNAF_MUL                                187
 #define EC_F_EC_WNAF_PRECOMPUTE_MULT                    188
-#define EC_F_GFP_MONT_GROUP_SET_CURVE                   189
-#define EC_F_GFP_MONT_GROUP_SET_CURVE_GFP               135
 #define EC_F_I2D_ECPARAMETERS                           190
 #define EC_F_I2D_ECPKPARAMETERS                                 191
 #define EC_F_I2D_ECPRIVATEKEY                           192