xref: /aosp_15_r20/external/openscreen/cast/common/certificate/cast_trust_store.h (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
1 // Copyright 2020 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 #ifndef CAST_COMMON_CERTIFICATE_CAST_TRUST_STORE_H_
6 #define CAST_COMMON_CERTIFICATE_CAST_TRUST_STORE_H_
7 
8 #include <vector>
9 
10 #include "absl/strings/string_view.h"
11 #include "cast/common/certificate/cast_cert_validator_internal.h"
12 
13 namespace openscreen {
14 namespace cast {
15 
16 class CastTrustStore {
17  public:
18   static CastTrustStore* GetInstance();
19   static void ResetInstance();
20 
21   static CastTrustStore* CreateInstanceForTest(
22       const std::vector<uint8_t>& trust_anchor_der);
23 
24   static CastTrustStore* CreateInstanceFromPemFile(absl::string_view file_path);
25 
26   CastTrustStore();
27   explicit CastTrustStore(const std::vector<uint8_t>& trust_anchor_der);
28   explicit CastTrustStore(TrustStore trust_store);
29   CastTrustStore(const CastTrustStore&) = delete;
30   ~CastTrustStore();
31   CastTrustStore& operator=(const CastTrustStore&) = delete;
32 
trust_store()33   TrustStore* trust_store() { return &trust_store_; }
34 
35  private:
36   static CastTrustStore* store_;
37   TrustStore trust_store_;
38 };
39 
40 }  // namespace cast
41 }  // namespace openscreen
42 
43 #endif  // CAST_COMMON_CERTIFICATE_CAST_TRUST_STORE_H_
44