diff options
Diffstat (limited to 'src/lib/libssl/s3_both.c')
-rw-r--r-- | src/lib/libssl/s3_both.c | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/src/lib/libssl/s3_both.c b/src/lib/libssl/s3_both.c index 4dddcd232a..12559ab710 100644 --- a/src/lib/libssl/s3_both.c +++ b/src/lib/libssl/s3_both.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s3_both.c,v 1.52 2017/01/23 04:55:26 beck Exp $ */ | 1 | /* $OpenBSD: s3_both.c,v 1.53 2017/01/23 06:45:30 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -128,7 +128,7 @@ | |||
128 | #include "bytestring.h" | 128 | #include "bytestring.h" |
129 | 129 | ||
130 | /* | 130 | /* |
131 | * Send s->init_buf in records of type 'type' (SSL3_RT_HANDSHAKE or | 131 | * Send s->internal->init_buf in records of type 'type' (SSL3_RT_HANDSHAKE or |
132 | * SSL3_RT_CHANGE_CIPHER_SPEC). | 132 | * SSL3_RT_CHANGE_CIPHER_SPEC). |
133 | */ | 133 | */ |
134 | int | 134 | int |
@@ -136,8 +136,8 @@ ssl3_do_write(SSL *s, int type) | |||
136 | { | 136 | { |
137 | int ret; | 137 | int ret; |
138 | 138 | ||
139 | ret = ssl3_write_bytes(s, type, &s->init_buf->data[s->init_off], | 139 | ret = ssl3_write_bytes(s, type, &s->internal->init_buf->data[s->internal->init_off], |
140 | s->init_num); | 140 | s->internal->init_num); |
141 | if (ret < 0) | 141 | if (ret < 0) |
142 | return (-1); | 142 | return (-1); |
143 | 143 | ||
@@ -147,18 +147,18 @@ ssl3_do_write(SSL *s, int type) | |||
147 | * we'll ignore the result anyway. | 147 | * we'll ignore the result anyway. |
148 | */ | 148 | */ |
149 | tls1_finish_mac(s, | 149 | tls1_finish_mac(s, |
150 | (unsigned char *)&s->init_buf->data[s->init_off], ret); | 150 | (unsigned char *)&s->internal->init_buf->data[s->internal->init_off], ret); |
151 | 151 | ||
152 | if (ret == s->init_num) { | 152 | if (ret == s->internal->init_num) { |
153 | if (s->internal->msg_callback) | 153 | if (s->internal->msg_callback) |
154 | s->internal->msg_callback(1, s->version, type, s->init_buf->data, | 154 | s->internal->msg_callback(1, s->version, type, s->internal->init_buf->data, |
155 | (size_t)(s->init_off + s->init_num), s, | 155 | (size_t)(s->internal->init_off + s->internal->init_num), s, |
156 | s->internal->msg_callback_arg); | 156 | s->internal->msg_callback_arg); |
157 | return (1); | 157 | return (1); |
158 | } | 158 | } |
159 | 159 | ||
160 | s->init_off += ret; | 160 | s->internal->init_off += ret; |
161 | s->init_num -= ret; | 161 | s->internal->init_num -= ret; |
162 | 162 | ||
163 | return (0); | 163 | return (0); |
164 | } | 164 | } |
@@ -179,7 +179,7 @@ ssl3_send_finished(SSL *s, int a, int b, const char *sender, int slen) | |||
179 | S3I(s)->tmp.finish_md_len = md_len; | 179 | S3I(s)->tmp.finish_md_len = md_len; |
180 | 180 | ||
181 | /* Copy finished so we can use it for renegotiation checks. */ | 181 | /* Copy finished so we can use it for renegotiation checks. */ |
182 | if (s->type == SSL_ST_CONNECT) { | 182 | if (s->internal->type == SSL_ST_CONNECT) { |
183 | memcpy(S3I(s)->previous_client_finished, | 183 | memcpy(S3I(s)->previous_client_finished, |
184 | S3I(s)->tmp.finish_md, md_len); | 184 | S3I(s)->tmp.finish_md, md_len); |
185 | S3I(s)->previous_client_finished_len = md_len; | 185 | S3I(s)->previous_client_finished_len = md_len; |
@@ -257,7 +257,7 @@ ssl3_get_finished(SSL *s, int a, int b) | |||
257 | goto f_err; | 257 | goto f_err; |
258 | } | 258 | } |
259 | 259 | ||
260 | CBS_init(&cbs, s->init_msg, n); | 260 | CBS_init(&cbs, s->internal->init_msg, n); |
261 | 261 | ||
262 | if (S3I(s)->tmp.peer_finish_md_len != md_len || | 262 | if (S3I(s)->tmp.peer_finish_md_len != md_len || |
263 | CBS_len(&cbs) != md_len) { | 263 | CBS_len(&cbs) != md_len) { |
@@ -274,7 +274,7 @@ ssl3_get_finished(SSL *s, int a, int b) | |||
274 | 274 | ||
275 | /* Copy finished so we can use it for renegotiation checks. */ | 275 | /* Copy finished so we can use it for renegotiation checks. */ |
276 | OPENSSL_assert(md_len <= EVP_MAX_MD_SIZE); | 276 | OPENSSL_assert(md_len <= EVP_MAX_MD_SIZE); |
277 | if (s->type == SSL_ST_ACCEPT) { | 277 | if (s->internal->type == SSL_ST_ACCEPT) { |
278 | memcpy(S3I(s)->previous_client_finished, | 278 | memcpy(S3I(s)->previous_client_finished, |
279 | S3I(s)->tmp.peer_finish_md, md_len); | 279 | S3I(s)->tmp.peer_finish_md, md_len); |
280 | S3I(s)->previous_client_finished_len = md_len; | 280 | S3I(s)->previous_client_finished_len = md_len; |
@@ -303,10 +303,10 @@ ssl3_send_change_cipher_spec(SSL *s, int a, int b) | |||
303 | unsigned char *p; | 303 | unsigned char *p; |
304 | 304 | ||
305 | if (s->state == a) { | 305 | if (s->state == a) { |
306 | p = (unsigned char *)s->init_buf->data; | 306 | p = (unsigned char *)s->internal->init_buf->data; |
307 | *p = SSL3_MT_CCS; | 307 | *p = SSL3_MT_CCS; |
308 | s->init_num = 1; | 308 | s->internal->init_num = 1; |
309 | s->init_off = 0; | 309 | s->internal->init_off = 0; |
310 | 310 | ||
311 | s->state = b; | 311 | s->state = b; |
312 | } | 312 | } |
@@ -425,28 +425,28 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
425 | goto f_err; | 425 | goto f_err; |
426 | } | 426 | } |
427 | *ok = 1; | 427 | *ok = 1; |
428 | s->init_msg = s->init_buf->data + 4; | 428 | s->internal->init_msg = s->internal->init_buf->data + 4; |
429 | s->init_num = (int)S3I(s)->tmp.message_size; | 429 | s->internal->init_num = (int)S3I(s)->tmp.message_size; |
430 | return s->init_num; | 430 | return s->internal->init_num; |
431 | } | 431 | } |
432 | 432 | ||
433 | p = (unsigned char *)s->init_buf->data; | 433 | p = (unsigned char *)s->internal->init_buf->data; |
434 | 434 | ||
435 | /* s->init_num < 4 */ | 435 | /* s->internal->init_num < 4 */ |
436 | if (s->state == st1) { | 436 | if (s->state == st1) { |
437 | int skip_message; | 437 | int skip_message; |
438 | 438 | ||
439 | do { | 439 | do { |
440 | while (s->init_num < 4) { | 440 | while (s->internal->init_num < 4) { |
441 | i = s->method->ssl_read_bytes(s, | 441 | i = s->method->ssl_read_bytes(s, |
442 | SSL3_RT_HANDSHAKE, &p[s->init_num], | 442 | SSL3_RT_HANDSHAKE, &p[s->internal->init_num], |
443 | 4 - s->init_num, 0); | 443 | 4 - s->internal->init_num, 0); |
444 | if (i <= 0) { | 444 | if (i <= 0) { |
445 | s->rwstate = SSL_READING; | 445 | s->internal->rwstate = SSL_READING; |
446 | *ok = 0; | 446 | *ok = 0; |
447 | return i; | 447 | return i; |
448 | } | 448 | } |
449 | s->init_num += i; | 449 | s->internal->init_num += i; |
450 | } | 450 | } |
451 | 451 | ||
452 | skip_message = 0; | 452 | skip_message = 0; |
@@ -458,7 +458,7 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
458 | * correct. Does not count for 'Finished' MAC. | 458 | * correct. Does not count for 'Finished' MAC. |
459 | */ | 459 | */ |
460 | if (p[1] == 0 && p[2] == 0 &&p[3] == 0) { | 460 | if (p[1] == 0 && p[2] == 0 &&p[3] == 0) { |
461 | s->init_num = 0; | 461 | s->internal->init_num = 0; |
462 | skip_message = 1; | 462 | skip_message = 1; |
463 | 463 | ||
464 | if (s->internal->msg_callback) | 464 | if (s->internal->msg_callback) |
@@ -469,7 +469,7 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
469 | } | 469 | } |
470 | } while (skip_message); | 470 | } while (skip_message); |
471 | 471 | ||
472 | /* s->init_num == 4 */ | 472 | /* s->internal->init_num == 4 */ |
473 | 473 | ||
474 | if ((mt >= 0) && (*p != mt)) { | 474 | if ((mt >= 0) && (*p != mt)) { |
475 | al = SSL_AD_UNEXPECTED_MESSAGE; | 475 | al = SSL_AD_UNEXPECTED_MESSAGE; |
@@ -492,46 +492,46 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
492 | SSL_R_EXCESSIVE_MESSAGE_SIZE); | 492 | SSL_R_EXCESSIVE_MESSAGE_SIZE); |
493 | goto f_err; | 493 | goto f_err; |
494 | } | 494 | } |
495 | if (l && !BUF_MEM_grow_clean(s->init_buf, l + 4)) { | 495 | if (l && !BUF_MEM_grow_clean(s->internal->init_buf, l + 4)) { |
496 | SSLerr(SSL_F_SSL3_GET_MESSAGE, ERR_R_BUF_LIB); | 496 | SSLerr(SSL_F_SSL3_GET_MESSAGE, ERR_R_BUF_LIB); |
497 | goto err; | 497 | goto err; |
498 | } | 498 | } |
499 | S3I(s)->tmp.message_size = l; | 499 | S3I(s)->tmp.message_size = l; |
500 | s->state = stn; | 500 | s->state = stn; |
501 | 501 | ||
502 | s->init_msg = s->init_buf->data + 4; | 502 | s->internal->init_msg = s->internal->init_buf->data + 4; |
503 | s->init_num = 0; | 503 | s->internal->init_num = 0; |
504 | } | 504 | } |
505 | 505 | ||
506 | /* next state (stn) */ | 506 | /* next state (stn) */ |
507 | p = s->init_msg; | 507 | p = s->internal->init_msg; |
508 | n = S3I(s)->tmp.message_size - s->init_num; | 508 | n = S3I(s)->tmp.message_size - s->internal->init_num; |
509 | while (n > 0) { | 509 | while (n > 0) { |
510 | i = s->method->ssl_read_bytes(s, SSL3_RT_HANDSHAKE, | 510 | i = s->method->ssl_read_bytes(s, SSL3_RT_HANDSHAKE, |
511 | &p[s->init_num], n, 0); | 511 | &p[s->internal->init_num], n, 0); |
512 | if (i <= 0) { | 512 | if (i <= 0) { |
513 | s->rwstate = SSL_READING; | 513 | s->internal->rwstate = SSL_READING; |
514 | *ok = 0; | 514 | *ok = 0; |
515 | return i; | 515 | return i; |
516 | } | 516 | } |
517 | s->init_num += i; | 517 | s->internal->init_num += i; |
518 | n -= i; | 518 | n -= i; |
519 | } | 519 | } |
520 | 520 | ||
521 | /* If receiving Finished, record MAC of prior handshake messages for | 521 | /* If receiving Finished, record MAC of prior handshake messages for |
522 | * Finished verification. */ | 522 | * Finished verification. */ |
523 | if (*s->init_buf->data == SSL3_MT_FINISHED) | 523 | if (*s->internal->init_buf->data == SSL3_MT_FINISHED) |
524 | ssl3_take_mac(s); | 524 | ssl3_take_mac(s); |
525 | 525 | ||
526 | /* Feed this message into MAC computation. */ | 526 | /* Feed this message into MAC computation. */ |
527 | tls1_finish_mac(s, (unsigned char *)s->init_buf->data, s->init_num + 4); | 527 | tls1_finish_mac(s, (unsigned char *)s->internal->init_buf->data, s->internal->init_num + 4); |
528 | if (s->internal->msg_callback) | 528 | if (s->internal->msg_callback) |
529 | s->internal->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, | 529 | s->internal->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, |
530 | s->init_buf->data, (size_t)s->init_num + 4, s, | 530 | s->internal->init_buf->data, (size_t)s->internal->init_num + 4, s, |
531 | s->internal->msg_callback_arg); | 531 | s->internal->msg_callback_arg); |
532 | 532 | ||
533 | *ok = 1; | 533 | *ok = 1; |
534 | return (s->init_num); | 534 | return (s->internal->init_num); |
535 | 535 | ||
536 | f_err: | 536 | f_err: |
537 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 537 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
@@ -636,7 +636,7 @@ ssl3_setup_init_buffer(SSL *s) | |||
636 | { | 636 | { |
637 | BUF_MEM *buf = NULL; | 637 | BUF_MEM *buf = NULL; |
638 | 638 | ||
639 | if (s->init_buf != NULL) | 639 | if (s->internal->init_buf != NULL) |
640 | return (1); | 640 | return (1); |
641 | 641 | ||
642 | if ((buf = BUF_MEM_new()) == NULL) | 642 | if ((buf = BUF_MEM_new()) == NULL) |
@@ -644,7 +644,7 @@ ssl3_setup_init_buffer(SSL *s) | |||
644 | if (!BUF_MEM_grow(buf, SSL3_RT_MAX_PLAIN_LENGTH)) | 644 | if (!BUF_MEM_grow(buf, SSL3_RT_MAX_PLAIN_LENGTH)) |
645 | goto err; | 645 | goto err; |
646 | 646 | ||
647 | s->init_buf = buf; | 647 | s->internal->init_buf = buf; |
648 | return (1); | 648 | return (1); |
649 | 649 | ||
650 | err: | 650 | err: |
@@ -674,7 +674,7 @@ ssl3_setup_read_buffer(SSL *s) | |||
674 | s->s3->rbuf.len = len; | 674 | s->s3->rbuf.len = len; |
675 | } | 675 | } |
676 | 676 | ||
677 | s->packet = &(s->s3->rbuf.buf[0]); | 677 | s->internal->packet = &(s->s3->rbuf.buf[0]); |
678 | return 1; | 678 | return 1; |
679 | 679 | ||
680 | err: | 680 | err: |