// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_CERT_TEST_ROOT_CERTS_H_ #define NET_CERT_TEST_ROOT_CERTS_H_ #include <set> #include "base/containers/span.h" #include "base/lazy_instance.h" #include "base/memory/scoped_refptr.h" #include "build/build_config.h" #include "net/base/net_export.h" #include "third_party/boringssl/src/pki/trust_store.h" #include "third_party/boringssl/src/pki/trust_store_in_memory.h" #if BUILDFLAG(IS_IOS) #include <CoreFoundation/CFArray.h> #include <Security/SecTrust.h> #include "base/apple/scoped_cftyperef.h" #endif namespace net { class X509Certificate; CertificateList; // TestRootCerts is a helper class for unit tests that is used to // artificially mark a certificate as trusted, independent of the local // machine configuration. // // Test roots can be added using the ScopedTestRoot class below. See the // class documentation for usage and limitations. class NET_EXPORT TestRootCerts { … }; // Scoped helper for unittests to handle safely managing trusted roots. // // Limitations: // Multiple instances of ScopedTestRoot may be created at once, which will // trust the union of the certs provided. However, when one of the // ScopedTestRoot instances removes its trust, either by going out of scope, or // by Reset() being called, *all* test root certs will be untrusted. (This // limitation could be removed if a reason arises.) class NET_EXPORT ScopedTestRoot { … }; // Scoped helper for unittests to handle safely marking additional roots as // known roots. Note that this does not trust the root. If the root should be // trusted, a ScopedTestRoot should also be created. // // Limitations: // Same as for ScopedTestRoot, see comment above. class NET_EXPORT ScopedTestKnownRoot { … }; } // namespace net #endif // NET_CERT_TEST_ROOT_CERTS_H_