summaryrefslogtreecommitdiff
path: root/chromium/net/dns/esni_content.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/dns/esni_content.h')
-rw-r--r--chromium/net/dns/esni_content.h84
1 files changed, 0 insertions, 84 deletions
diff --git a/chromium/net/dns/esni_content.h b/chromium/net/dns/esni_content.h
deleted file mode 100644
index 8c6a8e0d0cc..00000000000
--- a/chromium/net/dns/esni_content.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2019 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.
-
-#ifndef NET_DNS_ESNI_CONTENT_H_
-#define NET_DNS_ESNI_CONTENT_H_
-
-#include <map>
-#include <set>
-#include <string>
-
-#include "base/strings/string_piece.h"
-#include "net/base/ip_address.h"
-#include "net/base/net_export.h"
-
-namespace net {
-
-// An EsniContent struct represents an aggregation of the
-// content of several ESNI (TLS 1.3 Encrypted Server Name Indication,
-// draft 4) resource records.
-//
-// This aggregation contains:
-// (1) The ESNI key objects from each of the ESNI records, and
-// (2) A collection of IP addresses, each of which is associated
-// with one or more of the key objects. (Each key will likely also
-// be associated with several destination addresses.)
-class NET_EXPORT EsniContent {
- public:
- EsniContent();
- EsniContent(const EsniContent& other);
- EsniContent(EsniContent&& other);
- EsniContent& operator=(const EsniContent& other);
- EsniContent& operator=(EsniContent&& other);
- ~EsniContent();
-
- // Key objects (which might be up to ~50K in length) are stored
- // in a collection of std::string; use transparent comparison
- // to allow checking whether a given base::StringPiece is in
- // the collection without making copies.
- struct StringPieceComparator {
- using is_transparent = int;
-
- bool operator()(const base::StringPiece lhs,
- const base::StringPiece rhs) const {
- return lhs < rhs;
- }
- };
-
- const std::set<std::string, StringPieceComparator>& keys() const;
- const std::map<IPAddress, std::set<base::StringPiece>>& keys_for_addresses()
- const;
-
- // Adds |key| (if it is not already stored) without associating it
- // with any particular addresss; if this addition is performed, it
- // copies the underlying string.
- void AddKey(base::StringPiece key);
-
- // Associates a key with an address, copying the underlying string to
- // the internal collection of keys if it is not already stored.
- void AddKeyForAddress(const IPAddress& address, base::StringPiece key);
-
- // Merges the contents of |other|:
- // 1. unions the collection of stored keys with |other.keys()| and
- // 2. unions the stored address-key associations with
- // |other.keys_for_addresses()|.
- void MergeFrom(const EsniContent& other);
-
- private:
- // In order to keep the StringPieces in |keys_for_addresses_| valid,
- // |keys_| must be of a collection type guaranteeing stable pointers.
- std::set<std::string, StringPieceComparator> keys_;
-
- std::map<IPAddress, std::set<base::StringPiece>> keys_for_addresses_;
-};
-
-// Two EsniContent structs are equal if they have the same set of keys, the
-// same set of IP addresses, and the same subset of the keys corresponding to
-// each IP address.
-NET_EXPORT_PRIVATE
-bool operator==(const EsniContent& c1, const EsniContent& c2);
-
-} // namespace net
-
-#endif // NET_DNS_ESNI_CONTENT_H_