summaryrefslogtreecommitdiff
path: root/src/lib/libssl/d1_clnt.c
diff options
context:
space:
mode:
authorbeck <>2017-01-23 08:48:45 +0000
committerbeck <>2017-01-23 08:48:45 +0000
commit61af17199189570a4400f2757a9e8dab4bb76d2a (patch)
treee1f210556179334ded73129e6e0733758fe22365 /src/lib/libssl/d1_clnt.c
parentc85967e4f9c3e1f3b3217545939f1d44ddf9f103 (diff)
downloadopenbsd-61af17199189570a4400f2757a9e8dab4bb76d2a.tar.gz
openbsd-61af17199189570a4400f2757a9e8dab4bb76d2a.tar.bz2
openbsd-61af17199189570a4400f2757a9e8dab4bb76d2a.zip
send state and rstate from ssl_st into internal. There are accessors
so these should not be diddled with directly ok jsing@
Diffstat (limited to 'src/lib/libssl/d1_clnt.c')
-rw-r--r--src/lib/libssl/d1_clnt.c72
1 files changed, 36 insertions, 36 deletions
diff --git a/src/lib/libssl/d1_clnt.c b/src/lib/libssl/d1_clnt.c
index 5a972f3292..9319794a66 100644
--- a/src/lib/libssl/d1_clnt.c
+++ b/src/lib/libssl/d1_clnt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: d1_clnt.c,v 1.66 2017/01/23 06:45:30 beck Exp $ */ 1/* $OpenBSD: d1_clnt.c,v 1.67 2017/01/23 08:48:44 beck Exp $ */
2/* 2/*
3 * DTLS implementation written by Nagendra Modadugu 3 * DTLS implementation written by Nagendra Modadugu
4 * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. 4 * (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
@@ -199,12 +199,12 @@ dtls1_connect(SSL *s)
199 199
200 200
201 for (;;) { 201 for (;;) {
202 state = s->state; 202 state = s->internal->state;
203 203
204 switch (s->state) { 204 switch (s->internal->state) {
205 case SSL_ST_RENEGOTIATE: 205 case SSL_ST_RENEGOTIATE:
206 s->internal->renegotiate = 1; 206 s->internal->renegotiate = 1;
207 s->state = SSL_ST_CONNECT; 207 s->internal->state = SSL_ST_CONNECT;
208 s->ctx->internal->stats.sess_connect_renegotiate++; 208 s->ctx->internal->stats.sess_connect_renegotiate++;
209 /* break */ 209 /* break */
210 case SSL_ST_BEFORE: 210 case SSL_ST_BEFORE:
@@ -241,7 +241,7 @@ dtls1_connect(SSL *s)
241 241
242 /* don't push the buffering BIO quite yet */ 242 /* don't push the buffering BIO quite yet */
243 243
244 s->state = SSL3_ST_CW_CLNT_HELLO_A; 244 s->internal->state = SSL3_ST_CW_CLNT_HELLO_A;
245 s->ctx->internal->stats.sess_connect++; 245 s->ctx->internal->stats.sess_connect++;
246 s->internal->init_num = 0; 246 s->internal->init_num = 0;
247 /* mark client_random uninitialized */ 247 /* mark client_random uninitialized */
@@ -269,10 +269,10 @@ dtls1_connect(SSL *s)
269 goto end; 269 goto end;
270 270
271 if (D1I(s)->send_cookie) { 271 if (D1I(s)->send_cookie) {
272 s->state = SSL3_ST_CW_FLUSH; 272 s->internal->state = SSL3_ST_CW_FLUSH;
273 S3I(s)->tmp.next_state = SSL3_ST_CR_SRVR_HELLO_A; 273 S3I(s)->tmp.next_state = SSL3_ST_CR_SRVR_HELLO_A;
274 } else 274 } else
275 s->state = SSL3_ST_CR_SRVR_HELLO_A; 275 s->internal->state = SSL3_ST_CR_SRVR_HELLO_A;
276 276
277 s->internal->init_num = 0; 277 s->internal->init_num = 0;
278 278
@@ -290,9 +290,9 @@ dtls1_connect(SSL *s)
290 else { 290 else {
291 if (s->internal->hit) { 291 if (s->internal->hit) {
292 292
293 s->state = SSL3_ST_CR_FINISHED_A; 293 s->internal->state = SSL3_ST_CR_FINISHED_A;
294 } else 294 } else
295 s->state = DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A; 295 s->internal->state = DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A;
296 } 296 }
297 s->internal->init_num = 0; 297 s->internal->init_num = 0;
298 break; 298 break;
@@ -305,9 +305,9 @@ dtls1_connect(SSL *s)
305 goto end; 305 goto end;
306 dtls1_stop_timer(s); 306 dtls1_stop_timer(s);
307 if ( D1I(s)->send_cookie) /* start again, with a cookie */ 307 if ( D1I(s)->send_cookie) /* start again, with a cookie */
308 s->state = SSL3_ST_CW_CLNT_HELLO_A; 308 s->internal->state = SSL3_ST_CW_CLNT_HELLO_A;
309 else 309 else
310 s->state = SSL3_ST_CR_CERT_A; 310 s->internal->state = SSL3_ST_CR_CERT_A;
311 s->internal->init_num = 0; 311 s->internal->init_num = 0;
312 break; 312 break;
313 313
@@ -319,9 +319,9 @@ dtls1_connect(SSL *s)
319 if (ret == 2) { 319 if (ret == 2) {
320 s->internal->hit = 1; 320 s->internal->hit = 1;
321 if (s->internal->tlsext_ticket_expected) 321 if (s->internal->tlsext_ticket_expected)
322 s->state = SSL3_ST_CR_SESSION_TICKET_A; 322 s->internal->state = SSL3_ST_CR_SESSION_TICKET_A;
323 else 323 else
324 s->state = SSL3_ST_CR_FINISHED_A; 324 s->internal->state = SSL3_ST_CR_FINISHED_A;
325 s->internal->init_num = 0; 325 s->internal->init_num = 0;
326 break; 326 break;
327 } 327 }
@@ -332,12 +332,12 @@ dtls1_connect(SSL *s)
332 if (ret <= 0) 332 if (ret <= 0)
333 goto end; 333 goto end;
334 if (s->internal->tlsext_status_expected) 334 if (s->internal->tlsext_status_expected)
335 s->state = SSL3_ST_CR_CERT_STATUS_A; 335 s->internal->state = SSL3_ST_CR_CERT_STATUS_A;
336 else 336 else
337 s->state = SSL3_ST_CR_KEY_EXCH_A; 337 s->internal->state = SSL3_ST_CR_KEY_EXCH_A;
338 } else { 338 } else {
339 skip = 1; 339 skip = 1;
340 s->state = SSL3_ST_CR_KEY_EXCH_A; 340 s->internal->state = SSL3_ST_CR_KEY_EXCH_A;
341 } 341 }
342 s->internal->init_num = 0; 342 s->internal->init_num = 0;
343 break; 343 break;
@@ -347,7 +347,7 @@ dtls1_connect(SSL *s)
347 ret = ssl3_get_server_key_exchange(s); 347 ret = ssl3_get_server_key_exchange(s);
348 if (ret <= 0) 348 if (ret <= 0)
349 goto end; 349 goto end;
350 s->state = SSL3_ST_CR_CERT_REQ_A; 350 s->internal->state = SSL3_ST_CR_CERT_REQ_A;
351 s->internal->init_num = 0; 351 s->internal->init_num = 0;
352 352
353 /* at this point we check that we have the 353 /* at this point we check that we have the
@@ -363,7 +363,7 @@ dtls1_connect(SSL *s)
363 ret = ssl3_get_certificate_request(s); 363 ret = ssl3_get_certificate_request(s);
364 if (ret <= 0) 364 if (ret <= 0)
365 goto end; 365 goto end;
366 s->state = SSL3_ST_CR_SRVR_DONE_A; 366 s->internal->state = SSL3_ST_CR_SRVR_DONE_A;
367 s->internal->init_num = 0; 367 s->internal->init_num = 0;
368 break; 368 break;
369 369
@@ -378,7 +378,7 @@ dtls1_connect(SSL *s)
378 else 378 else
379 S3I(s)->tmp.next_state = SSL3_ST_CW_KEY_EXCH_A; 379 S3I(s)->tmp.next_state = SSL3_ST_CW_KEY_EXCH_A;
380 s->internal->init_num = 0; 380 s->internal->init_num = 0;
381 s->state = S3I(s)->tmp.next_state; 381 s->internal->state = S3I(s)->tmp.next_state;
382 break; 382 break;
383 383
384 case SSL3_ST_CW_CERT_A: 384 case SSL3_ST_CW_CERT_A:
@@ -389,7 +389,7 @@ dtls1_connect(SSL *s)
389 ret = ssl3_send_client_certificate(s); 389 ret = ssl3_send_client_certificate(s);
390 if (ret <= 0) 390 if (ret <= 0)
391 goto end; 391 goto end;
392 s->state = SSL3_ST_CW_KEY_EXCH_A; 392 s->internal->state = SSL3_ST_CW_KEY_EXCH_A;
393 s->internal->init_num = 0; 393 s->internal->init_num = 0;
394 break; 394 break;
395 395
@@ -405,9 +405,9 @@ dtls1_connect(SSL *s)
405 /* For TLS, cert_req is set to 2, so a cert chain 405 /* For TLS, cert_req is set to 2, so a cert chain
406 * of nothing is sent, but no verify packet is sent */ 406 * of nothing is sent, but no verify packet is sent */
407 if (S3I(s)->tmp.cert_req == 1) { 407 if (S3I(s)->tmp.cert_req == 1) {
408 s->state = SSL3_ST_CW_CERT_VRFY_A; 408 s->internal->state = SSL3_ST_CW_CERT_VRFY_A;
409 } else { 409 } else {
410 s->state = SSL3_ST_CW_CHANGE_A; 410 s->internal->state = SSL3_ST_CW_CHANGE_A;
411 S3I(s)->change_cipher_spec = 0; 411 S3I(s)->change_cipher_spec = 0;
412 } 412 }
413 413
@@ -420,7 +420,7 @@ dtls1_connect(SSL *s)
420 ret = ssl3_send_client_verify(s); 420 ret = ssl3_send_client_verify(s);
421 if (ret <= 0) 421 if (ret <= 0)
422 goto end; 422 goto end;
423 s->state = SSL3_ST_CW_CHANGE_A; 423 s->internal->state = SSL3_ST_CW_CHANGE_A;
424 s->internal->init_num = 0; 424 s->internal->init_num = 0;
425 S3I(s)->change_cipher_spec = 0; 425 S3I(s)->change_cipher_spec = 0;
426 break; 426 break;
@@ -434,7 +434,7 @@ dtls1_connect(SSL *s)
434 if (ret <= 0) 434 if (ret <= 0)
435 goto end; 435 goto end;
436 436
437 s->state = SSL3_ST_CW_FINISHED_A; 437 s->internal->state = SSL3_ST_CW_FINISHED_A;
438 s->internal->init_num = 0; 438 s->internal->init_num = 0;
439 439
440 s->session->cipher = S3I(s)->tmp.new_cipher; 440 s->session->cipher = S3I(s)->tmp.new_cipher;
@@ -463,14 +463,14 @@ dtls1_connect(SSL *s)
463 s->method->ssl3_enc->client_finished_label_len); 463 s->method->ssl3_enc->client_finished_label_len);
464 if (ret <= 0) 464 if (ret <= 0)
465 goto end; 465 goto end;
466 s->state = SSL3_ST_CW_FLUSH; 466 s->internal->state = SSL3_ST_CW_FLUSH;
467 467
468 /* clear flags */ 468 /* clear flags */
469 s->s3->flags&= ~SSL3_FLAGS_POP_BUFFER; 469 s->s3->flags&= ~SSL3_FLAGS_POP_BUFFER;
470 if (s->internal->hit) { 470 if (s->internal->hit) {
471 S3I(s)->tmp.next_state = SSL_ST_OK; 471 S3I(s)->tmp.next_state = SSL_ST_OK;
472 if (s->s3->flags & SSL3_FLAGS_DELAY_CLIENT_FINISHED) { 472 if (s->s3->flags & SSL3_FLAGS_DELAY_CLIENT_FINISHED) {
473 s->state = SSL_ST_OK; 473 s->internal->state = SSL_ST_OK;
474 s->s3->flags |= SSL3_FLAGS_POP_BUFFER; 474 s->s3->flags |= SSL3_FLAGS_POP_BUFFER;
475 S3I(s)->delay_buf_pop_ret = 0; 475 S3I(s)->delay_buf_pop_ret = 0;
476 } 476 }
@@ -492,7 +492,7 @@ dtls1_connect(SSL *s)
492 ret = ssl3_get_new_session_ticket(s); 492 ret = ssl3_get_new_session_ticket(s);
493 if (ret <= 0) 493 if (ret <= 0)
494 goto end; 494 goto end;
495 s->state = SSL3_ST_CR_FINISHED_A; 495 s->internal->state = SSL3_ST_CR_FINISHED_A;
496 s->internal->init_num = 0; 496 s->internal->init_num = 0;
497 break; 497 break;
498 498
@@ -501,7 +501,7 @@ dtls1_connect(SSL *s)
501 ret = ssl3_get_cert_status(s); 501 ret = ssl3_get_cert_status(s);
502 if (ret <= 0) 502 if (ret <= 0)
503 goto end; 503 goto end;
504 s->state = SSL3_ST_CR_KEY_EXCH_A; 504 s->internal->state = SSL3_ST_CR_KEY_EXCH_A;
505 s->internal->init_num = 0; 505 s->internal->init_num = 0;
506 break; 506 break;
507 507
@@ -515,9 +515,9 @@ dtls1_connect(SSL *s)
515 dtls1_stop_timer(s); 515 dtls1_stop_timer(s);
516 516
517 if (s->internal->hit) 517 if (s->internal->hit)
518 s->state = SSL3_ST_CW_CHANGE_A; 518 s->internal->state = SSL3_ST_CW_CHANGE_A;
519 else 519 else
520 s->state = SSL_ST_OK; 520 s->internal->state = SSL_ST_OK;
521 521
522 522
523 s->internal->init_num = 0; 523 s->internal->init_num = 0;
@@ -529,14 +529,14 @@ dtls1_connect(SSL *s)
529 /* If the write error was fatal, stop trying */ 529 /* If the write error was fatal, stop trying */
530 if (!BIO_should_retry(s->wbio)) { 530 if (!BIO_should_retry(s->wbio)) {
531 s->internal->rwstate = SSL_NOTHING; 531 s->internal->rwstate = SSL_NOTHING;
532 s->state = S3I(s)->tmp.next_state; 532 s->internal->state = S3I(s)->tmp.next_state;
533 } 533 }
534 534
535 ret = -1; 535 ret = -1;
536 goto end; 536 goto end;
537 } 537 }
538 s->internal->rwstate = SSL_NOTHING; 538 s->internal->rwstate = SSL_NOTHING;
539 s->state = S3I(s)->tmp.next_state; 539 s->internal->state = S3I(s)->tmp.next_state;
540 break; 540 break;
541 541
542 case SSL_ST_OK: 542 case SSL_ST_OK:
@@ -585,11 +585,11 @@ dtls1_connect(SSL *s)
585 goto end; 585 goto end;
586 } 586 }
587 587
588 if ((cb != NULL) && (s->state != state)) { 588 if ((cb != NULL) && (s->internal->state != state)) {
589 new_state = s->state; 589 new_state = s->internal->state;
590 s->state = state; 590 s->internal->state = state;
591 cb(s, SSL_CB_CONNECT_LOOP, 1); 591 cb(s, SSL_CB_CONNECT_LOOP, 1);
592 s->state = new_state; 592 s->internal->state = new_state;
593 } 593 }
594 } 594 }
595 skip = 0; 595 skip = 0;