Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(257)

Side by Side Diff: net/socket/ssl_client_socket_openssl.cc

Issue 949633002: Include both certificate chains in invalid cert reporting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add a comment to cert logger pb Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 NOTREACHED(); 621 NOTREACHED();
622 return false; 622 return false;
623 } 623 }
624 624
625 bool SSLClientSocketOpenSSL::GetSSLInfo(SSLInfo* ssl_info) { 625 bool SSLClientSocketOpenSSL::GetSSLInfo(SSLInfo* ssl_info) {
626 ssl_info->Reset(); 626 ssl_info->Reset();
627 if (server_cert_chain_->empty()) 627 if (server_cert_chain_->empty())
628 return false; 628 return false;
629 629
630 ssl_info->cert = server_cert_verify_result_.verified_cert; 630 ssl_info->cert = server_cert_verify_result_.verified_cert;
631 ssl_info->unverified_server_cert =
632 server_cert_verify_result_.unverified_server_cert;
631 ssl_info->cert_status = server_cert_verify_result_.cert_status; 633 ssl_info->cert_status = server_cert_verify_result_.cert_status;
632 ssl_info->is_issued_by_known_root = 634 ssl_info->is_issued_by_known_root =
633 server_cert_verify_result_.is_issued_by_known_root; 635 server_cert_verify_result_.is_issued_by_known_root;
634 ssl_info->public_key_hashes = 636 ssl_info->public_key_hashes =
635 server_cert_verify_result_.public_key_hashes; 637 server_cert_verify_result_.public_key_hashes;
636 ssl_info->client_cert_sent = 638 ssl_info->client_cert_sent =
637 ssl_config_.send_client_cert && ssl_config_.client_cert.get(); 639 ssl_config_.send_client_cert && ssl_config_.client_cert.get();
638 ssl_info->channel_id_sent = WasChannelIDSent(); 640 ssl_info->channel_id_sent = WasChannelIDSent();
639 ssl_info->pinning_failure_log = pinning_failure_log_; 641 ssl_info->pinning_failure_log = pinning_failure_log_;
640 642
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
1153 if (!x509_util::GetDER(server_cert_chain_->Get(0), &der_cert)) { 1155 if (!x509_util::GetDER(server_cert_chain_->Get(0), &der_cert)) {
1154 NOTREACHED(); 1156 NOTREACHED();
1155 return ERR_CERT_INVALID; 1157 return ERR_CERT_INVALID;
1156 } 1158 }
1157 CertStatus cert_status; 1159 CertStatus cert_status;
1158 if (ssl_config_.IsAllowedBadCert(der_cert, &cert_status)) { 1160 if (ssl_config_.IsAllowedBadCert(der_cert, &cert_status)) {
1159 VLOG(1) << "Received an expected bad cert with status: " << cert_status; 1161 VLOG(1) << "Received an expected bad cert with status: " << cert_status;
1160 server_cert_verify_result_.Reset(); 1162 server_cert_verify_result_.Reset();
1161 server_cert_verify_result_.cert_status = cert_status; 1163 server_cert_verify_result_.cert_status = cert_status;
1162 server_cert_verify_result_.verified_cert = server_cert_; 1164 server_cert_verify_result_.verified_cert = server_cert_;
1165 server_cert_verify_result_.unverified_server_cert = server_cert_;
1163 return OK; 1166 return OK;
1164 } 1167 }
1165 1168
1166 // When running in a sandbox, it may not be possible to create an 1169 // When running in a sandbox, it may not be possible to create an
1167 // X509Certificate*, as that may depend on OS functionality blocked 1170 // X509Certificate*, as that may depend on OS functionality blocked
1168 // in the sandbox. 1171 // in the sandbox.
1169 if (!server_cert_.get()) { 1172 if (!server_cert_.get()) {
1170 server_cert_verify_result_.Reset(); 1173 server_cert_verify_result_.Reset();
1171 server_cert_verify_result_.cert_status = CERT_STATUS_INVALID; 1174 server_cert_verify_result_.cert_status = CERT_STATUS_INVALID;
1172 return ERR_CERT_INVALID; 1175 return ERR_CERT_INVALID;
(...skipping 847 matching lines...) Expand 10 before | Expand all | Expand 10 after
2020 } 2023 }
2021 for (ct::SCTList::const_iterator iter = 2024 for (ct::SCTList::const_iterator iter =
2022 ct_verify_result_.unknown_logs_scts.begin(); 2025 ct_verify_result_.unknown_logs_scts.begin();
2023 iter != ct_verify_result_.unknown_logs_scts.end(); ++iter) { 2026 iter != ct_verify_result_.unknown_logs_scts.end(); ++iter) {
2024 ssl_info->signed_certificate_timestamps.push_back( 2027 ssl_info->signed_certificate_timestamps.push_back(
2025 SignedCertificateTimestampAndStatus(*iter, 2028 SignedCertificateTimestampAndStatus(*iter,
2026 ct::SCT_STATUS_LOG_UNKNOWN)); 2029 ct::SCT_STATUS_LOG_UNKNOWN));
2027 } 2030 }
2028 } 2031 }
2029 2032
2030 scoped_refptr<X509Certificate>
2031 SSLClientSocketOpenSSL::GetUnverifiedServerCertificateChain() const {
2032 return server_cert_;
2033 }
2034
2035 } // namespace net 2033 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698