| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "net/ssl/ssl_config.h" |
| |
| #include "net/cert/cert_verifier.h" |
| |
| namespace net { |
| |
| // Note these lines must be kept in sync with |
| // services/network/public/mojom/ssl_config.mojom. |
| const uint16_t kDefaultSSLVersionMin = SSL_PROTOCOL_VERSION_TLS1; |
| |
| const uint16_t kDefaultSSLVersionMax = SSL_PROTOCOL_VERSION_TLS1_2; |
| |
| const TLS13Variant kDefaultTLS13Variant = kTLS13VariantFinal; |
| |
| SSLConfig::CertAndStatus::CertAndStatus() = default; |
| SSLConfig::CertAndStatus::CertAndStatus(scoped_refptr<X509Certificate> cert_arg, |
| CertStatus status) |
| : cert(std::move(cert_arg)), cert_status(status) {} |
| SSLConfig::CertAndStatus::CertAndStatus(const CertAndStatus& other) = default; |
| SSLConfig::CertAndStatus::~CertAndStatus() = default; |
| |
| SSLConfig::SSLConfig() |
| : version_min(kDefaultSSLVersionMin), |
| version_max(kDefaultSSLVersionMax), |
| tls13_variant(kDefaultTLS13Variant), |
| early_data_enabled(false), |
| version_interference_probe(false), |
| channel_id_enabled(false), |
| false_start_enabled(true), |
| require_ecdhe(false), |
| disable_cert_verification_network_fetches(false), |
| send_client_cert(false), |
| renego_allowed_default(false) {} |
| |
| SSLConfig::SSLConfig(const SSLConfig& other) = default; |
| |
| SSLConfig::~SSLConfig() = default; |
| |
| bool SSLConfig::IsAllowedBadCert(X509Certificate* cert, |
| CertStatus* cert_status) const { |
| for (const auto& allowed_bad_cert : allowed_bad_certs) { |
| if (cert->EqualsExcludingChain(allowed_bad_cert.cert.get())) { |
| if (cert_status) |
| *cert_status = allowed_bad_cert.cert_status; |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| int SSLConfig::GetCertVerifyFlags() const { |
| int flags = 0; |
| if (disable_cert_verification_network_fetches) |
| flags |= CertVerifier::VERIFY_DISABLE_NETWORK_FETCHES; |
| |
| return flags; |
| } |
| |
| } // namespace net |