Fix from stable branch.
[openssl.git] / ssl / ssl_lib.c
index ebff8e23e64c32dd1df0036ba313566d611d37e5..736423fd154106c16d1e5a12fffce0c7c6900e87 100644 (file)
@@ -1599,6 +1599,27 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth)
        ret->wbuf_freelist->len = 0;
        ret->wbuf_freelist->head = NULL;
 #endif
+#ifndef OPENSSL_NO_ENGINE
+       ret->client_cert_engine = NULL;
+#ifdef OPENSSL_SSL_CLIENT_ENGINE_AUTO
+#define eng_strx(x)    #x
+#define eng_str(x)     eng_strx(x)
+       /* Use specific client engine automatically... ignore errors */
+       {
+       ENGINE *eng;
+       eng = ENGINE_by_id(eng_str(OPENSSL_SSL_CLIENT_ENGINE_AUTO));
+       if (!eng)
+               {
+               ERR_clear_error();
+               ENGINE_load_builtin_engines();
+               eng = ENGINE_by_id(eng_str(OPENSSL_SSL_CLIENT_ENGINE_AUTO));
+               }
+       if (!eng || !SSL_CTX_set_client_cert_engine(ret, eng))
+               ERR_clear_error();
+       }
+#endif
+#endif
+
        return(ret);
 err:
        SSLerr(SSL_F_SSL_CTX_NEW,ERR_R_MALLOC_FAILURE);