]> git.ipfire.org Git - thirdparty/openssl.git/blobdiff - crypto/dsa/dsa_lib.c
Rename recently introduced functions for improved code clarity:
[thirdparty/openssl.git] / crypto / dsa / dsa_lib.c
index 2abdd08c9066f29aca7fa2ccd40cf00642c6d875..365145a96b73710633c0cdd60cfbc8817cb2ead6 100644 (file)
@@ -67,9 +67,7 @@
 
 const char *DSA_version="DSA" OPENSSL_VERSION_PTEXT;
 
-static const DSA_METHOD *default_DSA_method;
-static int dsa_meth_num = 0;
-static STACK_OF(CRYPTO_EX_DATA_FUNCS) *dsa_meth = NULL;
+static const DSA_METHOD *default_DSA_method = NULL;
 
 void DSA_set_default_openssl_method(const DSA_METHOD *meth)
 {
@@ -146,16 +144,24 @@ DSA *DSA_new_method(ENGINE *engine)
                DSAerr(DSA_F_DSA_NEW,ERR_R_MALLOC_FAILURE);
                return(NULL);
                }
-       if(engine)
-               ret->engine = engine;
+
+       if (engine)
+               {
+               if(ENGINE_init(engine))
+                       ret->engine = engine;
+               else 
+                       ret->engine = NULL;
+               }
        else
+               ret->engine=ENGINE_get_default_DSA();
+
+       if(ret->engine == NULL)
                {
-               if((ret->engine=ENGINE_get_default_DSA()) == NULL)
-                       {
-                       OPENSSL_free(ret);
-                       return NULL;
-                       }
+               DSAerr(DSA_F_DSA_NEW,ERR_LIB_ENGINE);
+               OPENSSL_free(ret);
+               return NULL;
                }
+
        meth = ENGINE_get_DSA(ret->engine);
        ret->pad=0;
        ret->version=0;
@@ -173,10 +179,10 @@ DSA *DSA_new_method(ENGINE *engine)
 
        ret->references=1;
        ret->flags=meth->flags;
-       CRYPTO_new_ex_data(dsa_meth,ret,&ret->ex_data);
+       CRYPTO_new_ex_data(CRYPTO_EX_INDEX_DSA, ret, &ret->ex_data);
        if ((meth->init != NULL) && !meth->init(ret))
                {
-               CRYPTO_free_ex_data(dsa_meth,ret,&ret->ex_data);
+               CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DSA, ret, &ret->ex_data);
                OPENSSL_free(ret);
                ret=NULL;
                }
@@ -208,7 +214,7 @@ void DSA_free(DSA *r)
        if(meth->finish) meth->finish(r);
        ENGINE_finish(r->engine);
 
-       CRYPTO_free_ex_data(dsa_meth, r, &r->ex_data);
+       CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DSA, r, &r->ex_data);
 
        if (r->p != NULL) BN_clear_free(r->p);
        if (r->q != NULL) BN_clear_free(r->q);
@@ -220,6 +226,22 @@ void DSA_free(DSA *r)
        OPENSSL_free(r);
        }
 
+int DSA_up_ref(DSA *r)
+       {
+       int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_DSA);
+#ifdef REF_PRINT
+       REF_PRINT("DSA",r);
+#endif
+#ifdef REF_CHECK
+       if (i < 2)
+               {
+               fprintf(stderr, "DSA_up_ref, bad reference count\n");
+               abort();
+               }
+#endif
+       return ((i > 1) ? 1 : 0);
+       }
+
 int DSA_size(const DSA *r)
        {
        int ret,i;
@@ -242,9 +264,8 @@ int DSA_size(const DSA *r)
 int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
             CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
         {
-       dsa_meth_num++;
-       return(CRYPTO_get_ex_new_index(dsa_meth_num-1,
-               &dsa_meth,argl,argp,new_func,dup_func,free_func));
+       return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DSA, argl, argp,
+                               new_func, dup_func, free_func);
         }
 
 int DSA_set_ex_data(DSA *d, int idx, void *arg)