| /* | 
 |  *  Copyright 2012 The WebRTC Project Authors. All rights reserved. | 
 |  * | 
 |  *  Use of this source code is governed by a BSD-style license | 
 |  *  that can be found in the LICENSE file in the root of the source | 
 |  *  tree. An additional intellectual property rights grant can be found | 
 |  *  in the file PATENTS.  All contributing project authors may | 
 |  *  be found in the AUTHORS file in the root of the source tree. | 
 |  */ | 
 |  | 
 | #ifndef RTC_BASE_FAKE_SSL_IDENTITY_H_ | 
 | #define RTC_BASE_FAKE_SSL_IDENTITY_H_ | 
 |  | 
 | #include <cstddef> | 
 | #include <cstdint> | 
 | #include <memory> | 
 | #include <string> | 
 | #include <vector> | 
 |  | 
 | #include "absl/strings/string_view.h" | 
 | #include "rtc_base/buffer.h" | 
 | #include "rtc_base/ssl_certificate.h" | 
 | #include "rtc_base/ssl_identity.h" | 
 |  | 
 | namespace webrtc { | 
 |  | 
 | class FakeSSLCertificate : public SSLCertificate { | 
 |  public: | 
 |   // SHA-1 is the default digest algorithm because it is available in all build | 
 |   // configurations used for unit testing. | 
 |   explicit FakeSSLCertificate(absl::string_view pem_string); | 
 |  | 
 |   FakeSSLCertificate(const FakeSSLCertificate&); | 
 |   ~FakeSSLCertificate() override; | 
 |  | 
 |   // SSLCertificate implementation. | 
 |   std::unique_ptr<SSLCertificate> Clone() const override; | 
 |   std::string ToPEMString() const override; | 
 |   void ToDER(Buffer* der_buffer) const override; | 
 |   int64_t CertificateExpirationTime() const override; | 
 |   bool GetSignatureDigestAlgorithm(std::string* algorithm) const override; | 
 |   bool ComputeDigest(absl::string_view algorithm, | 
 |                      Buffer& digest) const override; | 
 |  | 
 |   void SetCertificateExpirationTime(int64_t expiration_time); | 
 |  | 
 |   void set_digest_algorithm(absl::string_view algorithm); | 
 |  | 
 |  private: | 
 |   std::string pem_string_; | 
 |   std::string digest_algorithm_; | 
 |   // Expiration time in seconds relative to epoch, 1970-01-01T00:00:00Z (UTC). | 
 |   int64_t expiration_time_; | 
 | }; | 
 |  | 
 | class FakeSSLIdentity : public SSLIdentity { | 
 |  public: | 
 |   explicit FakeSSLIdentity(absl::string_view pem_string); | 
 |   // For a certificate chain. | 
 |   explicit FakeSSLIdentity(const std::vector<std::string>& pem_strings); | 
 |   explicit FakeSSLIdentity(const FakeSSLCertificate& cert); | 
 |  | 
 |   explicit FakeSSLIdentity(const FakeSSLIdentity& o); | 
 |  | 
 |   ~FakeSSLIdentity() override; | 
 |  | 
 |   // SSLIdentity implementation. | 
 |   const SSLCertificate& certificate() const override; | 
 |   const SSLCertChain& cert_chain() const override; | 
 |   // Not implemented. | 
 |   std::string PrivateKeyToPEMString() const override; | 
 |   // Not implemented. | 
 |   std::string PublicKeyToPEMString() const override; | 
 |   // Not implemented. | 
 |   virtual bool operator==(const SSLIdentity& other) const; | 
 |  | 
 |  private: | 
 |   std::unique_ptr<SSLIdentity> CloneInternal() const override; | 
 |  | 
 |   std::unique_ptr<SSLCertChain> cert_chain_; | 
 | }; | 
 |  | 
 | }  //  namespace webrtc | 
 |  | 
 |  | 
 | #endif  // RTC_BASE_FAKE_SSL_IDENTITY_H_ |