Backport s_client changes.
authorDr. Stephen Henson <steve@openssl.org>
Wed, 4 Jun 2008 19:52:36 +0000 (19:52 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Wed, 4 Jun 2008 19:52:36 +0000 (19:52 +0000)
apps/s_client.c

index a4983c178fcfc43151e70b23ce0c37c8bb366033..9a0989fc42271612ef63830938765147ff577b34 100644 (file)
@@ -317,7 +317,8 @@ int MAIN(int argc, char **argv)
        int mbuf_len=0;
 #ifndef OPENSSL_NO_ENGINE
        char *engine_id=NULL;
-       ENGINE *e=NULL;
+       char *ssl_client_engine_id=NULL;
+       ENGINE *e=NULL, *ssl_client_engine=NULL;
 #endif
 #if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE)
        struct timeval tv;
@@ -555,6 +556,11 @@ int MAIN(int argc, char **argv)
                        if (--argc < 1) goto bad;
                        engine_id = *(++argv);
                        }
+               else if (strcmp(*argv,"-ssl_client_engine") == 0)
+                       {
+                       if (--argc < 1) goto bad;
+                       ssl_client_engine_id = *(++argv);
+                       }
 #endif
                else if (strcmp(*argv,"-rand") == 0)
                        {
@@ -590,6 +596,16 @@ bad:
 
 #ifndef OPENSSL_NO_ENGINE
         e = setup_engine(bio_err, engine_id, 1);
+       if (ssl_client_engine_id)
+               {
+               ssl_client_engine = ENGINE_by_id(ssl_client_engine_id);
+               if (!ssl_client_engine)
+                       {
+                       BIO_printf(bio_err,
+                                       "Error getting client auth engine\n");
+                       goto end;
+                       }
+               }
 #endif
        if (!app_passwd(bio_err, passarg, NULL, &pass, NULL))
                {