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