- Added force_ciphersuite option to ssl_client2 application
This commit is contained in:
parent
2544a04918
commit
5193688682
1 changed files with 30 additions and 2 deletions
|
@ -43,6 +43,7 @@
|
||||||
#define DFL_DEBUG_LEVEL 0
|
#define DFL_DEBUG_LEVEL 0
|
||||||
#define DFL_CRT_FILE ""
|
#define DFL_CRT_FILE ""
|
||||||
#define DFL_KEY_FILE ""
|
#define DFL_KEY_FILE ""
|
||||||
|
#define DFL_FORCE_CIPHER 0
|
||||||
|
|
||||||
#define GET_REQUEST "GET %s HTTP/1.0\r\n\r\n"
|
#define GET_REQUEST "GET %s HTTP/1.0\r\n\r\n"
|
||||||
|
|
||||||
|
@ -57,6 +58,7 @@ struct options
|
||||||
char *request_page; /* page on server to request */
|
char *request_page; /* page on server to request */
|
||||||
char *crt_file; /* the file with the client certificate */
|
char *crt_file; /* the file with the client certificate */
|
||||||
char *key_file; /* the file with the client key */
|
char *key_file; /* the file with the client key */
|
||||||
|
int force_ciphersuite[2]; /* protocol/ciphersuite to use, or all */
|
||||||
} opt;
|
} opt;
|
||||||
|
|
||||||
void my_debug( void *ctx, int level, const char *str )
|
void my_debug( void *ctx, int level, const char *str )
|
||||||
|
@ -77,7 +79,8 @@ void my_debug( void *ctx, int level, const char *str )
|
||||||
" request_page=%%s default: \".\"\n" \
|
" request_page=%%s default: \".\"\n" \
|
||||||
" crt_file=%%s default: \"\" (pre-loaded)\n" \
|
" crt_file=%%s default: \"\" (pre-loaded)\n" \
|
||||||
" key_file=%%s default: \"\" (pre-loaded)\n" \
|
" key_file=%%s default: \"\" (pre-loaded)\n" \
|
||||||
"\n"
|
" force_ciphersuite=<name> default: all enabled\n"\
|
||||||
|
" acceptable ciphersuite names:\n"
|
||||||
|
|
||||||
int main( int argc, char *argv[] )
|
int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
|
@ -91,6 +94,7 @@ int main( int argc, char *argv[] )
|
||||||
rsa_context rsa;
|
rsa_context rsa;
|
||||||
int i, j, n;
|
int i, j, n;
|
||||||
char *p, *q;
|
char *p, *q;
|
||||||
|
const int *list;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure memory references are valid.
|
* Make sure memory references are valid.
|
||||||
|
@ -106,6 +110,14 @@ int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
usage:
|
usage:
|
||||||
printf( USAGE );
|
printf( USAGE );
|
||||||
|
|
||||||
|
list = ssl_list_ciphersuites();
|
||||||
|
while( *list )
|
||||||
|
{
|
||||||
|
printf(" %s\n", ssl_get_ciphersuite_name( *list ) );
|
||||||
|
list++;
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,6 +127,7 @@ int main( int argc, char *argv[] )
|
||||||
opt.request_page = DFL_REQUEST_PAGE;
|
opt.request_page = DFL_REQUEST_PAGE;
|
||||||
opt.crt_file = DFL_CRT_FILE;
|
opt.crt_file = DFL_CRT_FILE;
|
||||||
opt.key_file = DFL_KEY_FILE;
|
opt.key_file = DFL_KEY_FILE;
|
||||||
|
opt.force_ciphersuite[0]= DFL_FORCE_CIPHER;
|
||||||
|
|
||||||
for( i = 1; i < argc; i++ )
|
for( i = 1; i < argc; i++ )
|
||||||
{
|
{
|
||||||
|
@ -151,6 +164,17 @@ int main( int argc, char *argv[] )
|
||||||
opt.crt_file = q;
|
opt.crt_file = q;
|
||||||
else if( strcmp( p, "key_file" ) == 0 )
|
else if( strcmp( p, "key_file" ) == 0 )
|
||||||
opt.key_file = q;
|
opt.key_file = q;
|
||||||
|
else if( strcmp( p, "force_ciphersuite" ) == 0 )
|
||||||
|
{
|
||||||
|
opt.force_ciphersuite[0] = -1;
|
||||||
|
|
||||||
|
opt.force_ciphersuite[0] = ssl_get_ciphersuite_id( q );
|
||||||
|
|
||||||
|
if( opt.force_ciphersuite[0] <= 0 )
|
||||||
|
goto usage;
|
||||||
|
|
||||||
|
opt.force_ciphersuite[1] = 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
goto usage;
|
goto usage;
|
||||||
}
|
}
|
||||||
|
@ -253,7 +277,11 @@ int main( int argc, char *argv[] )
|
||||||
ssl_set_bio( &ssl, net_recv, &server_fd,
|
ssl_set_bio( &ssl, net_recv, &server_fd,
|
||||||
net_send, &server_fd );
|
net_send, &server_fd );
|
||||||
|
|
||||||
ssl_set_ciphersuites( &ssl, ssl_default_ciphersuites );
|
if( opt.force_ciphersuite[0] == DFL_FORCE_CIPHER )
|
||||||
|
ssl_set_ciphersuites( &ssl, ssl_default_ciphersuites );
|
||||||
|
else
|
||||||
|
ssl_set_ciphersuites( &ssl, opt.force_ciphersuite );
|
||||||
|
|
||||||
ssl_set_session( &ssl, 1, 600, &ssn );
|
ssl_set_session( &ssl, 1, 600, &ssn );
|
||||||
|
|
||||||
ssl_set_ca_chain( &ssl, &cacert, NULL, opt.server_name );
|
ssl_set_ca_chain( &ssl, &cacert, NULL, opt.server_name );
|
||||||
|
|
Loading…
Reference in a new issue