| Index: net/socket/ssl_client_socket_nss.cc
|
| diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc
|
| index c95312d1ef9442bcc362524c2e225f07618981ee..3b55f396cb8d32f703594772c4d19d1527fd5e18 100644
|
| --- a/net/socket/ssl_client_socket_nss.cc
|
| +++ b/net/socket/ssl_client_socket_nss.cc
|
| @@ -136,17 +136,17 @@ namespace net {
|
| #define LeaveFunction(x)
|
| #define GotoState(s) next_handshake_state_ = s
|
| #else
|
| -#define EnterFunction(x)\
|
| - VLOG(1) << (void *)this << " " << __FUNCTION__ << " enter " << x\
|
| - << "; next_handshake_state " << next_handshake_state_
|
| -#define LeaveFunction(x)\
|
| - VLOG(1) << (void *)this << " " << __FUNCTION__ << " leave " << x\
|
| - << "; next_handshake_state " << next_handshake_state_
|
| -#define GotoState(s)\
|
| - do {\
|
| - VLOG(1) << (void *)this << " " << __FUNCTION__ << " jump to state " << s;\
|
| - next_handshake_state_ = s;\
|
| - } while (0)
|
| +#define EnterFunction(x) \
|
| + VLOG(1) << (void*) this << " " << __FUNCTION__ << " enter " << x \
|
| + << "; next_handshake_state " << next_handshake_state_
|
| +#define LeaveFunction(x) \
|
| + VLOG(1) << (void*) this << " " << __FUNCTION__ << " leave " << x \
|
| + << "; next_handshake_state " << next_handshake_state_
|
| +#define GotoState(s) \
|
| + do { \
|
| + VLOG(1) << (void*) this << " " << __FUNCTION__ << " jump to state " << s; \
|
| + next_handshake_state_ = s; \
|
| + } while (0)
|
| #endif
|
|
|
| namespace {
|
| @@ -174,10 +174,12 @@ bool IsOCSPStaplingSupported() {
|
| return true;
|
| }
|
| #elif defined(USE_NSS)
|
| -typedef SECStatus
|
| -(*CacheOCSPResponseFromSideChannelFunction)(
|
| - CERTCertDBHandle *handle, CERTCertificate *cert, PRTime time,
|
| - SECItem *encodedResponse, void *pwArg);
|
| +typedef SECStatus (*CacheOCSPResponseFromSideChannelFunction)(
|
| + CERTCertDBHandle* handle,
|
| + CERTCertificate* cert,
|
| + PRTime time,
|
| + SECItem* encodedResponse,
|
| + void* pwArg);
|
|
|
| // On Linux, we dynamically link against the system version of libnss3.so. In
|
| // order to continue working on systems without up-to-date versions of NSS we
|
| @@ -201,8 +203,8 @@ class RuntimeLibNSSFunctionPointers {
|
|
|
| RuntimeLibNSSFunctionPointers() {
|
| cache_ocsp_response_from_side_channel_ =
|
| - (CacheOCSPResponseFromSideChannelFunction)
|
| - dlsym(RTLD_DEFAULT, "CERT_CacheOCSPResponseFromSideChannel");
|
| + (CacheOCSPResponseFromSideChannelFunction)dlsym(
|
| + RTLD_DEFAULT, "CERT_CacheOCSPResponseFromSideChannel");
|
| }
|
|
|
| CacheOCSPResponseFromSideChannelFunction
|
| @@ -212,7 +214,7 @@ class RuntimeLibNSSFunctionPointers {
|
| CacheOCSPResponseFromSideChannelFunction
|
| GetCacheOCSPResponseFromSideChannelFunction() {
|
| return RuntimeLibNSSFunctionPointers::GetInstance()
|
| - ->GetCacheOCSPResponseFromSideChannelFunction();
|
| + ->GetCacheOCSPResponseFromSideChannelFunction();
|
| }
|
|
|
| bool IsOCSPStaplingSupported() {
|
| @@ -236,13 +238,13 @@ bool IsOCSPStaplingSupported() {
|
| // This matches our behavior on Mac OS X and that of NSS. It also matches the
|
| // default behavior of IE8. See http://support.microsoft.com/kb/890326 and
|
| // http://blogs.msdn.com/b/askie/archive/2009/06/09/my-expired-client-certificates-no-longer-display-when-connecting-to-my-web-server-using-ie8.aspx
|
| -BOOL WINAPI ClientCertFindCallback(PCCERT_CONTEXT cert_context,
|
| - void* find_arg) {
|
| +BOOL WINAPI
|
| +ClientCertFindCallback(PCCERT_CONTEXT cert_context, void* find_arg) {
|
| VLOG(1) << "Calling ClientCertFindCallback from _nss";
|
| // Verify the certificate's KU is good.
|
| BYTE key_usage;
|
| - if (CertGetIntendedKeyUsage(X509_ASN_ENCODING, cert_context->pCertInfo,
|
| - &key_usage, 1)) {
|
| + if (CertGetIntendedKeyUsage(
|
| + X509_ASN_ENCODING, cert_context->pCertInfo, &key_usage, 1)) {
|
| if (!(key_usage & CERT_DIGITAL_SIGNATURE_KEY_USAGE))
|
| return FALSE;
|
| } else {
|
| @@ -300,9 +302,10 @@ void AddLogEventWithCallback(const base::WeakPtr<BoundNetLog>& net_log,
|
| // Instead, provide a signature that accepts an IOBuffer*, so that a reference
|
| // to the owning IOBuffer can be bound to the Callback. This ensures that the
|
| // IOBuffer will stay alive long enough to cross threads if needed.
|
| -void LogByteTransferEvent(
|
| - const base::WeakPtr<BoundNetLog>& net_log, NetLog::EventType event_type,
|
| - int len, IOBuffer* buffer) {
|
| +void LogByteTransferEvent(const base::WeakPtr<BoundNetLog>& net_log,
|
| + NetLog::EventType event_type,
|
| + int len,
|
| + IOBuffer* buffer) {
|
| if (!net_log)
|
| return;
|
| net_log->AddByteTransferEvent(event_type, len, buffer->data());
|
| @@ -340,8 +343,7 @@ class PeerCertificateChain {
|
| std::vector<CERTCertificate*> certs_;
|
| };
|
|
|
| -PeerCertificateChain::PeerCertificateChain(
|
| - const PeerCertificateChain& other) {
|
| +PeerCertificateChain::PeerCertificateChain(const PeerCertificateChain& other) {
|
| *this = other;
|
| }
|
|
|
| @@ -376,14 +378,15 @@ void PeerCertificateChain::Reset(PRFileDesc* nss_fd) {
|
| return;
|
|
|
| for (CERTCertListNode* node = CERT_LIST_HEAD(list);
|
| - !CERT_LIST_END(node, list); node = CERT_LIST_NEXT(node)) {
|
| + !CERT_LIST_END(node, list);
|
| + node = CERT_LIST_NEXT(node)) {
|
| certs_.push_back(CERT_DupCertificate(node->cert));
|
| }
|
| CERT_DestroyCertList(list);
|
| }
|
|
|
| -std::vector<base::StringPiece>
|
| -PeerCertificateChain::AsStringPieceVector() const {
|
| +std::vector<base::StringPiece> PeerCertificateChain::AsStringPieceVector()
|
| + const {
|
| std::vector<base::StringPiece> v(certs_.size());
|
| for (unsigned i = 0; i < certs_.size(); i++) {
|
| v[i] = base::StringPiece(
|
| @@ -678,10 +681,10 @@ class SSLClientSocketNSS::Core : public base::RefCountedThreadSafe<Core> {
|
| PRBool checksig,
|
| PRBool is_server);
|
|
|
| - // Callbacks called by NSS when the peer requests client certificate
|
| - // authentication.
|
| - // See the documentation in third_party/nss/ssl/ssl.h for the meanings of
|
| - // the arguments.
|
| +// Callbacks called by NSS when the peer requests client certificate
|
| +// authentication.
|
| +// See the documentation in third_party/nss/ssl/ssl.h for the meanings of
|
| +// the arguments.
|
| #if defined(NSS_PLATFORM_CLIENT_AUTH)
|
| // When NSS has been integrated with awareness of the underlying system
|
| // cryptographic libraries, this callback allows the caller to supply a
|
| @@ -744,11 +747,10 @@ class SSLClientSocketNSS::Core : public base::RefCountedThreadSafe<Core> {
|
| void DoWriteCallback(int result);
|
|
|
| // Client channel ID handler.
|
| - static SECStatus ClientChannelIDHandler(
|
| - void* arg,
|
| - PRFileDesc* socket,
|
| - SECKEYPublicKey **out_public_key,
|
| - SECKEYPrivateKey **out_private_key);
|
| + static SECStatus ClientChannelIDHandler(void* arg,
|
| + PRFileDesc* socket,
|
| + SECKEYPublicKey** out_public_key,
|
| + SECKEYPrivateKey** out_private_key);
|
|
|
| // ImportChannelIDKeys is a helper function for turning a DER-encoded cert and
|
| // key into a SECKEYPublicKey and SECKEYPrivateKey. Returns OK upon success
|
| @@ -788,10 +790,9 @@ class SSLClientSocketNSS::Core : public base::RefCountedThreadSafe<Core> {
|
| void OnNSSBufferUpdated(int amount_in_read_buffer);
|
| void DidNSSRead(int result);
|
| void DidNSSWrite(int result);
|
| - void RecordChannelIDSupportOnNetworkTaskRunner(
|
| - bool negotiated_channel_id,
|
| - bool channel_id_enabled,
|
| - bool supports_ecc) const;
|
| + void RecordChannelIDSupportOnNetworkTaskRunner(bool negotiated_channel_id,
|
| + bool channel_id_enabled,
|
| + bool supports_ecc) const;
|
|
|
| ////////////////////////////////////////////////////////////////////////////
|
| // Methods that are called on both the network task runner and the NSS
|
| @@ -984,9 +985,10 @@ bool SSLClientSocketNSS::Core::Init(PRFileDesc* socket,
|
|
|
| if (!ssl_config_.next_protos.empty()) {
|
| size_t wire_length = 0;
|
| - for (std::vector<std::string>::const_iterator
|
| - i = ssl_config_.next_protos.begin();
|
| - i != ssl_config_.next_protos.end(); ++i) {
|
| + for (std::vector<std::string>::const_iterator i =
|
| + ssl_config_.next_protos.begin();
|
| + i != ssl_config_.next_protos.end();
|
| + ++i) {
|
| if (i->size() > 255) {
|
| LOG(WARNING) << "Ignoring overlong NPN/ALPN protocol: " << *i;
|
| continue;
|
| @@ -996,9 +998,10 @@ bool SSLClientSocketNSS::Core::Init(PRFileDesc* socket,
|
| }
|
| scoped_ptr<uint8[]> wire_protos(new uint8[wire_length]);
|
| uint8* dst = wire_protos.get();
|
| - for (std::vector<std::string>::const_iterator
|
| - i = ssl_config_.next_protos.begin();
|
| - i != ssl_config_.next_protos.end(); i++) {
|
| + for (std::vector<std::string>::const_iterator i =
|
| + ssl_config_.next_protos.begin();
|
| + i != ssl_config_.next_protos.end();
|
| + i++) {
|
| if (i->size() > 255)
|
| continue;
|
| *dst++ = i->size();
|
| @@ -1026,8 +1029,7 @@ bool SSLClientSocketNSS::Core::Init(PRFileDesc* socket,
|
|
|
| #if defined(NSS_PLATFORM_CLIENT_AUTH)
|
| rv = SSL_GetPlatformClientAuthDataHook(
|
| - nss_fd_, SSLClientSocketNSS::Core::PlatformClientAuthHandler,
|
| - this);
|
| + nss_fd_, SSLClientSocketNSS::Core::PlatformClientAuthHandler, this);
|
| #else
|
| rv = SSL_GetClientAuthDataHook(
|
| nss_fd_, SSLClientSocketNSS::Core::ClientAuthHandler, this);
|
| @@ -1067,8 +1069,7 @@ int SSLClientSocketNSS::Core::Connect(const CompletionCallback& callback) {
|
| if (!OnNSSTaskRunner()) {
|
| DCHECK(!detached_);
|
| bool posted = nss_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(IgnoreResult(&Core::Connect), this, callback));
|
| + FROM_HERE, base::Bind(IgnoreResult(&Core::Connect), this, callback));
|
| return posted ? ERR_IO_PENDING : ERR_ABORTED;
|
| }
|
|
|
| @@ -1107,7 +1108,8 @@ void SSLClientSocketNSS::Core::Detach() {
|
| domain_bound_cert_request_handle_.Cancel();
|
| }
|
|
|
| -int SSLClientSocketNSS::Core::Read(IOBuffer* buf, int buf_len,
|
| +int SSLClientSocketNSS::Core::Read(IOBuffer* buf,
|
| + int buf_len,
|
| const CompletionCallback& callback) {
|
| if (!OnNSSTaskRunner()) {
|
| DCHECK(OnNetworkTaskRunner());
|
| @@ -1116,10 +1118,13 @@ int SSLClientSocketNSS::Core::Read(IOBuffer* buf, int buf_len,
|
| DCHECK(!nss_waiting_read_);
|
|
|
| nss_waiting_read_ = true;
|
| - bool posted = nss_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(IgnoreResult(&Core::Read), this, make_scoped_refptr(buf),
|
| - buf_len, callback));
|
| + bool posted =
|
| + nss_task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(IgnoreResult(&Core::Read),
|
| + this,
|
| + make_scoped_refptr(buf),
|
| + buf_len,
|
| + callback));
|
| if (!posted) {
|
| nss_is_closed_ = true;
|
| nss_waiting_read_ = false;
|
| @@ -1164,7 +1169,8 @@ int SSLClientSocketNSS::Core::Read(IOBuffer* buf, int buf_len,
|
| return rv;
|
| }
|
|
|
| -int SSLClientSocketNSS::Core::Write(IOBuffer* buf, int buf_len,
|
| +int SSLClientSocketNSS::Core::Write(IOBuffer* buf,
|
| + int buf_len,
|
| const CompletionCallback& callback) {
|
| if (!OnNSSTaskRunner()) {
|
| DCHECK(OnNetworkTaskRunner());
|
| @@ -1173,10 +1179,13 @@ int SSLClientSocketNSS::Core::Write(IOBuffer* buf, int buf_len,
|
| DCHECK(!nss_waiting_write_);
|
|
|
| nss_waiting_write_ = true;
|
| - bool posted = nss_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(IgnoreResult(&Core::Write), this, make_scoped_refptr(buf),
|
| - buf_len, callback));
|
| + bool posted =
|
| + nss_task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(IgnoreResult(&Core::Write),
|
| + this,
|
| + make_scoped_refptr(buf),
|
| + buf_len,
|
| + callback));
|
| if (!posted) {
|
| nss_is_closed_ = true;
|
| nss_waiting_write_ = false;
|
| @@ -1274,18 +1283,18 @@ bool SSLClientSocketNSS::Core::OnNetworkTaskRunner() const {
|
| }
|
|
|
| // static
|
| -SECStatus SSLClientSocketNSS::Core::OwnAuthCertHandler(
|
| - void* arg,
|
| - PRFileDesc* socket,
|
| - PRBool checksig,
|
| - PRBool is_server) {
|
| +SECStatus SSLClientSocketNSS::Core::OwnAuthCertHandler(void* arg,
|
| + PRFileDesc* socket,
|
| + PRBool checksig,
|
| + PRBool is_server) {
|
| Core* core = reinterpret_cast<Core*>(arg);
|
| if (core->handshake_callback_called_) {
|
| // Disallow the server certificate to change in a renegotiation.
|
| CERTCertificate* old_cert = core->nss_handshake_state_.server_cert_chain[0];
|
| ScopedCERTCertificate new_cert(SSL_PeerCertificate(socket));
|
| if (new_cert->derCert.len != old_cert->derCert.len ||
|
| - memcmp(new_cert->derCert.data, old_cert->derCert.data,
|
| + memcmp(new_cert->derCert.data,
|
| + old_cert->derCert.data,
|
| new_cert->derCert.len) != 0) {
|
| // NSS doesn't have an error code that indicates the server certificate
|
| // changed. Borrow SSL_ERROR_WRONG_CERTIFICATE (which NSS isn't using)
|
| @@ -1312,10 +1321,10 @@ SECStatus SSLClientSocketNSS::Core::PlatformClientAuthHandler(
|
| Core* core = reinterpret_cast<Core*>(arg);
|
| DCHECK(core->OnNSSTaskRunner());
|
|
|
| - core->PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEvent, core->weak_net_log_,
|
| - NetLog::TYPE_SSL_CLIENT_CERT_REQUESTED));
|
| + core->PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEvent,
|
| + core->weak_net_log_,
|
| + NetLog::TYPE_SSL_CLIENT_CERT_REQUESTED));
|
|
|
| core->client_auth_cert_needed_ = !core->ssl_config_.send_client_cert;
|
| #if defined(OS_WIN)
|
| @@ -1342,7 +1351,7 @@ SECStatus SSLClientSocketNSS::Core::PlatformClientAuthHandler(
|
| SECItem der_cert;
|
| der_cert.type = siDERCertBuffer;
|
| der_cert.data = cert_context->pbCertEncoded;
|
| - der_cert.len = cert_context->cbCertEncoded;
|
| + der_cert.len = cert_context->cbCertEncoded;
|
|
|
| // TODO(rsleevi): Error checking for NSS allocation errors.
|
| CERTCertDBHandle* db_handle = CERT_GetDefaultCertDB();
|
| @@ -1361,7 +1370,9 @@ SECStatus SSLClientSocketNSS::Core::PlatformClientAuthHandler(
|
| X509Certificate::OSCertHandles intermediates =
|
| core->ssl_config_.client_cert->GetIntermediateCertificates();
|
| for (X509Certificate::OSCertHandles::const_iterator it =
|
| - intermediates.begin(); it != intermediates.end(); ++it) {
|
| + intermediates.begin();
|
| + it != intermediates.end();
|
| + ++it) {
|
| der_cert.data = (*it)->pbCertEncoded;
|
| der_cert.len = (*it)->cbCertEncoded;
|
|
|
| @@ -1401,16 +1412,17 @@ SECStatus SSLClientSocketNSS::Core::PlatformClientAuthHandler(
|
| for (int i = 0; i < ca_names->nnames; ++i) {
|
| issuer_list[i].cbData = ca_names->names[i].len;
|
| issuer_list[i].pbData = ca_names->names[i].data;
|
| - core->nss_handshake_state_.cert_authorities.push_back(std::string(
|
| - reinterpret_cast<const char*>(ca_names->names[i].data),
|
| - static_cast<size_t>(ca_names->names[i].len)));
|
| + core->nss_handshake_state_.cert_authorities.push_back(
|
| + std::string(reinterpret_cast<const char*>(ca_names->names[i].data),
|
| + static_cast<size_t>(ca_names->names[i].len)));
|
| }
|
|
|
| // Update the network task runner's view of the handshake state now that
|
| // server certificate request has been recorded.
|
| core->PostOrRunCallback(
|
| - FROM_HERE, base::Bind(&Core::OnHandshakeStateUpdated, core,
|
| - core->nss_handshake_state_));
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &Core::OnHandshakeStateUpdated, core, core->nss_handshake_state_));
|
|
|
| // Tell NSS to suspend the client authentication. We will then abort the
|
| // handshake by returning ERR_SSL_CLIENT_AUTH_CERT_NEEDED.
|
| @@ -1494,16 +1506,17 @@ SECStatus SSLClientSocketNSS::Core::PlatformClientAuthHandler(
|
| std::vector<CertPrincipal> valid_issuers;
|
| int n = ca_names->nnames;
|
| for (int i = 0; i < n; i++) {
|
| - core->nss_handshake_state_.cert_authorities.push_back(std::string(
|
| - reinterpret_cast<const char*>(ca_names->names[i].data),
|
| - static_cast<size_t>(ca_names->names[i].len)));
|
| + core->nss_handshake_state_.cert_authorities.push_back(
|
| + std::string(reinterpret_cast<const char*>(ca_names->names[i].data),
|
| + static_cast<size_t>(ca_names->names[i].len)));
|
| }
|
|
|
| // Update the network task runner's view of the handshake state now that
|
| // server certificate request has been recorded.
|
| core->PostOrRunCallback(
|
| - FROM_HERE, base::Bind(&Core::OnHandshakeStateUpdated, core,
|
| - core->nss_handshake_state_));
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &Core::OnHandshakeStateUpdated, core, core->nss_handshake_state_));
|
|
|
| // Tell NSS to suspend the client authentication. We will then abort the
|
| // handshake by returning ERR_SSL_CLIENT_AUTH_CERT_NEEDED.
|
| @@ -1524,10 +1537,10 @@ SECStatus SSLClientSocketNSS::Core::ClientAuthHandler(
|
| Core* core = reinterpret_cast<Core*>(arg);
|
| DCHECK(core->OnNSSTaskRunner());
|
|
|
| - core->PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEvent, core->weak_net_log_,
|
| - NetLog::TYPE_SSL_CLIENT_CERT_REQUESTED));
|
| + core->PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEvent,
|
| + core->weak_net_log_,
|
| + NetLog::TYPE_SSL_CLIENT_CERT_REQUESTED));
|
|
|
| // TODO(droger): Support client auth on iOS. See http://crbug.com/145954).
|
| LOG(WARNING) << "Client auth is not supported";
|
| @@ -1537,7 +1550,7 @@ SECStatus SSLClientSocketNSS::Core::ClientAuthHandler(
|
| return SECFailure;
|
| }
|
|
|
| -#else // NSS_PLATFORM_CLIENT_AUTH
|
| +#else // NSS_PLATFORM_CLIENT_AUTH
|
|
|
| // static
|
| // Based on Mozilla's NSS_GetClientAuthData.
|
| @@ -1550,14 +1563,14 @@ SECStatus SSLClientSocketNSS::Core::ClientAuthHandler(
|
| Core* core = reinterpret_cast<Core*>(arg);
|
| DCHECK(core->OnNSSTaskRunner());
|
|
|
| - core->PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEvent, core->weak_net_log_,
|
| - NetLog::TYPE_SSL_CLIENT_CERT_REQUESTED));
|
| + core->PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEvent,
|
| + core->weak_net_log_,
|
| + NetLog::TYPE_SSL_CLIENT_CERT_REQUESTED));
|
|
|
| // Regular client certificate requested.
|
| core->client_auth_cert_needed_ = !core->ssl_config_.send_client_cert;
|
| - void* wincx = SSL_RevealPinArg(socket);
|
| + void* wincx = SSL_RevealPinArg(socket);
|
|
|
| if (core->ssl_config_.send_client_cert) {
|
| // Second pass: a client certificate should have been selected.
|
| @@ -1590,16 +1603,17 @@ SECStatus SSLClientSocketNSS::Core::ClientAuthHandler(
|
| // Retrieve the DER-encoded DistinguishedName of the cert issuers accepted by
|
| // the server and save them in |cert_authorities|.
|
| for (int i = 0; i < ca_names->nnames; i++) {
|
| - core->nss_handshake_state_.cert_authorities.push_back(std::string(
|
| - reinterpret_cast<const char*>(ca_names->names[i].data),
|
| - static_cast<size_t>(ca_names->names[i].len)));
|
| + core->nss_handshake_state_.cert_authorities.push_back(
|
| + std::string(reinterpret_cast<const char*>(ca_names->names[i].data),
|
| + static_cast<size_t>(ca_names->names[i].len)));
|
| }
|
|
|
| // Update the network task runner's view of the handshake state now that
|
| // server certificate request has been recorded.
|
| core->PostOrRunCallback(
|
| - FROM_HERE, base::Bind(&Core::OnHandshakeStateUpdated, core,
|
| - core->nss_handshake_state_));
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &Core::OnHandshakeStateUpdated, core, core->nss_handshake_state_));
|
|
|
| // Tell NSS to suspend the client authentication. We will then abort the
|
| // handshake by returning ERR_SSL_CLIENT_AUTH_CERT_NEEDED.
|
| @@ -1615,13 +1629,11 @@ SECStatus SSLClientSocketNSS::Core::CanFalseStartCallback(
|
| // If the server doesn't support NPN or ALPN, then we don't do False
|
| // Start with it.
|
| PRBool negotiated_extension;
|
| - SECStatus rv = SSL_HandshakeNegotiatedExtension(socket,
|
| - ssl_app_layer_protocol_xtn,
|
| - &negotiated_extension);
|
| + SECStatus rv = SSL_HandshakeNegotiatedExtension(
|
| + socket, ssl_app_layer_protocol_xtn, &negotiated_extension);
|
| if (rv != SECSuccess || !negotiated_extension) {
|
| - rv = SSL_HandshakeNegotiatedExtension(socket,
|
| - ssl_next_proto_nego_xtn,
|
| - &negotiated_extension);
|
| + rv = SSL_HandshakeNegotiatedExtension(
|
| + socket, ssl_next_proto_nego_xtn, &negotiated_extension);
|
| }
|
| if (rv != SECSuccess || !negotiated_extension) {
|
| *can_false_start = PR_FALSE;
|
| @@ -1632,9 +1644,8 @@ SECStatus SSLClientSocketNSS::Core::CanFalseStartCallback(
|
| }
|
|
|
| // static
|
| -void SSLClientSocketNSS::Core::HandshakeCallback(
|
| - PRFileDesc* socket,
|
| - void* arg) {
|
| +void SSLClientSocketNSS::Core::HandshakeCallback(PRFileDesc* socket,
|
| + void* arg) {
|
| Core* core = reinterpret_cast<Core*>(arg);
|
| DCHECK(core->OnNSSTaskRunner());
|
|
|
| @@ -1678,16 +1689,16 @@ void SSLClientSocketNSS::Core::HandshakeSucceeded() {
|
| // Update the network task runners view of the handshake state whenever
|
| // a handshake has completed.
|
| PostOrRunCallback(
|
| - FROM_HERE, base::Bind(&Core::OnHandshakeStateUpdated, this,
|
| - nss_handshake_state_));
|
| + FROM_HERE,
|
| + base::Bind(&Core::OnHandshakeStateUpdated, this, nss_handshake_state_));
|
| }
|
|
|
| int SSLClientSocketNSS::Core::HandleNSSError(PRErrorCode nss_error,
|
| bool handshake_error) {
|
| DCHECK(OnNSSTaskRunner());
|
|
|
| - int net_error = handshake_error ? MapNSSClientHandshakeError(nss_error) :
|
| - MapNSSClientError(nss_error);
|
| + int net_error = handshake_error ? MapNSSClientHandshakeError(nss_error)
|
| + : MapNSSClientError(nss_error);
|
|
|
| #if defined(OS_WIN)
|
| // On Windows, a handle to the HCRYPTPROV is cached in the X509Certificate
|
| @@ -1707,9 +1718,10 @@ int SSLClientSocketNSS::Core::HandleNSSError(PRErrorCode nss_error,
|
| if ((net_error == ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY ||
|
| net_error == ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED) &&
|
| ssl_config_.send_client_cert && ssl_config_.client_cert) {
|
| - CertSetCertificateContextProperty(
|
| - ssl_config_.client_cert->os_cert_handle(),
|
| - CERT_KEY_PROV_HANDLE_PROP_ID, 0, NULL);
|
| + CertSetCertificateContextProperty(ssl_config_.client_cert->os_cert_handle(),
|
| + CERT_KEY_PROV_HANDLE_PROP_ID,
|
| + 0,
|
| + NULL);
|
| }
|
| #endif
|
|
|
| @@ -1763,11 +1775,11 @@ int SSLClientSocketNSS::Core::DoReadLoop(int result) {
|
| if (!nss_bufs_) {
|
| LOG(DFATAL) << "!nss_bufs_";
|
| int rv = ERR_UNEXPECTED;
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
| - NetLog::TYPE_SSL_READ_ERROR,
|
| - CreateNetLogSSLErrorCallback(rv, 0)));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEventWithCallback,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_READ_ERROR,
|
| + CreateNetLogSSLErrorCallback(rv, 0)));
|
| return rv;
|
| }
|
|
|
| @@ -1792,11 +1804,11 @@ int SSLClientSocketNSS::Core::DoWriteLoop(int result) {
|
| if (!nss_bufs_) {
|
| LOG(DFATAL) << "!nss_bufs_";
|
| int rv = ERR_UNEXPECTED;
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
| - NetLog::TYPE_SSL_READ_ERROR,
|
| - CreateNetLogSSLErrorCallback(rv, 0)));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEventWithCallback,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_READ_ERROR,
|
| + CreateNetLogSSLErrorCallback(rv, 0)));
|
| return rv;
|
| }
|
|
|
| @@ -1825,11 +1837,11 @@ int SSLClientSocketNSS::Core::DoHandshake() {
|
| net_error = ERR_IO_PENDING;
|
| } else if (client_auth_cert_needed_) {
|
| net_error = ERR_SSL_CLIENT_AUTH_CERT_NEEDED;
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
| - NetLog::TYPE_SSL_HANDSHAKE_ERROR,
|
| - CreateNetLogSSLErrorCallback(net_error, 0)));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEventWithCallback,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_HANDSHAKE_ERROR,
|
| + CreateNetLogSSLErrorCallback(net_error, 0)));
|
|
|
| // If the handshake already succeeded (because the server requests but
|
| // doesn't require a client cert), we need to invalidate the SSL session
|
| @@ -1870,7 +1882,8 @@ int SSLClientSocketNSS::Core::DoHandshake() {
|
| } else {
|
| PostOrRunCallback(
|
| FROM_HERE,
|
| - base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
| + base::Bind(&AddLogEventWithCallback,
|
| + weak_net_log_,
|
| NetLog::TYPE_SSL_HANDSHAKE_ERROR,
|
| CreateNetLogSSLErrorCallback(net_error, prerr)));
|
| }
|
| @@ -1881,10 +1894,11 @@ int SSLClientSocketNSS::Core::DoHandshake() {
|
|
|
| int SSLClientSocketNSS::Core::DoGetDBCertComplete(int result) {
|
| SECStatus rv;
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&BoundNetLog::EndEventWithNetErrorCode, weak_net_log_,
|
| - NetLog::TYPE_SSL_GET_DOMAIN_BOUND_CERT, result));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&BoundNetLog::EndEventWithNetErrorCode,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_GET_DOMAIN_BOUND_CERT,
|
| + result));
|
|
|
| channel_id_needed_ = false;
|
|
|
| @@ -1922,17 +1936,18 @@ int SSLClientSocketNSS::Core::DoPayloadRead() {
|
| pending_read_nss_error_ = 0;
|
|
|
| if (rv == 0) {
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&LogByteTransferEvent, weak_net_log_,
|
| - NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED, rv,
|
| - scoped_refptr<IOBuffer>(user_read_buf_)));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&LogByteTransferEvent,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED,
|
| + rv,
|
| + scoped_refptr<IOBuffer>(user_read_buf_)));
|
| } else {
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
| - NetLog::TYPE_SSL_READ_ERROR,
|
| - CreateNetLogSSLErrorCallback(rv, prerr)));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEventWithCallback,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_READ_ERROR,
|
| + CreateNetLogSSLErrorCallback(rv, prerr)));
|
| }
|
| return rv;
|
| }
|
| @@ -1951,14 +1966,16 @@ int SSLClientSocketNSS::Core::DoPayloadRead() {
|
| // data was read, it's safe to return the error or EOF immediately.
|
| int total_bytes_read = 0;
|
| do {
|
| - rv = PR_Read(nss_fd_, user_read_buf_->data() + total_bytes_read,
|
| + rv = PR_Read(nss_fd_,
|
| + user_read_buf_->data() + total_bytes_read,
|
| user_read_buf_len_ - total_bytes_read);
|
| if (rv > 0)
|
| total_bytes_read += rv;
|
| } while (total_bytes_read < user_read_buf_len_ && rv > 0);
|
| int amount_in_read_buffer = memio_GetReadableBufferSize(nss_bufs_);
|
| - PostOrRunCallback(FROM_HERE, base::Bind(&Core::OnNSSBufferUpdated, this,
|
| - amount_in_read_buffer));
|
| + PostOrRunCallback(
|
| + FROM_HERE,
|
| + base::Bind(&Core::OnNSSBufferUpdated, this, amount_in_read_buffer));
|
|
|
| if (total_bytes_read == user_read_buf_len_) {
|
| // The caller's entire request was satisfied without error. No further
|
| @@ -2007,15 +2024,17 @@ int SSLClientSocketNSS::Core::DoPayloadRead() {
|
| DCHECK_NE(ERR_IO_PENDING, pending_read_result_);
|
|
|
| if (rv >= 0) {
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&LogByteTransferEvent, weak_net_log_,
|
| - NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED, rv,
|
| - scoped_refptr<IOBuffer>(user_read_buf_)));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&LogByteTransferEvent,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED,
|
| + rv,
|
| + scoped_refptr<IOBuffer>(user_read_buf_)));
|
| } else if (rv != ERR_IO_PENDING) {
|
| PostOrRunCallback(
|
| FROM_HERE,
|
| - base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
| + base::Bind(&AddLogEventWithCallback,
|
| + weak_net_log_,
|
| NetLog::TYPE_SSL_READ_ERROR,
|
| CreateNetLogSSLErrorCallback(rv, pending_read_nss_error_)));
|
| pending_read_nss_error_ = 0;
|
| @@ -2040,11 +2059,12 @@ int SSLClientSocketNSS::Core::DoPayloadWrite() {
|
| base::Bind(&Core::OnNSSBufferUpdated, this, new_amount_in_read_buffer));
|
| }
|
| if (rv >= 0) {
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&LogByteTransferEvent, weak_net_log_,
|
| - NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv,
|
| - scoped_refptr<IOBuffer>(user_write_buf_)));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&LogByteTransferEvent,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_SOCKET_BYTES_SENT,
|
| + rv,
|
| + scoped_refptr<IOBuffer>(user_write_buf_)));
|
| return rv;
|
| }
|
| PRErrorCode prerr = PR_GetError();
|
| @@ -2052,11 +2072,11 @@ int SSLClientSocketNSS::Core::DoPayloadWrite() {
|
| return ERR_IO_PENDING;
|
|
|
| rv = HandleNSSError(prerr, false);
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
| - NetLog::TYPE_SSL_WRITE_ERROR,
|
| - CreateNetLogSSLErrorCallback(rv, prerr)));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEventWithCallback,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_WRITE_ERROR,
|
| + CreateNetLogSSLErrorCallback(rv, prerr)));
|
| return rv;
|
| }
|
|
|
| @@ -2112,8 +2132,7 @@ int SSLClientSocketNSS::Core::BufferRecv() {
|
| } else {
|
| bool posted = network_task_runner_->PostTask(
|
| FROM_HERE,
|
| - base::Bind(IgnoreResult(&Core::DoBufferRecv), this, read_buffer,
|
| - nb));
|
| + base::Bind(IgnoreResult(&Core::DoBufferRecv), this, read_buffer, nb));
|
| rv = posted ? ERR_IO_PENDING : ERR_ABORTED;
|
| }
|
|
|
| @@ -2157,8 +2176,8 @@ int SSLClientSocketNSS::Core::BufferSend() {
|
| } else {
|
| bool posted = network_task_runner_->PostTask(
|
| FROM_HERE,
|
| - base::Bind(IgnoreResult(&Core::DoBufferSend), this, send_buffer,
|
| - len));
|
| + base::Bind(
|
| + IgnoreResult(&Core::DoBufferSend), this, send_buffer, len));
|
| rv = posted ? ERR_IO_PENDING : ERR_ABORTED;
|
| }
|
|
|
| @@ -2239,9 +2258,8 @@ void SSLClientSocketNSS::Core::DoConnectCallback(int rv) {
|
| DCHECK_NE(rv, ERR_IO_PENDING);
|
| DCHECK(!user_connect_callback_.is_null());
|
|
|
| - base::Closure c = base::Bind(
|
| - base::ResetAndReturn(&user_connect_callback_),
|
| - rv > OK ? OK : rv);
|
| + base::Closure c = base::Bind(base::ResetAndReturn(&user_connect_callback_),
|
| + rv > OK ? OK : rv);
|
| PostOrRunCallback(FROM_HERE, c);
|
| }
|
|
|
| @@ -2258,12 +2276,9 @@ void SSLClientSocketNSS::Core::DoReadCallback(int rv) {
|
| PostOrRunCallback(
|
| FROM_HERE,
|
| base::Bind(&Core::OnNSSBufferUpdated, this, amount_in_read_buffer));
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&Core::DidNSSRead, this, rv));
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(base::ResetAndReturn(&user_read_callback_), rv));
|
| + PostOrRunCallback(FROM_HERE, base::Bind(&Core::DidNSSRead, this, rv));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(base::ResetAndReturn(&user_read_callback_), rv));
|
| }
|
|
|
| void SSLClientSocketNSS::Core::DoWriteCallback(int rv) {
|
| @@ -2283,26 +2298,23 @@ void SSLClientSocketNSS::Core::DoWriteCallback(int rv) {
|
| PostOrRunCallback(
|
| FROM_HERE,
|
| base::Bind(&Core::OnNSSBufferUpdated, this, amount_in_read_buffer));
|
| + PostOrRunCallback(FROM_HERE, base::Bind(&Core::DidNSSWrite, this, rv));
|
| PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&Core::DidNSSWrite, this, rv));
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(base::ResetAndReturn(&user_write_callback_), rv));
|
| + FROM_HERE, base::Bind(base::ResetAndReturn(&user_write_callback_), rv));
|
| }
|
|
|
| SECStatus SSLClientSocketNSS::Core::ClientChannelIDHandler(
|
| void* arg,
|
| PRFileDesc* socket,
|
| - SECKEYPublicKey **out_public_key,
|
| - SECKEYPrivateKey **out_private_key) {
|
| + SECKEYPublicKey** out_public_key,
|
| + SECKEYPrivateKey** out_private_key) {
|
| Core* core = reinterpret_cast<Core*>(arg);
|
| DCHECK(core->OnNSSTaskRunner());
|
|
|
| - core->PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEvent, core->weak_net_log_,
|
| - NetLog::TYPE_SSL_CHANNEL_ID_REQUESTED));
|
| + core->PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEvent,
|
| + core->weak_net_log_,
|
| + NetLog::TYPE_SSL_CHANNEL_ID_REQUESTED));
|
|
|
| // We have negotiated the TLS channel ID extension.
|
| core->channel_id_xtn_negotiated_ = true;
|
| @@ -2313,9 +2325,7 @@ SECStatus SSLClientSocketNSS::Core::ClientChannelIDHandler(
|
| } else {
|
| bool posted = core->network_task_runner_->PostTask(
|
| FROM_HERE,
|
| - base::Bind(
|
| - IgnoreResult(&Core::DoGetDomainBoundCert),
|
| - core, host));
|
| + base::Bind(IgnoreResult(&Core::DoGetDomainBoundCert), core, host));
|
| error = posted ? ERR_IO_PENDING : ERR_ABORTED;
|
| }
|
|
|
| @@ -2325,10 +2335,11 @@ SECStatus SSLClientSocketNSS::Core::ClientChannelIDHandler(
|
| return SECWouldBlock;
|
| }
|
|
|
| - core->PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&BoundNetLog::EndEventWithNetErrorCode, core->weak_net_log_,
|
| - NetLog::TYPE_SSL_GET_DOMAIN_BOUND_CERT, error));
|
| + core->PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&BoundNetLog::EndEventWithNetErrorCode,
|
| + core->weak_net_log_,
|
| + NetLog::TYPE_SSL_GET_DOMAIN_BOUND_CERT,
|
| + error));
|
| SECStatus rv = SECSuccess;
|
| if (error == OK) {
|
| // Synchronous success.
|
| @@ -2348,13 +2359,10 @@ int SSLClientSocketNSS::Core::ImportChannelIDKeys(SECKEYPublicKey** public_key,
|
| SECKEYPrivateKey** key) {
|
| // Set the certificate.
|
| SECItem cert_item;
|
| - cert_item.data = (unsigned char*) domain_bound_cert_.data();
|
| + cert_item.data = (unsigned char*)domain_bound_cert_.data();
|
| cert_item.len = domain_bound_cert_.size();
|
| - ScopedCERTCertificate cert(CERT_NewTempCertificate(CERT_GetDefaultCertDB(),
|
| - &cert_item,
|
| - NULL,
|
| - PR_FALSE,
|
| - PR_TRUE));
|
| + ScopedCERTCertificate cert(CERT_NewTempCertificate(
|
| + CERT_GetDefaultCertDB(), &cert_item, NULL, PR_FALSE, PR_TRUE));
|
| if (cert == NULL)
|
| return MapNSSError(PORT_GetError());
|
|
|
| @@ -2385,48 +2393,45 @@ void SSLClientSocketNSS::Core::UpdateServerCert() {
|
| if (nss_handshake_state_.server_cert.get()) {
|
| // Since this will be called asynchronously on another thread, it needs to
|
| // own a reference to the certificate.
|
| - NetLog::ParametersCallback net_log_callback =
|
| - base::Bind(&NetLogX509CertificateCallback,
|
| - nss_handshake_state_.server_cert);
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
| - NetLog::TYPE_SSL_CERTIFICATES_RECEIVED,
|
| - net_log_callback));
|
| + NetLog::ParametersCallback net_log_callback = base::Bind(
|
| + &NetLogX509CertificateCallback, nss_handshake_state_.server_cert);
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&AddLogEventWithCallback,
|
| + weak_net_log_,
|
| + NetLog::TYPE_SSL_CERTIFICATES_RECEIVED,
|
| + net_log_callback));
|
| }
|
| }
|
|
|
| void SSLClientSocketNSS::Core::UpdateSignedCertTimestamps() {
|
| - const SECItem* signed_cert_timestamps =
|
| - SSL_PeerSignedCertTimestamps(nss_fd_);
|
| + const SECItem* signed_cert_timestamps = SSL_PeerSignedCertTimestamps(nss_fd_);
|
|
|
| if (!signed_cert_timestamps || !signed_cert_timestamps->len)
|
| return;
|
|
|
| - nss_handshake_state_.sct_list_from_tls_extension = std::string(
|
| - reinterpret_cast<char*>(signed_cert_timestamps->data),
|
| - signed_cert_timestamps->len);
|
| + nss_handshake_state_.sct_list_from_tls_extension =
|
| + std::string(reinterpret_cast<char*>(signed_cert_timestamps->data),
|
| + signed_cert_timestamps->len);
|
| }
|
|
|
| void SSLClientSocketNSS::Core::UpdateStapledOCSPResponse() {
|
| PRBool ocsp_requested = PR_FALSE;
|
| SSL_OptionGet(nss_fd_, SSL_ENABLE_OCSP_STAPLING, &ocsp_requested);
|
| - const SECItemArray* ocsp_responses =
|
| - SSL_PeerStapledOCSPResponses(nss_fd_);
|
| + const SECItemArray* ocsp_responses = SSL_PeerStapledOCSPResponses(nss_fd_);
|
| bool ocsp_responses_present = ocsp_responses && ocsp_responses->len;
|
| if (ocsp_requested)
|
| UMA_HISTOGRAM_BOOLEAN("Net.OCSPResponseStapled", ocsp_responses_present);
|
| if (!ocsp_responses_present)
|
| return;
|
|
|
| - nss_handshake_state_.stapled_ocsp_response = std::string(
|
| - reinterpret_cast<char*>(ocsp_responses->items[0].data),
|
| - ocsp_responses->items[0].len);
|
| + nss_handshake_state_.stapled_ocsp_response =
|
| + std::string(reinterpret_cast<char*>(ocsp_responses->items[0].data),
|
| + ocsp_responses->items[0].len);
|
|
|
| // TODO(agl): figure out how to plumb an OCSP response into the Mac
|
| // system library and update IsOCSPStaplingSupported for Mac.
|
| if (IsOCSPStaplingSupported()) {
|
| - #if defined(OS_WIN)
|
| +#if defined(OS_WIN)
|
| if (nss_handshake_state_.server_cert) {
|
| CRYPT_DATA_BLOB ocsp_response_blob;
|
| ocsp_response_blob.cbData = ocsp_responses->items[0].len;
|
| @@ -2437,38 +2442,37 @@ void SSLClientSocketNSS::Core::UpdateStapledOCSPResponse() {
|
| CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG,
|
| &ocsp_response_blob);
|
| if (!ok) {
|
| - VLOG(1) << "Failed to set OCSP response property: "
|
| - << GetLastError();
|
| + VLOG(1) << "Failed to set OCSP response property: " << GetLastError();
|
| }
|
| }
|
| - #elif defined(USE_NSS)
|
| +#elif defined(USE_NSS)
|
| CacheOCSPResponseFromSideChannelFunction cache_ocsp_response =
|
| GetCacheOCSPResponseFromSideChannelFunction();
|
|
|
| - cache_ocsp_response(
|
| - CERT_GetDefaultCertDB(),
|
| - nss_handshake_state_.server_cert_chain[0], PR_Now(),
|
| - &ocsp_responses->items[0], NULL);
|
| - #endif
|
| + cache_ocsp_response(CERT_GetDefaultCertDB(),
|
| + nss_handshake_state_.server_cert_chain[0],
|
| + PR_Now(),
|
| + &ocsp_responses->items[0],
|
| + NULL);
|
| +#endif
|
| } // IsOCSPStaplingSupported()
|
| }
|
|
|
| void SSLClientSocketNSS::Core::UpdateConnectionStatus() {
|
| SSLChannelInfo channel_info;
|
| - SECStatus ok = SSL_GetChannelInfo(nss_fd_,
|
| - &channel_info, sizeof(channel_info));
|
| - if (ok == SECSuccess &&
|
| - channel_info.length == sizeof(channel_info) &&
|
| + SECStatus ok =
|
| + SSL_GetChannelInfo(nss_fd_, &channel_info, sizeof(channel_info));
|
| + if (ok == SECSuccess && channel_info.length == sizeof(channel_info) &&
|
| channel_info.cipherSuite) {
|
| nss_handshake_state_.ssl_connection_status |=
|
| (static_cast<int>(channel_info.cipherSuite) &
|
| - SSL_CONNECTION_CIPHERSUITE_MASK) <<
|
| - SSL_CONNECTION_CIPHERSUITE_SHIFT;
|
| + SSL_CONNECTION_CIPHERSUITE_MASK)
|
| + << SSL_CONNECTION_CIPHERSUITE_SHIFT;
|
|
|
| nss_handshake_state_.ssl_connection_status |=
|
| (static_cast<int>(channel_info.compressionMethod) &
|
| - SSL_CONNECTION_COMPRESSION_MASK) <<
|
| - SSL_CONNECTION_COMPRESSION_SHIFT;
|
| + SSL_CONNECTION_COMPRESSION_MASK)
|
| + << SSL_CONNECTION_COMPRESSION_SHIFT;
|
|
|
| // NSS 3.14.x doesn't have a version macro for TLS 1.2 (because NSS didn't
|
| // support it yet), so use 0x0303 directly.
|
| @@ -2487,13 +2491,12 @@ void SSLClientSocketNSS::Core::UpdateConnectionStatus() {
|
| version = SSL_CONNECTION_VERSION_TLS1_2;
|
| }
|
| nss_handshake_state_.ssl_connection_status |=
|
| - (version & SSL_CONNECTION_VERSION_MASK) <<
|
| - SSL_CONNECTION_VERSION_SHIFT;
|
| + (version & SSL_CONNECTION_VERSION_MASK) << SSL_CONNECTION_VERSION_SHIFT;
|
| }
|
|
|
| PRBool peer_supports_renego_ext;
|
| - ok = SSL_HandshakeNegotiatedExtension(nss_fd_, ssl_renegotiation_info_xtn,
|
| - &peer_supports_renego_ext);
|
| + ok = SSL_HandshakeNegotiatedExtension(
|
| + nss_fd_, ssl_renegotiation_info_xtn, &peer_supports_renego_ext);
|
| if (ok == SECSuccess) {
|
| if (!peer_supports_renego_ext) {
|
| nss_handshake_state_.ssl_connection_status |=
|
| @@ -2503,8 +2506,8 @@ void SSLClientSocketNSS::Core::UpdateConnectionStatus() {
|
| VLOG(1) << "The server " << host_and_port_.ToString()
|
| << " does not support the TLS renegotiation_info extension.";
|
| }
|
| - UMA_HISTOGRAM_ENUMERATION("Net.RenegotiationExtensionSupported",
|
| - peer_supports_renego_ext, 2);
|
| + UMA_HISTOGRAM_ENUMERATION(
|
| + "Net.RenegotiationExtensionSupported", peer_supports_renego_ext, 2);
|
|
|
| // We would like to eliminate fallback to SSLv3 for non-buggy servers
|
| // because of security concerns. For example, Google offers forward
|
| @@ -2567,13 +2570,12 @@ void SSLClientSocketNSS::Core::RecordChannelIDSupportOnNSSTaskRunner() {
|
| // Copy the NSS task runner-only state to the network task runner and
|
| // log histograms from there, since the histograms also need access to the
|
| // network task runner state.
|
| - PostOrRunCallback(
|
| - FROM_HERE,
|
| - base::Bind(&Core::RecordChannelIDSupportOnNetworkTaskRunner,
|
| - this,
|
| - channel_id_xtn_negotiated_,
|
| - ssl_config_.channel_id_enabled,
|
| - crypto::ECPrivateKey::IsSupported()));
|
| + PostOrRunCallback(FROM_HERE,
|
| + base::Bind(&Core::RecordChannelIDSupportOnNetworkTaskRunner,
|
| + this,
|
| + channel_id_xtn_negotiated_,
|
| + ssl_config_.channel_id_enabled,
|
| + crypto::ECPrivateKey::IsSupported()));
|
| }
|
|
|
| void SSLClientSocketNSS::Core::RecordChannelIDSupportOnNetworkTaskRunner(
|
| @@ -2596,14 +2598,18 @@ int SSLClientSocketNSS::Core::DoBufferRecv(IOBuffer* read_buffer, int len) {
|
| return ERR_ABORTED;
|
|
|
| int rv = transport_->socket()->Read(
|
| - read_buffer, len,
|
| - base::Bind(&Core::BufferRecvComplete, base::Unretained(this),
|
| + read_buffer,
|
| + len,
|
| + base::Bind(&Core::BufferRecvComplete,
|
| + base::Unretained(this),
|
| scoped_refptr<IOBuffer>(read_buffer)));
|
|
|
| if (!OnNSSTaskRunner() && rv != ERR_IO_PENDING) {
|
| - nss_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&Core::BufferRecvComplete, this,
|
| - scoped_refptr<IOBuffer>(read_buffer), rv));
|
| + nss_task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(&Core::BufferRecvComplete,
|
| + this,
|
| + scoped_refptr<IOBuffer>(read_buffer),
|
| + rv));
|
| return rv;
|
| }
|
|
|
| @@ -2618,14 +2624,13 @@ int SSLClientSocketNSS::Core::DoBufferSend(IOBuffer* send_buffer, int len) {
|
| return ERR_ABORTED;
|
|
|
| int rv = transport_->socket()->Write(
|
| - send_buffer, len,
|
| - base::Bind(&Core::BufferSendComplete,
|
| - base::Unretained(this)));
|
| + send_buffer,
|
| + len,
|
| + base::Bind(&Core::BufferSendComplete, base::Unretained(this)));
|
|
|
| if (!OnNSSTaskRunner() && rv != ERR_IO_PENDING) {
|
| - nss_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&Core::BufferSendComplete, this, rv));
|
| + nss_task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(&Core::BufferSendComplete, this, rv));
|
| return rv;
|
| }
|
|
|
| @@ -2649,8 +2654,7 @@ int SSLClientSocketNSS::Core::DoGetDomainBoundCert(const std::string& host) {
|
|
|
| if (rv != ERR_IO_PENDING && !OnNSSTaskRunner()) {
|
| nss_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&Core::OnHandshakeIOComplete, this, rv));
|
| + FROM_HERE, base::Bind(&Core::OnHandshakeIOComplete, this, rv));
|
| return ERR_IO_PENDING;
|
| }
|
|
|
| @@ -2731,18 +2735,19 @@ void SSLClientSocketNSS::Core::OnGetDomainBoundCertComplete(int result) {
|
| OnHandshakeIOComplete(result);
|
| }
|
|
|
| -void SSLClientSocketNSS::Core::BufferRecvComplete(
|
| - IOBuffer* read_buffer,
|
| - int result) {
|
| +void SSLClientSocketNSS::Core::BufferRecvComplete(IOBuffer* read_buffer,
|
| + int result) {
|
| DCHECK(read_buffer);
|
|
|
| if (!OnNSSTaskRunner()) {
|
| if (detached_)
|
| return;
|
|
|
| - nss_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&Core::BufferRecvComplete, this,
|
| - scoped_refptr<IOBuffer>(read_buffer), result));
|
| + nss_task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(&Core::BufferRecvComplete,
|
| + this,
|
| + scoped_refptr<IOBuffer>(read_buffer),
|
| + result));
|
| return;
|
| }
|
|
|
| @@ -2767,8 +2772,7 @@ void SSLClientSocketNSS::Core::PostOrRunCallback(
|
| const base::Closure& task) {
|
| if (!OnNetworkTaskRunner()) {
|
| network_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&Core::PostOrRunCallback, this, location, task));
|
| + FROM_HERE, base::Bind(&Core::PostOrRunCallback, this, location, task));
|
| return;
|
| }
|
|
|
| @@ -2780,21 +2784,23 @@ void SSLClientSocketNSS::Core::PostOrRunCallback(
|
| void SSLClientSocketNSS::Core::AddCertProvidedEvent(int cert_count) {
|
| PostOrRunCallback(
|
| FROM_HERE,
|
| - base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
| + base::Bind(&AddLogEventWithCallback,
|
| + weak_net_log_,
|
| NetLog::TYPE_SSL_CLIENT_CERT_PROVIDED,
|
| NetLog::IntegerCallback("cert_count", cert_count)));
|
| }
|
|
|
| void SSLClientSocketNSS::Core::SetChannelIDProvided() {
|
| PostOrRunCallback(
|
| - FROM_HERE, base::Bind(&AddLogEvent, weak_net_log_,
|
| - NetLog::TYPE_SSL_CHANNEL_ID_PROVIDED));
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &AddLogEvent, weak_net_log_, NetLog::TYPE_SSL_CHANNEL_ID_PROVIDED));
|
| nss_handshake_state_.channel_id_sent = true;
|
| // Update the network task runner's view of the handshake state now that
|
| // channel id has been sent.
|
| PostOrRunCallback(
|
| - FROM_HERE, base::Bind(&Core::OnHandshakeStateUpdated, this,
|
| - nss_handshake_state_));
|
| + FROM_HERE,
|
| + base::Bind(&Core::OnHandshakeStateUpdated, this, nss_handshake_state_));
|
| }
|
|
|
| SSLClientSocketNSS::SSLClientSocketNSS(
|
| @@ -2851,8 +2857,7 @@ bool SSLClientSocketNSS::GetSSLInfo(SSLInfo* ssl_info) {
|
|
|
| AddSCTInfoToSSLInfo(ssl_info);
|
|
|
| - ssl_info->connection_status =
|
| - core_->state().ssl_connection_status;
|
| + ssl_info->connection_status = core_->state().ssl_connection_status;
|
| ssl_info->public_key_hashes = server_cert_verify_result_.public_key_hashes;
|
| ssl_info->is_issued_by_known_root =
|
| server_cert_verify_result_.is_issued_by_known_root;
|
| @@ -2861,11 +2866,11 @@ bool SSLClientSocketNSS::GetSSLInfo(SSLInfo* ssl_info) {
|
| ssl_info->channel_id_sent = WasChannelIDSent();
|
| ssl_info->pinning_failure_log = pinning_failure_log_;
|
|
|
| - PRUint16 cipher_suite = SSLConnectionStatusToCipherSuite(
|
| - core_->state().ssl_connection_status);
|
| + PRUint16 cipher_suite =
|
| + SSLConnectionStatusToCipherSuite(core_->state().ssl_connection_status);
|
| SSLCipherSuiteInfo cipher_info;
|
| - SECStatus ok = SSL_GetCipherSuiteInfo(cipher_suite,
|
| - &cipher_info, sizeof(cipher_info));
|
| + SECStatus ok =
|
| + SSL_GetCipherSuiteInfo(cipher_suite, &cipher_info, sizeof(cipher_info));
|
| if (ok == SECSuccess) {
|
| ssl_info->security_bits = cipher_info.effectiveKeyBits;
|
| } else {
|
| @@ -2874,8 +2879,9 @@ bool SSLClientSocketNSS::GetSSLInfo(SSLInfo* ssl_info) {
|
| << " for cipherSuite " << cipher_suite;
|
| }
|
|
|
| - ssl_info->handshake_type = core_->state().resumed_handshake ?
|
| - SSLInfo::HANDSHAKE_RESUME : SSLInfo::HANDSHAKE_FULL;
|
| + ssl_info->handshake_type = core_->state().resumed_handshake
|
| + ? SSLInfo::HANDSHAKE_RESUME
|
| + : SSLInfo::HANDSHAKE_FULL;
|
|
|
| LeaveFunction("");
|
| return true;
|
| @@ -2900,9 +2906,14 @@ int SSLClientSocketNSS::ExportKeyingMaterial(const base::StringPiece& label,
|
| // SSL_ExportKeyingMaterial may block the current thread if |core_| is in
|
| // the midst of a handshake.
|
| SECStatus result = SSL_ExportKeyingMaterial(
|
| - nss_fd_, label.data(), label.size(), has_context,
|
| + nss_fd_,
|
| + label.data(),
|
| + label.size(),
|
| + has_context,
|
| reinterpret_cast<const unsigned char*>(context.data()),
|
| - context.length(), out, outlen);
|
| + context.length(),
|
| + out,
|
| + outlen);
|
| if (result != SECSuccess) {
|
| LogFailedNSSFunction(net_log_, "SSL_ExportKeyingMaterial", "");
|
| return MapNSSError(PORT_GetError());
|
| @@ -2915,9 +2926,8 @@ int SSLClientSocketNSS::GetTLSUniqueChannelBinding(std::string* out) {
|
| return ERR_SOCKET_NOT_CONNECTED;
|
| unsigned char buf[64];
|
| unsigned int len;
|
| - SECStatus result = SSL_GetChannelBinding(nss_fd_,
|
| - SSL_CHANNEL_BINDING_TLS_UNIQUE,
|
| - buf, &len, arraysize(buf));
|
| + SECStatus result = SSL_GetChannelBinding(
|
| + nss_fd_, SSL_CHANNEL_BINDING_TLS_UNIQUE, buf, &len, arraysize(buf));
|
| if (result != SECSuccess) {
|
| LogFailedNSSFunction(net_log_, "SSL_GetChannelBinding", "");
|
| return MapNSSError(PORT_GetError());
|
| @@ -2926,9 +2936,9 @@ int SSLClientSocketNSS::GetTLSUniqueChannelBinding(std::string* out) {
|
| return OK;
|
| }
|
|
|
| -SSLClientSocket::NextProtoStatus
|
| -SSLClientSocketNSS::GetNextProto(std::string* proto,
|
| - std::string* server_protos) {
|
| +SSLClientSocket::NextProtoStatus SSLClientSocketNSS::GetNextProto(
|
| + std::string* proto,
|
| + std::string* server_protos) {
|
| *proto = core_->state().next_proto;
|
| *server_protos = core_->state().server_protos;
|
| return core_->state().next_proto_status;
|
| @@ -2992,7 +3002,7 @@ void SSLClientSocketNSS::Disconnect() {
|
| // Reset object state.
|
| user_connect_callback_.Reset();
|
| server_cert_verify_result_.Reset();
|
| - completed_handshake_ = false;
|
| + completed_handshake_ = false;
|
| start_cert_verification_time_ = base::TimeTicks();
|
| InitCore();
|
|
|
| @@ -3011,8 +3021,7 @@ bool SSLClientSocketNSS::IsConnected() const {
|
|
|
| bool SSLClientSocketNSS::IsConnectedAndIdle() const {
|
| EnterFunction("");
|
| - bool ret = completed_handshake_ &&
|
| - !core_->HasPendingAsyncOperation() &&
|
| + bool ret = completed_handshake_ && !core_->HasPendingAsyncOperation() &&
|
| !(core_->IsConnected() && core_->HasUnhandledReceivedData()) &&
|
| transport_->socket()->IsConnectedAndIdle();
|
| LeaveFunction("");
|
| @@ -3061,7 +3070,8 @@ bool SSLClientSocketNSS::UsingTCPFastOpen() const {
|
| return false;
|
| }
|
|
|
| -int SSLClientSocketNSS::Read(IOBuffer* buf, int buf_len,
|
| +int SSLClientSocketNSS::Read(IOBuffer* buf,
|
| + int buf_len,
|
| const CompletionCallback& callback) {
|
| DCHECK(core_.get());
|
| DCHECK(!callback.is_null());
|
| @@ -3073,7 +3083,8 @@ int SSLClientSocketNSS::Read(IOBuffer* buf, int buf_len,
|
| return rv;
|
| }
|
|
|
| -int SSLClientSocketNSS::Write(IOBuffer* buf, int buf_len,
|
| +int SSLClientSocketNSS::Write(IOBuffer* buf,
|
| + int buf_len,
|
| const CompletionCallback& callback) {
|
| DCHECK(core_.get());
|
| DCHECK(!callback.is_null());
|
| @@ -3183,7 +3194,8 @@ int SSLClientSocketNSS::InitializeSSLOptions() {
|
|
|
| for (std::vector<uint16>::const_iterator it =
|
| ssl_config_.disabled_cipher_suites.begin();
|
| - it != ssl_config_.disabled_cipher_suites.end(); ++it) {
|
| + it != ssl_config_.disabled_cipher_suites.end();
|
| + ++it) {
|
| // This will fail if the specified cipher is not implemented by NSS, but
|
| // the failure is harmless.
|
| SSL_CipherPrefSet(nss_fd_, *it, PR_FALSE);
|
| @@ -3196,8 +3208,8 @@ int SSLClientSocketNSS::InitializeSSLOptions() {
|
| net_log_, "SSL_OptionSet", "SSL_ENABLE_SESSION_TICKETS");
|
| }
|
|
|
| - rv = SSL_OptionSet(nss_fd_, SSL_ENABLE_FALSE_START,
|
| - ssl_config_.false_start_enabled);
|
| + rv = SSL_OptionSet(
|
| + nss_fd_, SSL_ENABLE_FALSE_START, ssl_config_.false_start_enabled);
|
| if (rv != SECSuccess)
|
| LogFailedNSSFunction(net_log_, "SSL_OptionSet", "SSL_ENABLE_FALSE_START");
|
|
|
| @@ -3206,11 +3218,10 @@ int SSLClientSocketNSS::InitializeSSLOptions() {
|
| // position to prevent renegotiation attacks.
|
| // http://extendedsubset.com/?p=8
|
|
|
| - rv = SSL_OptionSet(nss_fd_, SSL_ENABLE_RENEGOTIATION,
|
| - SSL_RENEGOTIATE_TRANSITIONAL);
|
| + rv = SSL_OptionSet(
|
| + nss_fd_, SSL_ENABLE_RENEGOTIATION, SSL_RENEGOTIATE_TRANSITIONAL);
|
| if (rv != SECSuccess) {
|
| - LogFailedNSSFunction(
|
| - net_log_, "SSL_OptionSet", "SSL_ENABLE_RENEGOTIATION");
|
| + LogFailedNSSFunction(net_log_, "SSL_OptionSet", "SSL_ENABLE_RENEGOTIATION");
|
| }
|
|
|
| rv = SSL_OptionSet(nss_fd_, SSL_CBC_RANDOM_IV, PR_TRUE);
|
| @@ -3221,20 +3232,21 @@ int SSLClientSocketNSS::InitializeSSLOptions() {
|
| #ifdef SSL_ENABLE_OCSP_STAPLING
|
| // Request OCSP stapling even on platforms that don't support it, in
|
| // order to extract Certificate Transparency information.
|
| - rv = SSL_OptionSet(nss_fd_, SSL_ENABLE_OCSP_STAPLING,
|
| + rv = SSL_OptionSet(nss_fd_,
|
| + SSL_ENABLE_OCSP_STAPLING,
|
| (IsOCSPStaplingSupported() ||
|
| ssl_config_.signed_cert_timestamps_enabled));
|
| if (rv != SECSuccess) {
|
| - LogFailedNSSFunction(net_log_, "SSL_OptionSet",
|
| - "SSL_ENABLE_OCSP_STAPLING");
|
| + LogFailedNSSFunction(net_log_, "SSL_OptionSet", "SSL_ENABLE_OCSP_STAPLING");
|
| }
|
| #endif
|
|
|
| - rv = SSL_OptionSet(nss_fd_, SSL_ENABLE_SIGNED_CERT_TIMESTAMPS,
|
| + rv = SSL_OptionSet(nss_fd_,
|
| + SSL_ENABLE_SIGNED_CERT_TIMESTAMPS,
|
| ssl_config_.signed_cert_timestamps_enabled);
|
| if (rv != SECSuccess) {
|
| - LogFailedNSSFunction(net_log_, "SSL_OptionSet",
|
| - "SSL_ENABLE_SIGNED_CERT_TIMESTAMPS");
|
| + LogFailedNSSFunction(
|
| + net_log_, "SSL_OptionSet", "SSL_ENABLE_SIGNED_CERT_TIMESTAMPS");
|
| }
|
|
|
| rv = SSL_OptionSet(nss_fd_, SSL_HANDSHAKE_AS_CLIENT, PR_TRUE);
|
| @@ -3269,8 +3281,8 @@ int SSLClientSocketNSS::InitializeSSLPeerName() {
|
| PRNetAddr peername;
|
| memset(&peername, 0, sizeof(peername));
|
| DCHECK_LE(static_cast<size_t>(storage.addr_len), sizeof(peername));
|
| - size_t len = std::min(static_cast<size_t>(storage.addr_len),
|
| - sizeof(peername));
|
| + size_t len =
|
| + std::min(static_cast<size_t>(storage.addr_len), sizeof(peername));
|
| memcpy(&peername, storage.addr, len);
|
|
|
| // Adjust the address family field for BSD, whose sockaddr
|
| @@ -3356,9 +3368,8 @@ int SSLClientSocketNSS::DoHandshakeLoop(int last_io_result) {
|
|
|
| int SSLClientSocketNSS::DoHandshake() {
|
| EnterFunction("");
|
| - int rv = core_->Connect(
|
| - base::Bind(&SSLClientSocketNSS::OnHandshakeIOComplete,
|
| - base::Unretained(this)));
|
| + int rv = core_->Connect(base::Bind(&SSLClientSocketNSS::OnHandshakeIOComplete,
|
| + base::Unretained(this)));
|
| GotoState(STATE_HANDSHAKE_COMPLETE);
|
|
|
| LeaveFunction(rv);
|
| @@ -3445,9 +3456,9 @@ int SSLClientSocketNSS::DoVerifyCertComplete(int result) {
|
| base::TimeDelta verify_time =
|
| base::TimeTicks::Now() - start_cert_verification_time_;
|
| if (result == OK)
|
| - UMA_HISTOGRAM_TIMES("Net.SSLCertVerificationTime", verify_time);
|
| + UMA_HISTOGRAM_TIMES("Net.SSLCertVerificationTime", verify_time);
|
| else
|
| - UMA_HISTOGRAM_TIMES("Net.SSLCertVerificationTimeError", verify_time);
|
| + UMA_HISTOGRAM_TIMES("Net.SSLCertVerificationTimeError", verify_time);
|
| }
|
|
|
| // We used to remember the intermediate CA certs in the NSS database
|
| @@ -3492,14 +3503,13 @@ int SSLClientSocketNSS::DoVerifyCertComplete(int result) {
|
| (IsCertificateError(result) && IsCertStatusMinorError(cert_status))) &&
|
| server_cert_verify_result_.is_issued_by_known_root &&
|
| TransportSecurityState::IsBuildTimely()) {
|
| - bool sni_available =
|
| - ssl_config_.version_max >= SSL_PROTOCOL_VERSION_TLS1 ||
|
| - ssl_config_.version_fallback;
|
| + bool sni_available = ssl_config_.version_max >= SSL_PROTOCOL_VERSION_TLS1 ||
|
| + ssl_config_.version_fallback;
|
| const std::string& host = host_and_port_.host();
|
|
|
| TransportSecurityState::DomainState domain_state;
|
| - if (transport_security_state_->GetDomainState(host, sni_available,
|
| - &domain_state) &&
|
| + if (transport_security_state_->GetDomainState(
|
| + host, sni_available, &domain_state) &&
|
| domain_state.HasPublicKeyPins()) {
|
| if (!domain_state.CheckPublicKeyPins(
|
| server_cert_verify_result_.public_key_hashes,
|
| @@ -3556,8 +3566,8 @@ void SSLClientSocketNSS::VerifyCT() {
|
|
|
| void SSLClientSocketNSS::LogConnectionTypeMetrics() const {
|
| UpdateConnectionTypeHistograms(CONNECTION_SSL);
|
| - int ssl_version = SSLConnectionStatusToVersion(
|
| - core_->state().ssl_connection_status);
|
| + int ssl_version =
|
| + SSLConnectionStatusToVersion(core_->state().ssl_connection_status);
|
| switch (ssl_version) {
|
| case SSL_CONNECTION_VERSION_SSL2:
|
| UpdateConnectionTypeHistograms(CONNECTION_SSL_SSL2);
|
| @@ -3592,23 +3602,25 @@ bool SSLClientSocketNSS::CalledOnValidThread() const {
|
|
|
| void SSLClientSocketNSS::AddSCTInfoToSSLInfo(SSLInfo* ssl_info) const {
|
| for (ct::SCTList::const_iterator iter =
|
| - ct_verify_result_.verified_scts.begin();
|
| - iter != ct_verify_result_.verified_scts.end(); ++iter) {
|
| + ct_verify_result_.verified_scts.begin();
|
| + iter != ct_verify_result_.verified_scts.end();
|
| + ++iter) {
|
| ssl_info->signed_certificate_timestamps.push_back(
|
| SignedCertificateTimestampAndStatus(*iter, ct::SCT_STATUS_OK));
|
| }
|
| for (ct::SCTList::const_iterator iter =
|
| - ct_verify_result_.invalid_scts.begin();
|
| - iter != ct_verify_result_.invalid_scts.end(); ++iter) {
|
| + ct_verify_result_.invalid_scts.begin();
|
| + iter != ct_verify_result_.invalid_scts.end();
|
| + ++iter) {
|
| ssl_info->signed_certificate_timestamps.push_back(
|
| SignedCertificateTimestampAndStatus(*iter, ct::SCT_STATUS_INVALID));
|
| }
|
| for (ct::SCTList::const_iterator iter =
|
| - ct_verify_result_.unknown_logs_scts.begin();
|
| - iter != ct_verify_result_.unknown_logs_scts.end(); ++iter) {
|
| + ct_verify_result_.unknown_logs_scts.begin();
|
| + iter != ct_verify_result_.unknown_logs_scts.end();
|
| + ++iter) {
|
| ssl_info->signed_certificate_timestamps.push_back(
|
| - SignedCertificateTimestampAndStatus(*iter,
|
| - ct::SCT_STATUS_LOG_UNKNOWN));
|
| + SignedCertificateTimestampAndStatus(*iter, ct::SCT_STATUS_LOG_UNKNOWN));
|
| }
|
| }
|
|
|
|
|