blob: 726ce48f1e9b53eb14f1bf0c9762a2a3b356a9b2 [file] [log] [blame]
[email protected]c091d3602014-03-24 02:32:481// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/ssl/ssl_config.h"
6
rtenneti807f9ea2015-06-24 16:26:317#include "net/cert/cert_verifier.h"
bnc984a84a2014-12-09 19:47:588
[email protected]c091d3602014-03-24 02:32:489namespace net {
10
davidben6cacd572015-09-29 22:24:1011const uint16_t kDefaultSSLVersionMin = SSL_PROTOCOL_VERSION_TLS1;
[email protected]c091d3602014-03-24 02:32:4812
davidben6cacd572015-09-29 22:24:1013const uint16_t kDefaultSSLVersionMax = SSL_PROTOCOL_VERSION_TLS1_2;
14
rsleevi74e99742016-09-13 20:35:2515SSLConfig::CertAndStatus::CertAndStatus() = default;
16SSLConfig::CertAndStatus::CertAndStatus(scoped_refptr<X509Certificate> cert_arg,
17 CertStatus status)
18 : cert(std::move(cert_arg)), cert_status(status) {}
19SSLConfig::CertAndStatus::CertAndStatus(const CertAndStatus& other)
20 : cert(other.cert), cert_status(other.cert_status) {}
21SSLConfig::CertAndStatus::~CertAndStatus() = default;
[email protected]c091d3602014-03-24 02:32:4822
23SSLConfig::SSLConfig()
24 : rev_checking_enabled(false),
25 rev_checking_required_local_anchors(false),
rsleevif344fae12017-01-04 22:08:3926 sha1_local_anchors_enabled(true),
rsleevi0f9bfb02017-03-04 03:07:2027 common_name_fallback_local_anchors_enabled(true),
[email protected]c091d3602014-03-24 02:32:4828 version_min(kDefaultSSLVersionMin),
davidben6cacd572015-09-29 22:24:1029 version_max(kDefaultSSLVersionMax),
davidben14b1a532015-10-30 16:01:0930 deprecated_cipher_suites_enabled(false),
[email protected]c091d3602014-03-24 02:32:4831 channel_id_enabled(true),
32 false_start_enabled(true),
33 signed_cert_timestamps_enabled(true),
sergeyuff826d5e2015-05-13 20:35:2234 require_ecdhe(false),
[email protected]c091d3602014-03-24 02:32:4835 send_client_cert(false),
36 verify_ev_cert(false),
jeremyim8d44fadd2015-02-10 19:18:1537 cert_io_enabled(true),
davidben1de60e72015-07-21 21:12:2738 renego_allowed_default(false) {}
[email protected]c091d3602014-03-24 02:32:4839
vmpstracd23b72016-02-26 21:08:5540SSLConfig::SSLConfig(const SSLConfig& other) = default;
41
[email protected]c091d3602014-03-24 02:32:4842SSLConfig::~SSLConfig() {}
43
44bool SSLConfig::IsAllowedBadCert(X509Certificate* cert,
45 CertStatus* cert_status) const {
rsleevi74e99742016-09-13 20:35:2546 for (const auto& allowed_bad_cert : allowed_bad_certs) {
47 if (cert->Equals(allowed_bad_cert.cert.get())) {
[email protected]c091d3602014-03-24 02:32:4848 if (cert_status)
rsleevi74e99742016-09-13 20:35:2549 *cert_status = allowed_bad_cert.cert_status;
[email protected]c091d3602014-03-24 02:32:4850 return true;
51 }
52 }
53 return false;
54}
55
rtenneti807f9ea2015-06-24 16:26:3156int SSLConfig::GetCertVerifyFlags() const {
57 int flags = 0;
58 if (rev_checking_enabled)
59 flags |= CertVerifier::VERIFY_REV_CHECKING_ENABLED;
60 if (verify_ev_cert)
61 flags |= CertVerifier::VERIFY_EV_CERT;
62 if (cert_io_enabled)
63 flags |= CertVerifier::VERIFY_CERT_IO_ENABLED;
64 if (rev_checking_required_local_anchors)
65 flags |= CertVerifier::VERIFY_REV_CHECKING_REQUIRED_LOCAL_ANCHORS;
mattm9b3b2962016-08-15 20:54:2366 if (sha1_local_anchors_enabled)
67 flags |= CertVerifier::VERIFY_ENABLE_SHA1_LOCAL_ANCHORS;
rsleevi0f9bfb02017-03-04 03:07:2068 if (common_name_fallback_local_anchors_enabled)
69 flags |= CertVerifier::VERIFY_ENABLE_COMMON_NAME_FALLBACK_LOCAL_ANCHORS;
rtenneti807f9ea2015-06-24 16:26:3170 return flags;
71}
72
[email protected]c091d3602014-03-24 02:32:4873} // namespace net