add sign/verify methods
[openssl.git] / crypto / ecdsa / ecs_lib.c
index 55324f7fef6652c82e4a6a67eece6e55365c2b32..6fd3ceefda56932938c547f69bf8648cecc01d87 100644 (file)
@@ -61,8 +61,6 @@
 #include <openssl/err.h>
 #include <openssl/bn.h>
 
-const char ECDSA_version[] = "ECDSA" OPENSSL_VERSION_PTEXT;
-
 static const ECDSA_METHOD *default_ECDSA_method = NULL;
 
 static void *ecdsa_data_new(void);
@@ -76,8 +74,6 @@ void ECDSA_set_default_method(const ECDSA_METHOD *meth)
 
 const ECDSA_METHOD *ECDSA_get_default_method(void)
 {
-    if (!default_ECDSA_method)
-        default_ECDSA_method = ECDSA_OpenSSL();
     return default_ECDSA_method;
 }
 
@@ -105,7 +101,7 @@ static ECDSA_DATA *ECDSA_DATA_new_method(ENGINE *engine)
 {
     ECDSA_DATA *ret;
 
-    ret = OPENSSL_malloc(sizeof(ECDSA_DATA));
+    ret = OPENSSL_malloc(sizeof(*ret));
     if (ret == NULL) {
         ECDSAerr(ECDSA_F_ECDSA_DATA_NEW_METHOD, ERR_R_MALLOC_FAILURE);
         return (NULL);
@@ -224,13 +220,6 @@ int ECDSA_size(const EC_KEY *r)
     return (ret);
 }
 
-int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
-                           CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
-{
-    return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ECDSA, argl, argp,
-                                   new_func, dup_func, free_func);
-}
-
 int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg)
 {
     ECDSA_DATA *ecdsa;
@@ -249,11 +238,11 @@ void *ECDSA_get_ex_data(EC_KEY *d, int idx)
     return (CRYPTO_get_ex_data(&ecdsa->ex_data, idx));
 }
 
-ECDSA_METHOD *ECDSA_METHOD_new(ECDSA_METHOD *ecdsa_meth)
+ECDSA_METHOD *ECDSA_METHOD_new(const ECDSA_METHOD *ecdsa_meth)
 {
     ECDSA_METHOD *ret;
 
-    ret = OPENSSL_malloc(sizeof(ECDSA_METHOD));
+    ret = OPENSSL_zalloc(sizeof(*ret));
     if (ret == NULL) {
         ECDSAerr(ECDSA_F_ECDSA_METHOD_NEW, ERR_R_MALLOC_FAILURE);
         return NULL;
@@ -261,13 +250,6 @@ ECDSA_METHOD *ECDSA_METHOD_new(ECDSA_METHOD *ecdsa_meth)
 
     if (ecdsa_meth)
         *ret = *ecdsa_meth;
-    else {
-        ret->ecdsa_sign_setup = 0;
-        ret->ecdsa_do_sign = 0;
-        ret->ecdsa_do_verify = 0;
-        ret->name = NULL;
-        ret->flags = 0;
-    }
     ret->flags |= ECDSA_METHOD_FLAG_ALLOCATED;
     return ret;
 }
@@ -312,6 +294,8 @@ void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name)
 
 void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method)
 {
+    if (!ecdsa_method)
+        return;
     if (ecdsa_method->flags & ECDSA_METHOD_FLAG_ALLOCATED)
         OPENSSL_free(ecdsa_method);
 }