Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ce20ad7

Browse filesBrowse files
Shigeki OhtsuItalo A. Casas
authored andcommitted
deps: add -no_rand_screen to openssl s_client
In openssl s_client on Windows, RAND_screen() is invoked to initialize random state but it takes several seconds in each connection. This added -no_rand_screen to openssl s_client on Windows to skip RAND_screen() and gets a better performance in the unit test of test-tls-server-verify. Do not enable this except to use in the unit test. Fixes: #1461 PR-URL: #1836 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
1 parent 4caa012 commit ce20ad7
Copy full SHA for ce20ad7

File tree

Expand file treeCollapse file tree

2 files changed

+20
-2
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+20
-2
lines changed
Open diff view settings
Collapse file

‎deps/openssl/openssl/apps/app_rand.c‎

Copy file name to clipboardExpand all lines: deps/openssl/openssl/apps/app_rand.c
+10-1Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,16 @@ int app_RAND_load_file(const char *file, BIO *bio_e, int dont_warn)
124124
char buffer[200];
125125

126126
#ifdef OPENSSL_SYS_WINDOWS
127-
RAND_screen();
127+
/*
128+
* allocate 2 to dont_warn not to use RAND_screen() via
129+
* -no_rand_screen option in s_client
130+
*/
131+
if (dont_warn != 2) {
132+
BIO_printf(bio_e, "Loading 'screen' into random state -");
133+
BIO_flush(bio_e);
134+
RAND_screen();
135+
BIO_printf(bio_e, " done\n");
136+
}
128137
#endif
129138

130139
if (file == NULL)
Collapse file

‎deps/openssl/openssl/apps/s_client.c‎

Copy file name to clipboardExpand all lines: deps/openssl/openssl/apps/s_client.c
+10-1Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ static BIO *bio_c_msg = NULL;
236236
static int c_quiet = 0;
237237
static int c_ign_eof = 0;
238238
static int c_brief = 0;
239+
static int c_no_rand_screen = 0;
239240

240241
#ifndef OPENSSL_NO_PSK
241242
/* Default PSK identity and key */
@@ -451,6 +452,10 @@ static void sc_usage(void)
451452
" -keymatexport label - Export keying material using label\n");
452453
BIO_printf(bio_err,
453454
" -keymatexportlen len - Export len bytes of keying material (default 20)\n");
455+
#ifdef OPENSSL_SYS_WINDOWS
456+
BIO_printf(bio_err,
457+
" -no_rand_screen - Do not use RAND_screen() to initialize random state\n");
458+
#endif
454459
}
455460

456461
#ifndef OPENSSL_NO_TLSEXT
@@ -1143,6 +1148,10 @@ int MAIN(int argc, char **argv)
11431148
keymatexportlen = atoi(*(++argv));
11441149
if (keymatexportlen == 0)
11451150
goto bad;
1151+
#ifdef OPENSSL_SYS_WINDOWS
1152+
} else if (strcmp(*argv, "-no_rand_screen") == 0) {
1153+
c_no_rand_screen = 1;
1154+
#endif
11461155
} else {
11471156
BIO_printf(bio_err, "unknown option %s\n", *argv);
11481157
badop = 1;
@@ -1259,7 +1268,7 @@ int MAIN(int argc, char **argv)
12591268
if (!load_excert(&exc, bio_err))
12601269
goto end;
12611270

1262-
if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL
1271+
if (!app_RAND_load_file(NULL, bio_err, ++c_no_rand_screen) && inrand == NULL
12631272
&& !RAND_status()) {
12641273
BIO_printf(bio_err,
12651274
"warning, not much extra random data, consider using the -rand option\n");

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.