X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;f=ssl%2Fssltest.c;h=cf889c7e49615177f3271fa52907e22f82912d6f;hb=406d4af050cff0f52c5435504186eaf03ca69698;hp=036e2c43b3fa6beb96cb7c6c9c03348908d4f90b;hpb=e9add063b50e8a460d5636055156d2760c2fe29f;p=openssl.git diff --git a/ssl/ssltest.c b/ssl/ssltest.c index 036e2c43b3..cf889c7e49 100644 --- a/ssl/ssltest.c +++ b/ssl/ssltest.c @@ -563,8 +563,8 @@ static int verify_serverinfo() */ static int custom_ext_0_cli_first_cb(SSL *s, unsigned short ext_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { if (ext_type != CUSTOM_EXT_TYPE_0) custom_ext_error = 1; @@ -572,17 +572,16 @@ static int custom_ext_0_cli_first_cb(SSL *s, unsigned short ext_type, } static int custom_ext_0_cli_second_cb(SSL *s, unsigned short ext_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { - custom_ext_error = 1; /* Shouldn't be called */ - return 0; + return 1; } static int custom_ext_1_cli_first_cb(SSL *s, unsigned short ext_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { if (ext_type != CUSTOM_EXT_TYPE_1) custom_ext_error = 1; @@ -592,17 +591,16 @@ static int custom_ext_1_cli_first_cb(SSL *s, unsigned short ext_type, } static int custom_ext_1_cli_second_cb(SSL *s, unsigned short ext_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { - custom_ext_error = 1; /* Shouldn't be called */ - return 0; + return 1; } static int custom_ext_2_cli_first_cb(SSL *s, unsigned short ext_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { if (ext_type != CUSTOM_EXT_TYPE_2) custom_ext_error = 1; @@ -612,9 +610,9 @@ static int custom_ext_2_cli_first_cb(SSL *s, unsigned short ext_type, } static int custom_ext_2_cli_second_cb(SSL *s, unsigned short ext_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { if (ext_type != CUSTOM_EXT_TYPE_2) custom_ext_error = 1; @@ -624,8 +622,8 @@ static int custom_ext_2_cli_second_cb(SSL *s, unsigned short ext_type, } static int custom_ext_3_cli_first_cb(SSL *s, unsigned short ext_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { if (ext_type != CUSTOM_EXT_TYPE_3) custom_ext_error = 1; @@ -635,9 +633,9 @@ static int custom_ext_3_cli_first_cb(SSL *s, unsigned short ext_type, } static int custom_ext_3_cli_second_cb(SSL *s, unsigned short ext_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { if (ext_type != CUSTOM_EXT_TYPE_3) custom_ext_error = 1; @@ -648,20 +646,19 @@ static int custom_ext_3_cli_second_cb(SSL *s, unsigned short ext_type, return 1; } -//custom_ext_0_cli_first_cb returns -1 - the server won't receive a callback for this extension +/* custom_ext_0_cli_first_cb returns -1 - the server won't receive a callback for this extension */ static int custom_ext_0_srv_first_cb(SSL *s, unsigned short ext_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { - custom_ext_error = 1; - return 0; /* Shouldn't be called */ + return 1; } -//'generate' callbacks are always called, even if the 'receive' callback isn't called +/* 'generate' callbacks are always called, even if the 'receive' callback isn't called */ static int custom_ext_0_srv_second_cb(SSL *s, unsigned short ext_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { return -1; /* Don't send an extension */ } @@ -682,16 +679,16 @@ static int custom_ext_1_srv_first_cb(SSL *s, unsigned short ext_type, } static int custom_ext_1_srv_second_cb(SSL *s, unsigned short ext_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { return -1; /* Don't send an extension */ } static int custom_ext_2_srv_first_cb(SSL *s, unsigned short ext_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { if (ext_type != CUSTOM_EXT_TYPE_2) custom_ext_error = 1; @@ -704,8 +701,8 @@ static int custom_ext_2_srv_first_cb(SSL *s, unsigned short ext_type, } static int custom_ext_2_srv_second_cb(SSL *s, unsigned short ext_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { *out = NULL; *outlen = 0; @@ -713,9 +710,9 @@ static int custom_ext_2_srv_second_cb(SSL *s, unsigned short ext_type, } static int custom_ext_3_srv_first_cb(SSL *s, unsigned short ext_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { if (ext_type != CUSTOM_EXT_TYPE_3) custom_ext_error = 1; @@ -728,8 +725,8 @@ static int custom_ext_3_srv_first_cb(SSL *s, unsigned short ext_type, } static int custom_ext_3_srv_second_cb(SSL *s, unsigned short ext_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { *out = (const unsigned char*)custom_ext_srv_string; *outlen = strlen(custom_ext_srv_string); @@ -737,8 +734,8 @@ static int custom_ext_3_srv_second_cb(SSL *s, unsigned short ext_type, } static int supp_data_0_srv_first_cb(SSL *s, unsigned short supp_data_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { *out = (const unsigned char*)supp_data_0_string; *outlen = strlen(supp_data_0_string); @@ -748,9 +745,9 @@ static int supp_data_0_srv_first_cb(SSL *s, unsigned short supp_data_type, } static int supp_data_0_srv_second_cb(SSL *s, unsigned short supp_data_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { if (supp_data_type != CUSTOM_SUPP_DATA_TYPE_0) suppdata_error = 1; @@ -764,16 +761,16 @@ static int supp_data_0_srv_second_cb(SSL *s, unsigned short supp_data_type, } static int supp_data_1_srv_first_cb(SSL *s, unsigned short supp_data_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { return -1; } static int supp_data_1_srv_second_cb(SSL *s, unsigned short supp_data_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { suppdata_error = 1; return 1; @@ -789,9 +786,9 @@ static int supp_data_2_srv_second_cb(SSL *s, unsigned short supp_data_type, } static int supp_data_0_cli_first_cb(SSL *s, unsigned short supp_data_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { if (supp_data_type != CUSTOM_SUPP_DATA_TYPE_0) suppdata_error = 1; @@ -805,8 +802,8 @@ static int supp_data_0_cli_first_cb(SSL *s, unsigned short supp_data_type, } static int supp_data_0_cli_second_cb(SSL *s, unsigned short supp_data_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { *out = (const unsigned char*)supp_data_0_string; *outlen = strlen(supp_data_0_string); @@ -816,25 +813,25 @@ static int supp_data_0_cli_second_cb(SSL *s, unsigned short supp_data_type, } static int supp_data_1_cli_first_cb(SSL *s, unsigned short supp_data_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { suppdata_error = 1; return 1; } static int supp_data_1_cli_second_cb(SSL *s, unsigned short supp_data_type, - const unsigned char **out, - unsigned short *outlen, int *al, void *arg) + const unsigned char **out, + unsigned short *outlen, int *al, void *arg) { return -1; } static int supp_data_2_cli_first_cb(SSL *s, unsigned short supp_data_type, - const unsigned char *in, - unsigned short inlen, int *al, - void *arg) + const unsigned char *in, + unsigned short inlen, int *al, + void *arg) { suppdata_error = 1; return 1; @@ -1510,6 +1507,11 @@ bad: ERR_print_errors(bio_err); goto end; } + /* Since we will use low security ciphersuites and keys for + * testing set security level to zero. + */ + SSL_CTX_set_security_level(c_ctx, 0); + SSL_CTX_set_security_level(s_ctx, 0); if (cipher != NULL) { @@ -2299,7 +2301,8 @@ end: int doit(SSL *s_ssl, SSL *c_ssl, long count) { - MS_STATIC char cbuf[1024*8],sbuf[1024*8]; + char *cbuf=NULL,*sbuf=NULL; + long bufsiz; long cw_num=count,cr_num=count; long sw_num=count,sr_num=count; int ret=1; @@ -2312,9 +2315,15 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count) int done=0; int c_write,s_write; int do_server=0,do_client=0; + int max_frag = 5*1024; + + bufsiz = count>40*1024 ? 40*1024 : count; + + if ((cbuf = OPENSSL_malloc(bufsiz))==NULL) goto err; + if ((sbuf = OPENSSL_malloc(bufsiz))==NULL) goto err; - memset(cbuf,0,sizeof(cbuf)); - memset(sbuf,0,sizeof(sbuf)); + memset(cbuf,0,bufsiz); + memset(sbuf,0,bufsiz); c_to_s=BIO_new(BIO_s_mem()); s_to_c=BIO_new(BIO_s_mem()); @@ -2334,10 +2343,12 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count) SSL_set_connect_state(c_ssl); SSL_set_bio(c_ssl,s_to_c,c_to_s); + SSL_set_max_send_fragment(c_ssl,max_frag); BIO_set_ssl(c_bio,c_ssl,BIO_NOCLOSE); SSL_set_accept_state(s_ssl); SSL_set_bio(s_ssl,c_to_s,s_to_c); + SSL_set_max_send_fragment(s_ssl,max_frag); BIO_set_ssl(s_bio,s_ssl,BIO_NOCLOSE); c_r=0; s_r=1; @@ -2388,8 +2399,8 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count) { if (c_write) { - j = (cw_num > (long)sizeof(cbuf)) ? - (int)sizeof(cbuf) : (int)cw_num; + j = (cw_num > bufsiz) ? + (int)bufsiz : (int)cw_num; i=BIO_write(c_bio,cbuf,j); if (i < 0) { @@ -2422,11 +2433,13 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count) s_r=1; c_write=0; cw_num-=i; + if (max_frag>1029) + SSL_set_max_send_fragment(c_ssl,max_frag-=5); } } else { - i=BIO_read(c_bio,cbuf,sizeof(cbuf)); + i=BIO_read(c_bio,cbuf,bufsiz); if (i < 0) { c_r=0; @@ -2474,7 +2487,7 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count) { if (!s_write) { - i=BIO_read(s_bio,sbuf,sizeof(cbuf)); + i=BIO_read(s_bio,sbuf,bufsiz); if (i < 0) { s_r=0; @@ -2519,8 +2532,8 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count) } else { - j = (sw_num > (long)sizeof(sbuf)) ? - (int)sizeof(sbuf) : (int)sw_num; + j = (sw_num > bufsiz) ? + (int)bufsiz : (int)sw_num; i=BIO_write(s_bio,sbuf,j); if (i < 0) { @@ -2555,6 +2568,8 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count) c_r=1; if (sw_num <= 0) done|=S_DONE; + if (max_frag>1029) + SSL_set_max_send_fragment(s_ssl,max_frag-=5); } } } @@ -2610,6 +2625,10 @@ err: if (s_to_c != NULL) BIO_free(s_to_c); if (c_bio != NULL) BIO_free_all(c_bio); if (s_bio != NULL) BIO_free_all(s_bio); + + if (cbuf) OPENSSL_free(cbuf); + if (sbuf) OPENSSL_free(sbuf); + return(ret); }