blob: e3fc70697afabca797c98b8dc698bb39a1387752 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module network.mojom;
enum SSLVersion {
kTLS12,
kTLS13,
};
// Controls the named groups for key agreement configured in supported_groups
// and key_share.
enum SSLNamedGroupsPreset {
// The basic defaults for Chromium.
//
// Supported groups:
// X25519MLKEM768 (0x11EC),
// X25519 (0x001D),
// Secp256r1 (0x0017),
// Secp384r1 (0x0018).
// Key shares:
// X25519MLKEM768 (0x11EC),
// X25519 (0x001D).
kDefault,
// A non-default configuration for supported groups intended to satisfy the
// requirements of the Commercial National Security Algorithm Suite 2.0 (CNSA
// 2.0).
//
// Supported groups:
// MLKEM1024 (0x0202),
// X25519MLKEM768 (0x11EC),
// Secp384r1 (0x0018),
// Secp256r1 (0x0017),
// X25519 (0x001D).
// Key shares:
// X25519MLKEM768 (0x11EC),
// X25519 (0x001D).
kCnsa2,
};
// This is a combination of net::SSLContextConfig and
// net::CertVerifier::Config's fields. See those two classes for descriptions.
struct SSLConfig {
bool rev_checking_enabled = false;
bool rev_checking_required_local_anchors = false;
bool sha1_local_anchors_enabled = false;
// SSL 2.0/3.0 and TLS 1.0/1.1 are not supported. Note these lines must be
// kept in sync with net/ssl/ssl_config.cc.
SSLVersion version_min = kTLS12;
SSLVersion version_max = kTLS13;
// Though cipher suites are sent in TLS as "uint8_t CipherSuite[2]", in
// big-endian form, they should be declared in host byte order, with the
// first uint8_t occupying the most significant byte.
// Ex: To disable TLS_RSA_WITH_RC4_128_MD5, specify 0x0004, while to
// disable TLS_ECDH_ECDSA_WITH_RC4_128_SHA, specify 0xC002.
array<uint16> disabled_cipher_suites;
// This configures a compliance policy that sets cipher preferences for
// TLS 1.3 to prefer AES-256-GCM over AES-128-GCM over ChaCha20-Poly1305.
bool tls13_cipher_prefer_aes_256 = false;
// Patterns for matching hostnames to determine when to allow connection
// coalescing when client certificates are also in use. Patterns follow
// the rules for host matching from the URL Blocklist filter format:
// "example.com" matches "example.com" and all subdomains, while
// ".example.net" matches exactly "example.net". Hostnames must be
// canonicalized according to the rules used by GURL.
array<string> client_cert_pooling_policy;
// Controls the named groups for key agreement configured in supported_groups
// and key_share. See comments on the enum values for details of what each
// preset configures.
SSLNamedGroupsPreset named_groups_preset = kDefault;
// Controls whether post-quantum key agreement in TLS connections is allowed.
bool post_quantum_key_agreement_enabled = true;
// If false, disables TLS Encrypted ClientHello (ECH). If true, the feature
// may be enabled or disabled, depending on feature flags.
bool ech_enabled = true;
// TLS Trust Anchor IDs that are configured as trusted, each in binary
// representation.
array<array<uint8>> trust_anchor_ids;
// Merkle Tree Certificate TLS Trust Anchor IDs that are configured as
// trusted, each in binary representation.
array<array<uint8>> mtc_trust_anchor_ids;
};
// Receives SSL configuration updates.
interface SSLConfigClient {
OnSSLConfigUpdated(SSLConfig ssl_config);
};