Revert "Fix off-by-one errors in ssl_cipher_get_evp()"
[openssl.git] / apps / s_client.c
index f85309f9003f1fc104c73a871c537a9244867dbf..de6a984febf785d1839579580aaa27a34755898a 100644 (file)
@@ -323,7 +323,8 @@ static void sc_usage(void)
        BIO_printf(bio_err,"\n");
        BIO_printf(bio_err," -host host     - use -connect instead\n");
        BIO_printf(bio_err," -port port     - use -connect instead\n");
-       BIO_printf(bio_err," -connect host:port - who to connect to (default is %s:%s)\n",SSL_HOST_NAME,PORT_STR);
+       BIO_printf(bio_err," -connect host:port - connect over TCP/IP (default is %s:%s)\n",SSL_HOST_NAME,PORT_STR);
+       BIO_printf(bio_err," -unix path    - connect over unix domain sockets\n");
        BIO_printf(bio_err," -verify arg   - turn on peer certificate verification\n");
        BIO_printf(bio_err," -cert arg     - certificate file to use, PEM format assumed\n");
        BIO_printf(bio_err," -certform arg - certificate format (PEM or DER) PEM default\n");
@@ -333,6 +334,7 @@ static void sc_usage(void)
        BIO_printf(bio_err," -pass arg     - private key file pass phrase source\n");
        BIO_printf(bio_err," -CApath arg   - PEM format directory of CA's\n");
        BIO_printf(bio_err," -CAfile arg   - PEM format file of CA's\n");
+       BIO_printf(bio_err," -trusted_first - Use local CA's first when building trust chain\n");
        BIO_printf(bio_err," -reconnect    - Drop and re-make the connection with the same Session-ID\n");
        BIO_printf(bio_err," -pause        - sleep(1) after each read(2) and write(2) system call\n");
        BIO_printf(bio_err," -showcerts    - show all certificates in the chain\n");
@@ -627,6 +629,7 @@ int MAIN(int argc, char **argv)
        short port=PORT;
        int full_log=1;
        char *host=SSL_HOST_NAME;
+       const char *unix_path = NULL;
        char *xmpphost = NULL;
        char *cert_file=NULL,*key_file=NULL,*chain_file=NULL;
        int cert_format = FORMAT_PEM, key_format = FORMAT_PEM;
@@ -702,6 +705,7 @@ static char *jpake_secret = NULL;
        int crl_format = FORMAT_PEM;
        int crl_download = 0;
        STACK_OF(X509_CRL) *crls = NULL;
+       int sdebug = 0;
 
        meth=SSLv23_client_method();
 
@@ -713,8 +717,6 @@ static char *jpake_secret = NULL;
        c_msg=0;
        c_showcerts=0;
 
-       X509V3_EXT_add_rfc6962();
-
        if (bio_err == NULL)
                bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
 
@@ -761,6 +763,11 @@ static char *jpake_secret = NULL;
                        if (!extract_host_port(*(++argv),&host,NULL,&port))
                                goto bad;
                        }
+               else if (strcmp(*argv,"-unix") == 0)
+                       {
+                       if (--argc < 1) goto bad;
+                       unix_path = *(++argv);
+                       }
                else if (strcmp(*argv,"-xmpphost") == 0)
                        {
                        if (--argc < 1) goto bad;
@@ -876,6 +883,10 @@ static char *jpake_secret = NULL;
                else if (strcmp(*argv,"-trace") == 0)
                        c_msg=2;
 #endif
+               else if (strcmp(*argv,"-security_debug") == 0)
+                       { sdebug=1; }
+               else if (strcmp(*argv,"-security_debug_verbose") == 0)
+                       { sdebug=2; }
                else if (strcmp(*argv,"-showcerts") == 0)
                        c_showcerts=1;
                else if (strcmp(*argv,"-nbio_test") == 0)
@@ -1152,6 +1163,11 @@ bad:
                goto end;
                }
 
+       if (unix_path && (socket_type != SOCK_STREAM))
+               {
+               BIO_printf(bio_err, "Can't use unix sockets and datagrams together\n");
+                       goto end;
+               }
 #if !defined(OPENSSL_NO_JPAKE) && !defined(OPENSSL_NO_PSK)
        if (jpake_secret)
                {
@@ -1304,6 +1320,9 @@ bad:
                goto end;
                }
 
+       if (sdebug)
+               ssl_ctx_security_debug(ctx, bio_err, sdebug);
+
        if (vpm)
                SSL_CTX_set1_param(ctx, vpm);
 
@@ -1493,7 +1512,8 @@ bad:
 
 re_start:
 
-       if (init_client(&s,host,port,socket_type) == 0)
+       if ((!unix_path && (init_client(&s,host,port,socket_type) == 0)) ||
+                       (unix_path && (init_client_unix(&s,unix_path) == 0)))
                {
                BIO_printf(bio_err,"connect:errno=%d\n",get_last_socket_error());
                SHUTDOWN(s);
@@ -2195,7 +2215,6 @@ end:
                BIO_free(bio_c_msg);
                bio_c_msg=NULL;
                }
-       X509V3_EXT_cleanup();
        apps_shutdown();
        OPENSSL_EXIT(ret);
        }