OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // OpenSSL binding for SSLClientSocket. The class layout and general principle | 5 // OpenSSL binding for SSLClientSocket. The class layout and general principle |
6 // of operation is derived from SSLClientSocketNSS. | 6 // of operation is derived from SSLClientSocketNSS. |
7 | 7 |
8 #include "net/socket/ssl_client_socket_openssl.h" | 8 #include "net/socket/ssl_client_socket_openssl.h" |
9 | 9 |
10 #include <errno.h> | 10 #include <errno.h> |
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
908 } | 908 } |
909 | 909 |
910 // SSL handshake is completed. If NPN wasn't negotiated, see if ALPN was. | 910 // SSL handshake is completed. If NPN wasn't negotiated, see if ALPN was. |
911 if (npn_status_ == kNextProtoUnsupported) { | 911 if (npn_status_ == kNextProtoUnsupported) { |
912 const uint8_t* alpn_proto = NULL; | 912 const uint8_t* alpn_proto = NULL; |
913 unsigned alpn_len = 0; | 913 unsigned alpn_len = 0; |
914 SSL_get0_alpn_selected(ssl_, &alpn_proto, &alpn_len); | 914 SSL_get0_alpn_selected(ssl_, &alpn_proto, &alpn_len); |
915 if (alpn_len > 0) { | 915 if (alpn_len > 0) { |
916 npn_proto_.assign(reinterpret_cast<const char*>(alpn_proto), alpn_len); | 916 npn_proto_.assign(reinterpret_cast<const char*>(alpn_proto), alpn_len); |
917 npn_status_ = kNextProtoNegotiated; | 917 npn_status_ = kNextProtoNegotiated; |
| 918 set_negotiation_extension(kExtensionALPN); |
918 } | 919 } |
919 } | 920 } |
920 | 921 |
921 RecordChannelIDSupport(channel_id_service_, | 922 RecordChannelIDSupport(channel_id_service_, |
922 channel_id_xtn_negotiated_, | 923 channel_id_xtn_negotiated_, |
923 ssl_config_.channel_id_enabled, | 924 ssl_config_.channel_id_enabled, |
924 crypto::ECPrivateKey::IsSupported()); | 925 crypto::ECPrivateKey::IsSupported()); |
925 | 926 |
926 uint8_t* ocsp_response; | 927 uint8_t* ocsp_response; |
927 size_t ocsp_response_len; | 928 size_t ocsp_response_len; |
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1662 | 1663 |
1663 // If we didn't find a protocol, we select the first one from our list. | 1664 // If we didn't find a protocol, we select the first one from our list. |
1664 if (npn_status_ == kNextProtoNoOverlap) { | 1665 if (npn_status_ == kNextProtoNoOverlap) { |
1665 *out = reinterpret_cast<uint8*>(const_cast<char*>( | 1666 *out = reinterpret_cast<uint8*>(const_cast<char*>( |
1666 ssl_config_.next_protos[0].data())); | 1667 ssl_config_.next_protos[0].data())); |
1667 *outlen = ssl_config_.next_protos[0].size(); | 1668 *outlen = ssl_config_.next_protos[0].size(); |
1668 } | 1669 } |
1669 | 1670 |
1670 npn_proto_.assign(reinterpret_cast<const char*>(*out), *outlen); | 1671 npn_proto_.assign(reinterpret_cast<const char*>(*out), *outlen); |
1671 DVLOG(2) << "next protocol: '" << npn_proto_ << "' status: " << npn_status_; | 1672 DVLOG(2) << "next protocol: '" << npn_proto_ << "' status: " << npn_status_; |
| 1673 set_negotiation_extension(kExtensionNPN); |
1672 return SSL_TLSEXT_ERR_OK; | 1674 return SSL_TLSEXT_ERR_OK; |
1673 } | 1675 } |
1674 | 1676 |
1675 long SSLClientSocketOpenSSL::MaybeReplayTransportError( | 1677 long SSLClientSocketOpenSSL::MaybeReplayTransportError( |
1676 BIO *bio, | 1678 BIO *bio, |
1677 int cmd, | 1679 int cmd, |
1678 const char *argp, int argi, long argl, | 1680 const char *argp, int argi, long argl, |
1679 long retvalue) { | 1681 long retvalue) { |
1680 if (cmd == (BIO_CB_READ|BIO_CB_RETURN) && retvalue <= 0) { | 1682 if (cmd == (BIO_CB_READ|BIO_CB_RETURN) && retvalue <= 0) { |
1681 // If there is no more data in the buffer, report any pending errors that | 1683 // If there is no more data in the buffer, report any pending errors that |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1764 ct::SCT_STATUS_LOG_UNKNOWN)); | 1766 ct::SCT_STATUS_LOG_UNKNOWN)); |
1765 } | 1767 } |
1766 } | 1768 } |
1767 | 1769 |
1768 scoped_refptr<X509Certificate> | 1770 scoped_refptr<X509Certificate> |
1769 SSLClientSocketOpenSSL::GetUnverifiedServerCertificateChain() const { | 1771 SSLClientSocketOpenSSL::GetUnverifiedServerCertificateChain() const { |
1770 return server_cert_; | 1772 return server_cert_; |
1771 } | 1773 } |
1772 | 1774 |
1773 } // namespace net | 1775 } // namespace net |
OLD | NEW |