// 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; // 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 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 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; // 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> trust_anchor_ids; // Merkle Tree Certificate TLS Trust Anchor IDs that are configured as // trusted, each in binary representation. array> mtc_trust_anchor_ids; // The time (represented as seconds since the unix epoch) that the latest // MtcMetadata was generated. See also MtcMetadata.update_time_seconds in // net/cert/root_store.proto. int64 mtc_update_time_seconds; }; // Receives SSL configuration updates. interface SSLConfigClient { OnSSLConfigUpdated(SSLConfig ssl_config); };