| /* |
| * 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<SSLIdentity> CloneInternal() const override; |
| |
| std::unique_ptr<SSLCertChain> cert_chain_; |
| }; |
| |
| } // namespace rtc |
| |
| #endif // RTC_BASE_FAKE_SSL_IDENTITY_H_ |