diff options
| author | beck <> | 2017-01-23 06:45:30 +0000 |
|---|---|---|
| committer | beck <> | 2017-01-23 06:45:30 +0000 |
| commit | 944291c95efe2e7311da10ff3d828328ff5a0f4a (patch) | |
| tree | dfb700c2a3d1498e8069f1fab4c6691ef0f3fef1 /src/lib/libssl/s3_both.c | |
| parent | fb1d399adfce175921f653bac1d5cdc11c7d0532 (diff) | |
| download | openbsd-944291c95efe2e7311da10ff3d828328ff5a0f4a.tar.gz openbsd-944291c95efe2e7311da10ff3d828328ff5a0f4a.tar.bz2 openbsd-944291c95efe2e7311da10ff3d828328ff5a0f4a.zip | |
Move a large part of ssl_st into internal, so we can see what squeals.
ok jsing@
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: |
