summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_both.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/libssl/s3_both.c64
1 files changed, 32 insertions, 32 deletions
diff --git a/src/lib/libssl/s3_both.c b/src/lib/libssl/s3_both.c
index 51429d907a..7381286326 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.50 2016/12/30 15:12:45 jsing Exp $ */ 1/* $OpenBSD: s3_both.c,v 1.51 2017/01/22 09:02:07 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 *
@@ -174,23 +174,23 @@ ssl3_send_finished(SSL *s, int a, int b, const char *sender, int slen)
174 OPENSSL_assert(md_len <= EVP_MAX_MD_SIZE); 174 OPENSSL_assert(md_len <= EVP_MAX_MD_SIZE);
175 175
176 if (s->method->ssl3_enc->final_finish_mac(s, sender, slen, 176 if (s->method->ssl3_enc->final_finish_mac(s, sender, slen,
177 s->s3->tmp.finish_md) != md_len) 177 S3I(s)->tmp.finish_md) != md_len)
178 return (0); 178 return (0);
179 s->s3->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->type == SSL_ST_CONNECT) {
183 memcpy(s->s3->previous_client_finished, 183 memcpy(S3I(s)->previous_client_finished,
184 s->s3->tmp.finish_md, md_len); 184 S3I(s)->tmp.finish_md, md_len);
185 s->s3->previous_client_finished_len = md_len; 185 S3I(s)->previous_client_finished_len = md_len;
186 } else { 186 } else {
187 memcpy(s->s3->previous_server_finished, 187 memcpy(S3I(s)->previous_server_finished,
188 s->s3->tmp.finish_md, md_len); 188 S3I(s)->tmp.finish_md, md_len);
189 s->s3->previous_server_finished_len = md_len; 189 S3I(s)->previous_server_finished_len = md_len;
190 } 190 }
191 191
192 p = ssl3_handshake_msg_start(s, SSL3_MT_FINISHED); 192 p = ssl3_handshake_msg_start(s, SSL3_MT_FINISHED);
193 memcpy(p, s->s3->tmp.finish_md, md_len); 193 memcpy(p, S3I(s)->tmp.finish_md, md_len);
194 ssl3_handshake_msg_finish(s, md_len); 194 ssl3_handshake_msg_finish(s, md_len);
195 195
196 s->state = b; 196 s->state = b;
@@ -213,7 +213,7 @@ ssl3_take_mac(SSL *s)
213 * If no new cipher setup return immediately: other functions will 213 * If no new cipher setup return immediately: other functions will
214 * set the appropriate error. 214 * set the appropriate error.
215 */ 215 */
216 if (s->s3->tmp.new_cipher == NULL) 216 if (S3I(s)->tmp.new_cipher == NULL)
217 return; 217 return;
218 218
219 if (s->state & SSL_ST_CONNECT) { 219 if (s->state & SSL_ST_CONNECT) {
@@ -224,9 +224,9 @@ ssl3_take_mac(SSL *s)
224 slen = s->method->ssl3_enc->client_finished_label_len; 224 slen = s->method->ssl3_enc->client_finished_label_len;
225 } 225 }
226 226
227 s->s3->tmp.peer_finish_md_len = 227 S3I(s)->tmp.peer_finish_md_len =
228 s->method->ssl3_enc->final_finish_mac(s, sender, slen, 228 s->method->ssl3_enc->final_finish_mac(s, sender, slen,
229 s->s3->tmp.peer_finish_md); 229 S3I(s)->tmp.peer_finish_md);
230} 230}
231 231
232int 232int
@@ -242,12 +242,12 @@ ssl3_get_finished(SSL *s, int a, int b)
242 return ((int)n); 242 return ((int)n);
243 243
244 /* If this occurs, we have missed a message */ 244 /* If this occurs, we have missed a message */
245 if (!s->s3->change_cipher_spec) { 245 if (!S3I(s)->change_cipher_spec) {
246 al = SSL_AD_UNEXPECTED_MESSAGE; 246 al = SSL_AD_UNEXPECTED_MESSAGE;
247 SSLerr(SSL_F_SSL3_GET_FINISHED, SSL_R_GOT_A_FIN_BEFORE_A_CCS); 247 SSLerr(SSL_F_SSL3_GET_FINISHED, SSL_R_GOT_A_FIN_BEFORE_A_CCS);
248 goto f_err; 248 goto f_err;
249 } 249 }
250 s->s3->change_cipher_spec = 0; 250 S3I(s)->change_cipher_spec = 0;
251 251
252 md_len = s->method->ssl3_enc->finish_mac_length; 252 md_len = s->method->ssl3_enc->finish_mac_length;
253 253
@@ -259,14 +259,14 @@ ssl3_get_finished(SSL *s, int a, int b)
259 259
260 CBS_init(&cbs, s->init_msg, n); 260 CBS_init(&cbs, s->init_msg, n);
261 261
262 if (s->s3->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) {
264 al = SSL_AD_DECODE_ERROR; 264 al = SSL_AD_DECODE_ERROR;
265 SSLerr(SSL_F_SSL3_GET_FINISHED, SSL_R_BAD_DIGEST_LENGTH); 265 SSLerr(SSL_F_SSL3_GET_FINISHED, SSL_R_BAD_DIGEST_LENGTH);
266 goto f_err; 266 goto f_err;
267 } 267 }
268 268
269 if (!CBS_mem_equal(&cbs, s->s3->tmp.peer_finish_md, CBS_len(&cbs))) { 269 if (!CBS_mem_equal(&cbs, S3I(s)->tmp.peer_finish_md, CBS_len(&cbs))) {
270 al = SSL_AD_DECRYPT_ERROR; 270 al = SSL_AD_DECRYPT_ERROR;
271 SSLerr(SSL_F_SSL3_GET_FINISHED, SSL_R_DIGEST_CHECK_FAILED); 271 SSLerr(SSL_F_SSL3_GET_FINISHED, SSL_R_DIGEST_CHECK_FAILED);
272 goto f_err; 272 goto f_err;
@@ -275,13 +275,13 @@ ssl3_get_finished(SSL *s, int a, int b)
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->type == SSL_ST_ACCEPT) {
278 memcpy(s->s3->previous_client_finished, 278 memcpy(S3I(s)->previous_client_finished,
279 s->s3->tmp.peer_finish_md, md_len); 279 S3I(s)->tmp.peer_finish_md, md_len);
280 s->s3->previous_client_finished_len = md_len; 280 S3I(s)->previous_client_finished_len = md_len;
281 } else { 281 } else {
282 memcpy(s->s3->previous_server_finished, 282 memcpy(S3I(s)->previous_server_finished,
283 s->s3->tmp.peer_finish_md, md_len); 283 S3I(s)->tmp.peer_finish_md, md_len);
284 s->s3->previous_server_finished_len = md_len; 284 S3I(s)->previous_server_finished_len = md_len;
285 } 285 }
286 286
287 return (1); 287 return (1);
@@ -292,8 +292,8 @@ f_err:
292 292
293/* for these 2 messages, we need to 293/* for these 2 messages, we need to
294 * ssl->enc_read_ctx re-init 294 * ssl->enc_read_ctx re-init
295 * ssl->s3->read_sequence zero 295 * ssl->s3->internal->read_sequence zero
296 * ssl->s3->read_mac_secret re-init 296 * ssl->s3->internal->read_mac_secret re-init
297 * ssl->session->read_sym_enc assign 297 * ssl->session->read_sym_enc assign
298 * ssl->session->read_hash assign 298 * ssl->session->read_hash assign
299 */ 299 */
@@ -416,9 +416,9 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok)
416 CBS cbs; 416 CBS cbs;
417 uint8_t u8; 417 uint8_t u8;
418 418
419 if (s->s3->tmp.reuse_message) { 419 if (S3I(s)->tmp.reuse_message) {
420 s->s3->tmp.reuse_message = 0; 420 S3I(s)->tmp.reuse_message = 0;
421 if ((mt >= 0) && (s->s3->tmp.message_type != mt)) { 421 if ((mt >= 0) && (S3I(s)->tmp.message_type != mt)) {
422 al = SSL_AD_UNEXPECTED_MESSAGE; 422 al = SSL_AD_UNEXPECTED_MESSAGE;
423 SSLerr(SSL_F_SSL3_GET_MESSAGE, 423 SSLerr(SSL_F_SSL3_GET_MESSAGE,
424 SSL_R_UNEXPECTED_MESSAGE); 424 SSL_R_UNEXPECTED_MESSAGE);
@@ -426,7 +426,7 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok)
426 } 426 }
427 *ok = 1; 427 *ok = 1;
428 s->init_msg = s->init_buf->data + 4; 428 s->init_msg = s->init_buf->data + 4;
429 s->init_num = (int)s->s3->tmp.message_size; 429 s->init_num = (int)S3I(s)->tmp.message_size;
430 return s->init_num; 430 return s->init_num;
431 } 431 }
432 432
@@ -484,7 +484,7 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok)
484 SSLerr(SSL_F_SSL3_GET_MESSAGE, ERR_R_BUF_LIB); 484 SSLerr(SSL_F_SSL3_GET_MESSAGE, ERR_R_BUF_LIB);
485 goto err; 485 goto err;
486 } 486 }
487 s->s3->tmp.message_type = u8; 487 S3I(s)->tmp.message_type = u8;
488 488
489 if (l > (unsigned long)max) { 489 if (l > (unsigned long)max) {
490 al = SSL_AD_ILLEGAL_PARAMETER; 490 al = SSL_AD_ILLEGAL_PARAMETER;
@@ -496,7 +496,7 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok)
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 s->s3->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->init_msg = s->init_buf->data + 4;
@@ -505,7 +505,7 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok)
505 505
506 /* next state (stn) */ 506 /* next state (stn) */
507 p = s->init_msg; 507 p = s->init_msg;
508 n = s->s3->tmp.message_size - s->init_num; 508 n = S3I(s)->tmp.message_size - s->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->init_num], n, 0);