diff options
| author | miod <> | 2014-04-13 15:25:35 +0000 |
|---|---|---|
| committer | miod <> | 2014-04-13 15:25:35 +0000 |
| commit | d2b3c9742a7df4ab87384039c99682d1944f66d7 (patch) | |
| tree | 74f4ff344980894c7c9ceeab9b81176ac7572566 /src/lib/libssl/s23_clnt.c | |
| parent | dbf195d7fd4efbe4ee578f1dc5c72e7f3deadf18 (diff) | |
| download | openbsd-d2b3c9742a7df4ab87384039c99682d1944f66d7.tar.gz openbsd-d2b3c9742a7df4ab87384039c99682d1944f66d7.tar.bz2 openbsd-d2b3c9742a7df4ab87384039c99682d1944f66d7.zip | |
Merge conflicts; remove MacOS, Netware, OS/2, VMS and Windows build machinery.
Diffstat (limited to 'src/lib/libssl/s23_clnt.c')
| -rw-r--r-- | src/lib/libssl/s23_clnt.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/lib/libssl/s23_clnt.c b/src/lib/libssl/s23_clnt.c index 47673e740a..2b93c639dd 100644 --- a/src/lib/libssl/s23_clnt.c +++ b/src/lib/libssl/s23_clnt.c | |||
| @@ -269,12 +269,35 @@ static int ssl23_no_ssl2_ciphers(SSL *s) | |||
| 269 | return 1; | 269 | return 1; |
| 270 | } | 270 | } |
| 271 | 271 | ||
| 272 | /* Fill a ClientRandom or ServerRandom field of length len. Returns <= 0 | ||
| 273 | * on failure, 1 on success. */ | ||
| 274 | int ssl_fill_hello_random(SSL *s, int server, unsigned char *result, int len) | ||
| 275 | { | ||
| 276 | int send_time = 0; | ||
| 277 | |||
| 278 | if (len < 4) | ||
| 279 | return 0; | ||
| 280 | if (server) | ||
| 281 | send_time = (s->mode & SSL_MODE_SEND_SERVERHELLO_TIME) != 0; | ||
| 282 | else | ||
| 283 | send_time = (s->mode & SSL_MODE_SEND_CLIENTHELLO_TIME) != 0; | ||
| 284 | if (send_time) | ||
| 285 | { | ||
| 286 | unsigned long Time = (unsigned long)time(NULL); | ||
| 287 | unsigned char *p = result; | ||
| 288 | l2n(Time, p); | ||
| 289 | return RAND_pseudo_bytes(p, len-4); | ||
| 290 | } | ||
| 291 | else | ||
| 292 | return RAND_pseudo_bytes(result, len); | ||
| 293 | } | ||
| 294 | |||
| 272 | static int ssl23_client_hello(SSL *s) | 295 | static int ssl23_client_hello(SSL *s) |
| 273 | { | 296 | { |
| 274 | unsigned char *buf; | 297 | unsigned char *buf; |
| 275 | unsigned char *p,*d; | 298 | unsigned char *p,*d; |
| 276 | int i,ch_len; | 299 | int i,ch_len; |
| 277 | unsigned long Time,l; | 300 | unsigned long l; |
| 278 | int ssl2_compat; | 301 | int ssl2_compat; |
| 279 | int version = 0, version_major, version_minor; | 302 | int version = 0, version_major, version_minor; |
| 280 | #ifndef OPENSSL_NO_COMP | 303 | #ifndef OPENSSL_NO_COMP |
| @@ -355,9 +378,7 @@ static int ssl23_client_hello(SSL *s) | |||
| 355 | #endif | 378 | #endif |
| 356 | 379 | ||
| 357 | p=s->s3->client_random; | 380 | p=s->s3->client_random; |
| 358 | Time=(unsigned long)time(NULL); /* Time */ | 381 | if (ssl_fill_hello_random(s, 0, p, SSL3_RANDOM_SIZE) <= 0) |
| 359 | l2n(Time,p); | ||
| 360 | if (RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0) | ||
| 361 | return -1; | 382 | return -1; |
| 362 | 383 | ||
| 363 | if (version == TLS1_2_VERSION) | 384 | if (version == TLS1_2_VERSION) |
