diff options
Diffstat (limited to 'src/lib/libssl/ssl_both.c')
-rw-r--r-- | src/lib/libssl/ssl_both.c | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/src/lib/libssl/ssl_both.c b/src/lib/libssl/ssl_both.c index ad16d2175b..cfd32387d6 100644 --- a/src/lib/libssl/ssl_both.c +++ b/src/lib/libssl/ssl_both.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_both.c,v 1.41 2022/02/03 16:33:12 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_both.c,v 1.42 2022/02/05 14:54:10 jsing 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 | * |
@@ -168,33 +168,33 @@ ssl3_send_finished(SSL *s, int state_a, int state_b) | |||
168 | 168 | ||
169 | memset(&cbb, 0, sizeof(cbb)); | 169 | memset(&cbb, 0, sizeof(cbb)); |
170 | 170 | ||
171 | if (S3I(s)->hs.state == state_a) { | 171 | if (s->s3->hs.state == state_a) { |
172 | if (!tls12_derive_finished(s)) | 172 | if (!tls12_derive_finished(s)) |
173 | goto err; | 173 | goto err; |
174 | 174 | ||
175 | /* Copy finished so we can use it for renegotiation checks. */ | 175 | /* Copy finished so we can use it for renegotiation checks. */ |
176 | if (!s->server) { | 176 | if (!s->server) { |
177 | memcpy(S3I(s)->previous_client_finished, | 177 | memcpy(s->s3->previous_client_finished, |
178 | S3I(s)->hs.finished, S3I(s)->hs.finished_len); | 178 | s->s3->hs.finished, s->s3->hs.finished_len); |
179 | S3I(s)->previous_client_finished_len = | 179 | s->s3->previous_client_finished_len = |
180 | S3I(s)->hs.finished_len; | 180 | s->s3->hs.finished_len; |
181 | } else { | 181 | } else { |
182 | memcpy(S3I(s)->previous_server_finished, | 182 | memcpy(s->s3->previous_server_finished, |
183 | S3I(s)->hs.finished, S3I(s)->hs.finished_len); | 183 | s->s3->hs.finished, s->s3->hs.finished_len); |
184 | S3I(s)->previous_server_finished_len = | 184 | s->s3->previous_server_finished_len = |
185 | S3I(s)->hs.finished_len; | 185 | s->s3->hs.finished_len; |
186 | } | 186 | } |
187 | 187 | ||
188 | if (!ssl3_handshake_msg_start(s, &cbb, &finished, | 188 | if (!ssl3_handshake_msg_start(s, &cbb, &finished, |
189 | SSL3_MT_FINISHED)) | 189 | SSL3_MT_FINISHED)) |
190 | goto err; | 190 | goto err; |
191 | if (!CBB_add_bytes(&finished, S3I(s)->hs.finished, | 191 | if (!CBB_add_bytes(&finished, s->s3->hs.finished, |
192 | S3I(s)->hs.finished_len)) | 192 | s->s3->hs.finished_len)) |
193 | goto err; | 193 | goto err; |
194 | if (!ssl3_handshake_msg_finish(s, &cbb)) | 194 | if (!ssl3_handshake_msg_finish(s, &cbb)) |
195 | goto err; | 195 | goto err; |
196 | 196 | ||
197 | S3I(s)->hs.state = state_b; | 197 | s->s3->hs.state = state_b; |
198 | } | 198 | } |
199 | 199 | ||
200 | return (ssl3_handshake_write(s)); | 200 | return (ssl3_handshake_write(s)); |
@@ -216,12 +216,12 @@ ssl3_get_finished(SSL *s, int a, int b) | |||
216 | return ret; | 216 | return ret; |
217 | 217 | ||
218 | /* If this occurs, we have missed a message */ | 218 | /* If this occurs, we have missed a message */ |
219 | if (!S3I(s)->change_cipher_spec) { | 219 | if (!s->s3->change_cipher_spec) { |
220 | al = SSL_AD_UNEXPECTED_MESSAGE; | 220 | al = SSL_AD_UNEXPECTED_MESSAGE; |
221 | SSLerror(s, SSL_R_GOT_A_FIN_BEFORE_A_CCS); | 221 | SSLerror(s, SSL_R_GOT_A_FIN_BEFORE_A_CCS); |
222 | goto fatal_err; | 222 | goto fatal_err; |
223 | } | 223 | } |
224 | S3I(s)->change_cipher_spec = 0; | 224 | s->s3->change_cipher_spec = 0; |
225 | 225 | ||
226 | md_len = TLS1_FINISH_MAC_LENGTH; | 226 | md_len = TLS1_FINISH_MAC_LENGTH; |
227 | 227 | ||
@@ -233,14 +233,14 @@ ssl3_get_finished(SSL *s, int a, int b) | |||
233 | 233 | ||
234 | CBS_init(&cbs, s->internal->init_msg, s->internal->init_num); | 234 | CBS_init(&cbs, s->internal->init_msg, s->internal->init_num); |
235 | 235 | ||
236 | if (S3I(s)->hs.peer_finished_len != md_len || | 236 | if (s->s3->hs.peer_finished_len != md_len || |
237 | CBS_len(&cbs) != md_len) { | 237 | CBS_len(&cbs) != md_len) { |
238 | al = SSL_AD_DECODE_ERROR; | 238 | al = SSL_AD_DECODE_ERROR; |
239 | SSLerror(s, SSL_R_BAD_DIGEST_LENGTH); | 239 | SSLerror(s, SSL_R_BAD_DIGEST_LENGTH); |
240 | goto fatal_err; | 240 | goto fatal_err; |
241 | } | 241 | } |
242 | 242 | ||
243 | if (!CBS_mem_equal(&cbs, S3I(s)->hs.peer_finished, CBS_len(&cbs))) { | 243 | if (!CBS_mem_equal(&cbs, s->s3->hs.peer_finished, CBS_len(&cbs))) { |
244 | al = SSL_AD_DECRYPT_ERROR; | 244 | al = SSL_AD_DECRYPT_ERROR; |
245 | SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); | 245 | SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); |
246 | goto fatal_err; | 246 | goto fatal_err; |
@@ -249,13 +249,13 @@ ssl3_get_finished(SSL *s, int a, int b) | |||
249 | /* Copy finished so we can use it for renegotiation checks. */ | 249 | /* Copy finished so we can use it for renegotiation checks. */ |
250 | OPENSSL_assert(md_len <= EVP_MAX_MD_SIZE); | 250 | OPENSSL_assert(md_len <= EVP_MAX_MD_SIZE); |
251 | if (s->server) { | 251 | if (s->server) { |
252 | memcpy(S3I(s)->previous_client_finished, | 252 | memcpy(s->s3->previous_client_finished, |
253 | S3I(s)->hs.peer_finished, md_len); | 253 | s->s3->hs.peer_finished, md_len); |
254 | S3I(s)->previous_client_finished_len = md_len; | 254 | s->s3->previous_client_finished_len = md_len; |
255 | } else { | 255 | } else { |
256 | memcpy(S3I(s)->previous_server_finished, | 256 | memcpy(s->s3->previous_server_finished, |
257 | S3I(s)->hs.peer_finished, md_len); | 257 | s->s3->hs.peer_finished, md_len); |
258 | S3I(s)->previous_server_finished_len = md_len; | 258 | s->s3->previous_server_finished_len = md_len; |
259 | } | 259 | } |
260 | 260 | ||
261 | return (1); | 261 | return (1); |
@@ -272,7 +272,7 @@ ssl3_send_change_cipher_spec(SSL *s, int a, int b) | |||
272 | 272 | ||
273 | memset(&cbb, 0, sizeof(cbb)); | 273 | memset(&cbb, 0, sizeof(cbb)); |
274 | 274 | ||
275 | if (S3I(s)->hs.state == a) { | 275 | if (s->s3->hs.state == a) { |
276 | if (!CBB_init_fixed(&cbb, s->internal->init_buf->data, | 276 | if (!CBB_init_fixed(&cbb, s->internal->init_buf->data, |
277 | s->internal->init_buf->length)) | 277 | s->internal->init_buf->length)) |
278 | goto err; | 278 | goto err; |
@@ -295,7 +295,7 @@ ssl3_send_change_cipher_spec(SSL *s, int a, int b) | |||
295 | dtls1_buffer_message(s, 1); | 295 | dtls1_buffer_message(s, 1); |
296 | } | 296 | } |
297 | 297 | ||
298 | S3I(s)->hs.state = b; | 298 | s->s3->hs.state = b; |
299 | } | 299 | } |
300 | 300 | ||
301 | /* SSL3_ST_CW_CHANGE_B */ | 301 | /* SSL3_ST_CW_CHANGE_B */ |
@@ -408,22 +408,22 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max) | |||
408 | if (SSL_is_dtls(s)) | 408 | if (SSL_is_dtls(s)) |
409 | return dtls1_get_message(s, st1, stn, mt, max); | 409 | return dtls1_get_message(s, st1, stn, mt, max); |
410 | 410 | ||
411 | if (S3I(s)->hs.tls12.reuse_message) { | 411 | if (s->s3->hs.tls12.reuse_message) { |
412 | S3I(s)->hs.tls12.reuse_message = 0; | 412 | s->s3->hs.tls12.reuse_message = 0; |
413 | if ((mt >= 0) && (S3I(s)->hs.tls12.message_type != mt)) { | 413 | if ((mt >= 0) && (s->s3->hs.tls12.message_type != mt)) { |
414 | al = SSL_AD_UNEXPECTED_MESSAGE; | 414 | al = SSL_AD_UNEXPECTED_MESSAGE; |
415 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); | 415 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); |
416 | goto fatal_err; | 416 | goto fatal_err; |
417 | } | 417 | } |
418 | s->internal->init_msg = s->internal->init_buf->data + | 418 | s->internal->init_msg = s->internal->init_buf->data + |
419 | SSL3_HM_HEADER_LENGTH; | 419 | SSL3_HM_HEADER_LENGTH; |
420 | s->internal->init_num = (int)S3I(s)->hs.tls12.message_size; | 420 | s->internal->init_num = (int)s->s3->hs.tls12.message_size; |
421 | return 1; | 421 | return 1; |
422 | } | 422 | } |
423 | 423 | ||
424 | p = (unsigned char *)s->internal->init_buf->data; | 424 | p = (unsigned char *)s->internal->init_buf->data; |
425 | 425 | ||
426 | if (S3I(s)->hs.state == st1) { | 426 | if (s->s3->hs.state == st1) { |
427 | int skip_message; | 427 | int skip_message; |
428 | 428 | ||
429 | do { | 429 | do { |
@@ -469,7 +469,7 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max) | |||
469 | SSLerror(s, ERR_R_BUF_LIB); | 469 | SSLerror(s, ERR_R_BUF_LIB); |
470 | goto err; | 470 | goto err; |
471 | } | 471 | } |
472 | S3I(s)->hs.tls12.message_type = u8; | 472 | s->s3->hs.tls12.message_type = u8; |
473 | 473 | ||
474 | if (l > (unsigned long)max) { | 474 | if (l > (unsigned long)max) { |
475 | al = SSL_AD_ILLEGAL_PARAMETER; | 475 | al = SSL_AD_ILLEGAL_PARAMETER; |
@@ -481,8 +481,8 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max) | |||
481 | SSLerror(s, ERR_R_BUF_LIB); | 481 | SSLerror(s, ERR_R_BUF_LIB); |
482 | goto err; | 482 | goto err; |
483 | } | 483 | } |
484 | S3I(s)->hs.tls12.message_size = l; | 484 | s->s3->hs.tls12.message_size = l; |
485 | S3I(s)->hs.state = stn; | 485 | s->s3->hs.state = stn; |
486 | 486 | ||
487 | s->internal->init_msg = s->internal->init_buf->data + | 487 | s->internal->init_msg = s->internal->init_buf->data + |
488 | SSL3_HM_HEADER_LENGTH; | 488 | SSL3_HM_HEADER_LENGTH; |
@@ -491,7 +491,7 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max) | |||
491 | 491 | ||
492 | /* next state (stn) */ | 492 | /* next state (stn) */ |
493 | p = s->internal->init_msg; | 493 | p = s->internal->init_msg; |
494 | n = S3I(s)->hs.tls12.message_size - s->internal->init_num; | 494 | n = s->s3->hs.tls12.message_size - s->internal->init_num; |
495 | while (n > 0) { | 495 | while (n > 0) { |
496 | i = s->method->ssl_read_bytes(s, SSL3_RT_HANDSHAKE, | 496 | i = s->method->ssl_read_bytes(s, SSL3_RT_HANDSHAKE, |
497 | &p[s->internal->init_num], n, 0); | 497 | &p[s->internal->init_num], n, 0); |
@@ -644,16 +644,16 @@ ssl3_setup_read_buffer(SSL *s) | |||
644 | 644 | ||
645 | align = (-SSL3_RT_HEADER_LENGTH) & (SSL3_ALIGN_PAYLOAD - 1); | 645 | align = (-SSL3_RT_HEADER_LENGTH) & (SSL3_ALIGN_PAYLOAD - 1); |
646 | 646 | ||
647 | if (S3I(s)->rbuf.buf == NULL) { | 647 | if (s->s3->rbuf.buf == NULL) { |
648 | len = SSL3_RT_MAX_PLAIN_LENGTH + | 648 | len = SSL3_RT_MAX_PLAIN_LENGTH + |
649 | SSL3_RT_MAX_ENCRYPTED_OVERHEAD + headerlen + align; | 649 | SSL3_RT_MAX_ENCRYPTED_OVERHEAD + headerlen + align; |
650 | if ((p = calloc(1, len)) == NULL) | 650 | if ((p = calloc(1, len)) == NULL) |
651 | goto err; | 651 | goto err; |
652 | S3I(s)->rbuf.buf = p; | 652 | s->s3->rbuf.buf = p; |
653 | S3I(s)->rbuf.len = len; | 653 | s->s3->rbuf.len = len; |
654 | } | 654 | } |
655 | 655 | ||
656 | s->internal->packet = S3I(s)->rbuf.buf; | 656 | s->internal->packet = s->s3->rbuf.buf; |
657 | return 1; | 657 | return 1; |
658 | 658 | ||
659 | err: | 659 | err: |
@@ -674,7 +674,7 @@ ssl3_setup_write_buffer(SSL *s) | |||
674 | 674 | ||
675 | align = (-SSL3_RT_HEADER_LENGTH) & (SSL3_ALIGN_PAYLOAD - 1); | 675 | align = (-SSL3_RT_HEADER_LENGTH) & (SSL3_ALIGN_PAYLOAD - 1); |
676 | 676 | ||
677 | if (S3I(s)->wbuf.buf == NULL) { | 677 | if (s->s3->wbuf.buf == NULL) { |
678 | len = s->max_send_fragment + | 678 | len = s->max_send_fragment + |
679 | SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD + headerlen + align; | 679 | SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD + headerlen + align; |
680 | if (!(s->internal->options & SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS)) | 680 | if (!(s->internal->options & SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS)) |
@@ -683,8 +683,8 @@ ssl3_setup_write_buffer(SSL *s) | |||
683 | 683 | ||
684 | if ((p = calloc(1, len)) == NULL) | 684 | if ((p = calloc(1, len)) == NULL) |
685 | goto err; | 685 | goto err; |
686 | S3I(s)->wbuf.buf = p; | 686 | s->s3->wbuf.buf = p; |
687 | S3I(s)->wbuf.len = len; | 687 | s->s3->wbuf.len = len; |
688 | } | 688 | } |
689 | 689 | ||
690 | return 1; | 690 | return 1; |
@@ -715,11 +715,11 @@ ssl3_release_buffer(SSL3_BUFFER_INTERNAL *b) | |||
715 | void | 715 | void |
716 | ssl3_release_read_buffer(SSL *s) | 716 | ssl3_release_read_buffer(SSL *s) |
717 | { | 717 | { |
718 | ssl3_release_buffer(&S3I(s)->rbuf); | 718 | ssl3_release_buffer(&s->s3->rbuf); |
719 | } | 719 | } |
720 | 720 | ||
721 | void | 721 | void |
722 | ssl3_release_write_buffer(SSL *s) | 722 | ssl3_release_write_buffer(SSL *s) |
723 | { | 723 | { |
724 | ssl3_release_buffer(&S3I(s)->wbuf); | 724 | ssl3_release_buffer(&s->s3->wbuf); |
725 | } | 725 | } |