summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_both.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/s3_both.c')
-rw-r--r--src/lib/libssl/s3_both.c86
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 */
134int 134int
@@ -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
536f_err: 536f_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
650err: 650err:
@@ -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
680err: 680err: