summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_both.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_both.c')
-rw-r--r--src/lib/libssl/ssl_both.c86
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)
715void 715void
716ssl3_release_read_buffer(SSL *s) 716ssl3_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
721void 721void
722ssl3_release_write_buffer(SSL *s) 722ssl3_release_write_buffer(SSL *s)
723{ 723{
724 ssl3_release_buffer(&S3I(s)->wbuf); 724 ssl3_release_buffer(&s->s3->wbuf);
725} 725}