Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / boringssl / src / ssl / d1_srvr.c
index df691ab..79da484 100644 (file)
@@ -327,8 +327,7 @@ int dtls1_accept(SSL *s)
                        s->s3->tmp.next_state=SSL3_ST_SR_CLNT_HELLO_A;
 
                        /* HelloVerifyRequest resets Finished MAC */
-                       if (s->version != DTLS1_BAD_VER)
-                               ssl3_init_finished_mac(s);
+                       ssl3_init_finished_mac(s);
                        break;
                        
 
@@ -360,7 +359,7 @@ int dtls1_accept(SSL *s)
                                dtls1_start_timer(s);
                                ret=ssl3_send_server_certificate(s);
                                if (ret <= 0) goto end;
-                               if (s->tlsext_status_expected)
+                               if (s->s3->tmp.certificate_status_expected)
                                        s->state=SSL3_ST_SW_CERT_STATUS_A;
                                else
                                        s->state=SSL3_ST_SW_KEY_EXCH_A;
@@ -470,76 +469,22 @@ int dtls1_accept(SSL *s)
 
                case SSL3_ST_SR_CERT_A:
                case SSL3_ST_SR_CERT_B:
-                       /* Check for second client hello (MS SGC) */
-                       ret = ssl3_check_client_hello(s);
-                       if (ret <= 0)
-                               goto end;
-                       if (ret == 2)
+                       if (s->s3->tmp.cert_request)
                                {
-                               dtls1_stop_timer(s);
-                               s->state = SSL3_ST_SR_CLNT_HELLO_C;
+                               ret=ssl3_get_client_certificate(s);
+                               if (ret <= 0) goto end;
                                }
-                       else {
-                               if (s->s3->tmp.cert_request)
-                                       {
-                                       ret=ssl3_get_client_certificate(s);
-                                       if (ret <= 0) goto end;
-                                       }
-                               s->init_num=0;
-                               s->state=SSL3_ST_SR_KEY_EXCH_A;
-                       }
+                       s->init_num=0;
+                       s->state=SSL3_ST_SR_KEY_EXCH_A;
                        break;
 
                case SSL3_ST_SR_KEY_EXCH_A:
                case SSL3_ST_SR_KEY_EXCH_B:
                        ret=ssl3_get_client_key_exchange(s);
-                       if (ret <= 0) goto end;
-
+                       if (ret <= 0)
+                               goto end;
                        s->state=SSL3_ST_SR_CERT_VRFY_A;
                        s->init_num=0;
-
-                       if (ret == 2)
-                               {
-                               /* For the ECDH ciphersuites when
-                                * the client sends its ECDH pub key in
-                                * a certificate, the CertificateVerify
-                                * message is not sent.
-                                */
-                               s->state=SSL3_ST_SR_FINISHED_A;
-                               s->init_num = 0;
-                               }
-                       else if (SSL_USE_SIGALGS(s))
-                               {
-                               s->state=SSL3_ST_SR_CERT_VRFY_A;
-                               s->init_num=0;
-                               if (!s->session->peer)
-                                       break;
-                               /* For sigalgs freeze the handshake buffer
-                                * at this point and digest cached records.
-                                */
-                               if (!s->s3->handshake_buffer)
-                                       {
-                                       OPENSSL_PUT_ERROR(SSL, dtls1_accept, ERR_R_INTERNAL_ERROR);
-                                       return -1;
-                                       }
-                               s->s3->flags |= TLS1_FLAGS_KEEP_HANDSHAKE;
-                               if (!ssl3_digest_cached_records(s))
-                                       return -1;
-                               }
-                       else
-                               {
-                               s->state=SSL3_ST_SR_CERT_VRFY_A;
-                               s->init_num=0;
-
-                               /* We need to get hashes here so if there is
-                                * a client cert, it can be verified */ 
-                               s->method->ssl3_enc->cert_verify_mac(s,
-                                       NID_md5,
-                                       &(s->s3->tmp.cert_verify_md[0]));
-                               s->method->ssl3_enc->cert_verify_mac(s,
-                                       NID_sha1,
-                                       &(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH]));
-                               }
                        break;
 
                case SSL3_ST_SR_CERT_VRFY_A:
@@ -571,12 +516,14 @@ int dtls1_accept(SSL *s)
 
                case SSL3_ST_SW_SESSION_TICKET_A:
                case SSL3_ST_SW_SESSION_TICKET_B:
-                       ret=ssl3_send_newsession_ticket(s);
+                       ret=ssl3_send_new_session_ticket(s);
                        if (ret <= 0) goto end;
                        s->state=SSL3_ST_SW_CHANGE_A;
                        s->init_num=0;
                        break;
 
+#if 0
+               // TODO(davidben): Implement OCSP stapling on the server.
                case SSL3_ST_SW_CERT_STATUS_A:
                case SSL3_ST_SW_CERT_STATUS_B:
                        ret=ssl3_send_cert_status(s);
@@ -584,7 +531,7 @@ int dtls1_accept(SSL *s)
                        s->state=SSL3_ST_SW_KEY_EXCH_A;
                        s->init_num=0;
                        break;
-
+#endif
 
                case SSL3_ST_SW_CHANGE_A:
                case SSL3_ST_SW_CHANGE_B:
@@ -719,8 +666,7 @@ int dtls1_send_hello_verify_request(SSL *s)
                *(p++) = DTLS1_VERSION & 0xFF;
 
                if (s->ctx->app_gen_cookie_cb == NULL ||
-                    s->ctx->app_gen_cookie_cb(s, s->d1->cookie,
-                        &(s->d1->cookie_len)) == 0)
+                    s->ctx->app_gen_cookie_cb(s, s->d1->cookie, &(s->d1->cookie_len)) == 0)
                        {
                        OPENSSL_PUT_ERROR(SSL, dtls1_send_hello_verify_request, ERR_R_INTERNAL_ERROR);
                        return 0;