Better handling of ciphersuite version range and forced version in
ssl_client2
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index 50a7518..05dfdc7 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -435,13 +435,24 @@
const ssl_ciphersuite_t *ciphersuite_info;
ciphersuite_info = ssl_ciphersuite_from_id( opt.force_ciphersuite[0] );
- if( ciphersuite_info->min_minor_ver > opt.max_version ||
+ if( opt.max_version != -1 &&
+ ciphersuite_info->min_minor_ver > opt.max_version )
+ {
+ printf("forced ciphersuite not allowed with this protocol version\n");
+ ret = 2;
+ goto usage;
+ }
+ if( opt.min_version != -1 &&
ciphersuite_info->max_minor_ver < opt.min_version )
{
printf("forced ciphersuite not allowed with this protocol version\n");
ret = 2;
goto usage;
}
+ if( opt.max_version > ciphersuite_info->max_minor_ver )
+ opt.max_version = ciphersuite_info->max_minor_ver;
+ if( opt.min_version < ciphersuite_info->min_minor_ver )
+ opt.min_version = ciphersuite_info->min_minor_ver;
}
#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)