• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2012 The WebRTC Project Authors. All rights reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef RTC_BASE_FAKE_SSL_IDENTITY_H_
12 #define RTC_BASE_FAKE_SSL_IDENTITY_H_
13 
14 #include <memory>
15 #include <vector>
16 
17 #include "rtc_base/ssl_certificate.h"
18 #include "rtc_base/ssl_identity.h"
19 
20 namespace rtc {
21 
22 class FakeSSLCertificate : public SSLCertificate {
23  public:
24   // SHA-1 is the default digest algorithm because it is available in all build
25   // configurations used for unit testing.
26   explicit FakeSSLCertificate(const std::string& pem_string);
27 
28   FakeSSLCertificate(const FakeSSLCertificate&);
29   ~FakeSSLCertificate() override;
30 
31   // SSLCertificate implementation.
32   std::unique_ptr<SSLCertificate> Clone() const override;
33   std::string ToPEMString() const override;
34   void ToDER(Buffer* der_buffer) const override;
35   int64_t CertificateExpirationTime() const override;
36   bool GetSignatureDigestAlgorithm(std::string* algorithm) const override;
37   bool ComputeDigest(const std::string& algorithm,
38                      unsigned char* digest,
39                      size_t size,
40                      size_t* length) const override;
41 
42   void SetCertificateExpirationTime(int64_t expiration_time);
43 
44   void set_digest_algorithm(const std::string& algorithm);
45 
46  private:
47   std::string pem_string_;
48   std::string digest_algorithm_;
49   // Expiration time in seconds relative to epoch, 1970-01-01T00:00:00Z (UTC).
50   int64_t expiration_time_;
51 };
52 
53 class FakeSSLIdentity : public SSLIdentity {
54  public:
55   explicit FakeSSLIdentity(const std::string& pem_string);
56   // For a certificate chain.
57   explicit FakeSSLIdentity(const std::vector<std::string>& pem_strings);
58   explicit FakeSSLIdentity(const FakeSSLCertificate& cert);
59 
60   explicit FakeSSLIdentity(const FakeSSLIdentity& o);
61 
62   ~FakeSSLIdentity() override;
63 
64   // SSLIdentity implementation.
65   const SSLCertificate& certificate() const override;
66   const SSLCertChain& cert_chain() const override;
67   // Not implemented.
68   std::string PrivateKeyToPEMString() const override;
69   // Not implemented.
70   std::string PublicKeyToPEMString() const override;
71   // Not implemented.
72   virtual bool operator==(const SSLIdentity& other) const;
73 
74  private:
75   std::unique_ptr<SSLIdentity> CloneInternal() const override;
76 
77   std::unique_ptr<SSLCertChain> cert_chain_;
78 };
79 
80 }  // namespace rtc
81 
82 #endif  // RTC_BASE_FAKE_SSL_IDENTITY_H_
83