projects
/
oweals
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
argc counting bug fixed.
[oweals/openssl.git]
/
apps
/
s_client.c
diff --git
a/apps/s_client.c
b/apps/s_client.c
index 2afb031b0ba467e573397bf35af44d0b2dc2e732..f0c2280d2ec326e94fd980a0a677a7248e19eb20 100644
(file)
--- a/
apps/s_client.c
+++ b/
apps/s_client.c
@@
-64,12
+64,16
@@
#define APPS_WIN16
#endif
#include "apps.h"
#define APPS_WIN16
#endif
#include "apps.h"
-#include
"x509.h"
-#include
"ssl.h"
-#include
"err.h"
-#include
"pem.h"
+#include
<openssl/x509.h>
+#include
<openssl/ssl.h>
+#include
<openssl/err.h>
+#include
<openssl/pem.h>
#include "s_apps.h"
#include "s_apps.h"
+#if defined(NO_RSA) && !defined(NO_SSL2)
+#define NO_SSL2
+#endif
+
#undef PROG
#define PROG s_client_main
#undef PROG
#define PROG s_client_main
@@
-92,18
+96,12
@@
static int c_Pause=0;
static int c_debug=0;
static int c_showcerts=0;
static int c_debug=0;
static int c_showcerts=0;
-#ifndef NOPROTO
static void sc_usage(void);
static void print_stuff(BIO *berr,SSL *con,int full);
static void sc_usage(void);
static void print_stuff(BIO *berr,SSL *con,int full);
-#else
-static void sc_usage();
-static void print_stuff();
-#endif
-
static BIO *bio_c_out=NULL;
static int c_quiet=0;
static BIO *bio_c_out=NULL;
static int c_quiet=0;
-static void sc_usage()
+static void sc_usage(
void
)
{
BIO_printf(bio_err,"usage: s_client args\n");
BIO_printf(bio_err,"\n");
{
BIO_printf(bio_err,"usage: s_client args\n");
BIO_printf(bio_err,"\n");
@@
-137,9
+135,7
@@
static void sc_usage()
}
}
-int MAIN(argc, argv)
-int argc;
-char **argv;
+int MAIN(int argc, char **argv)
{
int off=0;
SSL *con=NULL,*con2=NULL;
{
int off=0;
SSL *con=NULL,*con2=NULL;
@@
-442,8
+438,8
@@
re_start:
ssl_pending = read_ssl && SSL_pending(con);
if (!ssl_pending)
ssl_pending = read_ssl && SSL_pending(con);
if (!ssl_pending)
-#ifndef WINDOWS
{
{
+#ifndef WINDOWS
if (tty_on)
{
if (read_tty) FD_SET(fileno(stdin),&readfds);
if (tty_on)
{
if (read_tty) FD_SET(fileno(stdin),&readfds);
@@
-623,9
+619,9
@@
printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
if ((!c_quiet) && (cbuf[0] == 'R'))
{
if ((!c_quiet) && (cbuf[0] == 'R'))
{
+ BIO_printf(bio_err,"RENEGOTIATING\n");
SSL_renegotiate(con);
SSL_renegotiate(con);
- read_tty=0;
- write_ssl=1;
+ cbuf_len=0;
}
else
{
}
else
{
@@
-633,8
+629,8
@@
printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
cbuf_off=0;
}
cbuf_off=0;
}
- read_tty=0;
write_ssl=1;
write_ssl=1;
+ read_tty=0;
}
#endif
}
}
#endif
}
@@
-657,16
+653,14
@@
end:
}
}
-static void print_stuff(bio,s,full)
-BIO *bio;
-SSL *s;
-int full;
+static void print_stuff(BIO *bio, SSL *s, int full)
{
X509 *peer=NULL;
char *p;
static char *space=" ";
char buf[BUFSIZ];
{
X509 *peer=NULL;
char *p;
static char *space=" ";
char buf[BUFSIZ];
- STACK *sk;
+ STACK_OF(X509) *sk;
+ STACK_OF(X509_NAME) *sk2;
SSL_CIPHER *c;
X509_NAME *xn;
int j,i;
SSL_CIPHER *c;
X509_NAME *xn;
int j,i;
@@
-677,16
+671,16
@@
int full;
if (sk != NULL)
{
BIO_printf(bio,"---\nCertificate chain\n");
if (sk != NULL)
{
BIO_printf(bio,"---\nCertificate chain\n");
- for (i=0; i<sk_num(sk); i++)
+ for (i=0; i<sk_
X509_
num(sk); i++)
{
{
- X509_NAME_oneline(X509_get_subject_name(
(X509 *)
- sk_value(sk,i)),buf,BUFSIZ);
+ X509_NAME_oneline(X509_get_subject_name(
+ sk_
X509_
value(sk,i)),buf,BUFSIZ);
BIO_printf(bio,"%2d s:%s\n",i,buf);
BIO_printf(bio,"%2d s:%s\n",i,buf);
- X509_NAME_oneline(X509_get_issuer_name(
(X509 *)
- sk_value(sk,i)),buf,BUFSIZ);
+ X509_NAME_oneline(X509_get_issuer_name(
+ sk_
X509_
value(sk,i)),buf,BUFSIZ);
BIO_printf(bio," i:%s\n",buf);
if (c_showcerts)
BIO_printf(bio," i:%s\n",buf);
if (c_showcerts)
- PEM_write_bio_X509(bio,
(X509 *) sk
_value(sk,i));
+ PEM_write_bio_X509(bio,
sk_X509
_value(sk,i));
}
}
}
}
@@
-707,13
+701,13
@@
int full;
else
BIO_printf(bio,"no peer certificate available\n");
else
BIO_printf(bio,"no peer certificate available\n");
- sk=SSL_get_client_CA_list(s);
- if ((sk
!= NULL) && (sk_num(sk
) > 0))
+ sk
2
=SSL_get_client_CA_list(s);
+ if ((sk
2 != NULL) && (sk_X509_NAME_num(sk2
) > 0))
{
BIO_printf(bio,"---\nAcceptable client certificate CA names\n");
{
BIO_printf(bio,"---\nAcceptable client certificate CA names\n");
- for (i=0; i<sk_
num(sk
); i++)
+ for (i=0; i<sk_
X509_NAME_num(sk2
); i++)
{
{
- xn=
(X509_NAME *)sk_value(sk
,i);
+ xn=
sk_X509_NAME_value(sk2
,i);
X509_NAME_oneline(xn,buf,sizeof(buf));
BIO_write(bio,buf,strlen(buf));
BIO_write(bio,"\n",1);
X509_NAME_oneline(xn,buf,sizeof(buf));
BIO_write(bio,buf,strlen(buf));
BIO_write(bio,"\n",1);
@@
-726,6
+720,11
@@
int full;
p=SSL_get_shared_ciphers(s,buf,BUFSIZ);
if (p != NULL)
{
p=SSL_get_shared_ciphers(s,buf,BUFSIZ);
if (p != NULL)
{
+ /* This works only for SSL 2. In later protocol
+ * versions, the client does not know what other
+ * ciphers (in addition to the one to be used
+ * in the current connection) the server supports. */
+
BIO_printf(bio,"---\nCiphers common between both SSL endpoints:\n");
j=i=0;
while (*p)
BIO_printf(bio,"---\nCiphers common between both SSL endpoints:\n");
j=i=0;
while (*p)