add -psk option to ciphers command

Reviewed-by: Matt Caswell <matt@openssl.org>
This commit is contained in:
Dr. Stephen Henson 2015-11-13 14:57:55 +00:00
parent 2a802c8029
commit 9650919915

View File

@ -69,6 +69,7 @@ typedef enum OPTION_choice {
OPT_TLS1, OPT_TLS1,
OPT_TLS1_1, OPT_TLS1_1,
OPT_TLS1_2, OPT_TLS1_2,
OPT_PSK,
OPT_V, OPT_UPPER_V, OPT_S OPT_V, OPT_UPPER_V, OPT_S
} OPTION_CHOICE; } OPTION_CHOICE;
@ -85,10 +86,21 @@ OPTIONS ciphers_options[] = {
#endif #endif
#ifndef OPENSSL_NO_SSL3 #ifndef OPENSSL_NO_SSL3
{"ssl3", OPT_SSL3, '-', "SSL3 mode"}, {"ssl3", OPT_SSL3, '-', "SSL3 mode"},
#endif
#ifndef OPENSSL_NO_PSK
{"psk", OPT_PSK, '-', "include ciphersuites requiring PSK"},
#endif #endif
{NULL} {NULL}
}; };
static unsigned int dummy_psk(SSL *ssl, const char *hint, char *identity,
unsigned int max_identity_len,
unsigned char *psk,
unsigned int max_psk_len)
{
return 0;
}
int ciphers_main(int argc, char **argv) int ciphers_main(int argc, char **argv)
{ {
SSL_CTX *ctx = NULL; SSL_CTX *ctx = NULL;
@ -98,6 +110,9 @@ int ciphers_main(int argc, char **argv)
int ret = 1, i, verbose = 0, Verbose = 0, use_supported = 0; int ret = 1, i, verbose = 0, Verbose = 0, use_supported = 0;
#ifndef OPENSSL_NO_SSL_TRACE #ifndef OPENSSL_NO_SSL_TRACE
int stdname = 0; int stdname = 0;
#endif
#ifndef OPENSSL_NO_PSK
int psk = 0;
#endif #endif
const char *p; const char *p;
char *ciphers = NULL, *prog; char *ciphers = NULL, *prog;
@ -144,6 +159,11 @@ int ciphers_main(int argc, char **argv)
case OPT_TLS1_2: case OPT_TLS1_2:
meth = TLSv1_2_client_method(); meth = TLSv1_2_client_method();
break; break;
case OPT_PSK:
#ifndef OPENSSL_NO_PSK
psk = 1;
#endif
break;
} }
} }
argv = opt_rest(); argv = opt_rest();
@ -157,6 +177,10 @@ int ciphers_main(int argc, char **argv)
ctx = SSL_CTX_new(meth); ctx = SSL_CTX_new(meth);
if (ctx == NULL) if (ctx == NULL)
goto err; goto err;
#ifndef OPENSSL_NO_PSK
if (psk)
SSL_CTX_set_psk_client_callback(ctx, dummy_psk);
#endif
if (ciphers != NULL) { if (ciphers != NULL) {
if (!SSL_CTX_set_cipher_list(ctx, ciphers)) { if (!SSL_CTX_set_cipher_list(ctx, ciphers)) {
BIO_printf(bio_err, "Error in cipher list\n"); BIO_printf(bio_err, "Error in cipher list\n");