Make ciphers and digests obtain an ENGINE functional reference
authorDr. Stephen Henson <steve@openssl.org>
Sat, 9 Mar 2002 18:58:05 +0000 (18:58 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Sat, 9 Mar 2002 18:58:05 +0000 (18:58 +0000)
if impl is explicitly supplied.

crypto/evp/digest.c
crypto/evp/evp_enc.c

index 12c6cec..a969ac6 100644 (file)
@@ -152,7 +152,15 @@ int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
                 * ENGINE and EVP_MD could be used). */
                if(ctx->engine)
                        ENGINE_finish(ctx->engine);
                 * ENGINE and EVP_MD could be used). */
                if(ctx->engine)
                        ENGINE_finish(ctx->engine);
-               if(!impl)
+               if(impl)
+                       {
+                       if (!ENGINE_init(impl))
+                               {
+                               EVPerr(EVP_F_EVP_DIGESTINIT, EVP_R_INITIALIZATION_ERROR);
+                               return 0;
+                               }
+                       }
+               else
                        /* Ask if an ENGINE is reserved for this job */
                        impl = ENGINE_get_digest_engine(type->type);
                if(impl)
                        /* Ask if an ENGINE is reserved for this job */
                        impl = ENGINE_get_digest_engine(type->type);
                if(impl)
index 9c65a55..22a7b74 100644 (file)
@@ -100,7 +100,15 @@ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *imp
                 * ENGINE and EVP_CIPHER could be used). */
                if(ctx->engine)
                        ENGINE_finish(ctx->engine);
                 * ENGINE and EVP_CIPHER could be used). */
                if(ctx->engine)
                        ENGINE_finish(ctx->engine);
-               if(!impl)
+               if(impl)
+                       {
+                       if (!ENGINE_init(impl))
+                               {
+                               EVPerr(EVP_F_EVP_CIPHERINIT, EVP_R_INITIALIZATION_ERROR);
+                               return 0;
+                               }
+                       }
+               else
                        /* Ask if an ENGINE is reserved for this job */
                        impl = ENGINE_get_cipher_engine(cipher->nid);
                if(impl)
                        /* Ask if an ENGINE is reserved for this job */
                        impl = ENGINE_get_cipher_engine(cipher->nid);
                if(impl)