Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: webrtc/base/fakesslidentity.h

Issue 2877023002: Move webrtc/{base => rtc_base} (Closed)
Patch Set: update presubmit.py and DEPS include rules Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/base/fakenetwork.h ('k') | webrtc/base/file.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2012 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef WEBRTC_BASE_FAKESSLIDENTITY_H_ 11 #ifndef WEBRTC_BASE_FAKESSLIDENTITY_H_
12 #define WEBRTC_BASE_FAKESSLIDENTITY_H_ 12 #define WEBRTC_BASE_FAKESSLIDENTITY_H_
13 13
14 #include <algorithm>
15 #include <memory>
16 #include <vector>
17 14
18 #include "webrtc/base/checks.h" 15 // This header is deprecated and is just left here temporarily during
19 #include "webrtc/base/messagedigest.h" 16 // refactoring. See https://bugs.webrtc.org/7634 for more details.
20 #include "webrtc/base/sslidentity.h" 17 #include "webrtc/rtc_base/fakesslidentity.h"
21
22 namespace rtc {
23
24 class FakeSSLCertificate : public rtc::SSLCertificate {
25 public:
26 // SHA-1 is the default digest algorithm because it is available in all build
27 // configurations used for unit testing.
28 explicit FakeSSLCertificate(const std::string& data)
29 : data_(data), digest_algorithm_(DIGEST_SHA_1), expiration_time_(-1) {}
30 explicit FakeSSLCertificate(const std::vector<std::string>& certs)
31 : data_(certs.front()),
32 digest_algorithm_(DIGEST_SHA_1),
33 expiration_time_(-1) {
34 std::vector<std::string>::const_iterator it;
35 // Skip certs[0].
36 for (it = certs.begin() + 1; it != certs.end(); ++it) {
37 certs_.push_back(FakeSSLCertificate(*it));
38 }
39 }
40 FakeSSLCertificate* GetReference() const override {
41 return new FakeSSLCertificate(*this);
42 }
43 std::string ToPEMString() const override {
44 return data_;
45 }
46 void ToDER(Buffer* der_buffer) const override {
47 std::string der_string;
48 RTC_CHECK(SSLIdentity::PemToDer(kPemTypeCertificate, data_, &der_string));
49 der_buffer->SetData(der_string.c_str(), der_string.size());
50 }
51 int64_t CertificateExpirationTime() const override {
52 return expiration_time_;
53 }
54 void SetCertificateExpirationTime(int64_t expiration_time) {
55 expiration_time_ = expiration_time;
56 }
57 void set_digest_algorithm(const std::string& algorithm) {
58 digest_algorithm_ = algorithm;
59 }
60 bool GetSignatureDigestAlgorithm(std::string* algorithm) const override {
61 *algorithm = digest_algorithm_;
62 return true;
63 }
64 bool ComputeDigest(const std::string& algorithm,
65 unsigned char* digest,
66 size_t size,
67 size_t* length) const override {
68 *length = rtc::ComputeDigest(algorithm, data_.c_str(), data_.size(),
69 digest, size);
70 return (*length != 0);
71 }
72 std::unique_ptr<SSLCertChain> GetChain() const override {
73 if (certs_.empty())
74 return nullptr;
75 std::vector<SSLCertificate*> new_certs(certs_.size());
76 std::transform(certs_.begin(), certs_.end(), new_certs.begin(), DupCert);
77 std::unique_ptr<SSLCertChain> chain(new SSLCertChain(new_certs));
78 std::for_each(new_certs.begin(), new_certs.end(), DeleteCert);
79 return chain;
80 }
81
82 private:
83 static FakeSSLCertificate* DupCert(FakeSSLCertificate cert) {
84 return cert.GetReference();
85 }
86 static void DeleteCert(SSLCertificate* cert) { delete cert; }
87 std::string data_;
88 std::vector<FakeSSLCertificate> certs_;
89 std::string digest_algorithm_;
90 // Expiration time in seconds relative to epoch, 1970-01-01T00:00:00Z (UTC).
91 int64_t expiration_time_;
92 };
93
94 class FakeSSLIdentity : public rtc::SSLIdentity {
95 public:
96 explicit FakeSSLIdentity(const std::string& data) : cert_(data) {}
97 explicit FakeSSLIdentity(const FakeSSLCertificate& cert) : cert_(cert) {}
98 virtual FakeSSLIdentity* GetReference() const {
99 return new FakeSSLIdentity(*this);
100 }
101 virtual const FakeSSLCertificate& certificate() const { return cert_; }
102 virtual std::string PrivateKeyToPEMString() const {
103 RTC_NOTREACHED(); // Not implemented.
104 return "";
105 }
106 virtual std::string PublicKeyToPEMString() const {
107 RTC_NOTREACHED(); // Not implemented.
108 return "";
109 }
110 virtual bool operator==(const SSLIdentity& other) const {
111 RTC_NOTREACHED(); // Not implemented.
112 return false;
113 }
114 private:
115 FakeSSLCertificate cert_;
116 };
117
118 } // namespace rtc
119 18
120 #endif // WEBRTC_BASE_FAKESSLIDENTITY_H_ 19 #endif // WEBRTC_BASE_FAKESSLIDENTITY_H_
OLDNEW
« no previous file with comments | « webrtc/base/fakenetwork.h ('k') | webrtc/base/file.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698