|  | /* | 
|  | *  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 <memory> | 
|  | #include <vector> | 
|  |  | 
|  | #include "rtc_base/ssl_certificate.h" | 
|  | #include "rtc_base/ssl_identity.h" | 
|  |  | 
|  | namespace rtc { | 
|  |  | 
|  | 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(const std::string& 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(const std::string& algorithm, | 
|  | unsigned char* digest, | 
|  | size_t size, | 
|  | size_t* length) const override; | 
|  |  | 
|  | void SetCertificateExpirationTime(int64_t expiration_time); | 
|  |  | 
|  | void set_digest_algorithm(const std::string& 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(const std::string& 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. | 
|  | FakeSSLIdentity* GetReference() const override; | 
|  | 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<SSLCertChain> cert_chain_; | 
|  | }; | 
|  |  | 
|  | }  // namespace rtc | 
|  |  | 
|  | #endif  // RTC_BASE_FAKE_SSL_IDENTITY_H_ |