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

Side by Side Diff: webrtc/base/sslstreamadapterhelper.cc

Issue 1820023004: Remove all uses of the HAVE_CONFIG_H define. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased Created 4 years, 8 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/sslstreamadapter.cc ('k') | webrtc/libjingle/xmpp/xmppsocket.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2004 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
12 #include <vector>
13
14 #include "webrtc/base/sslstreamadapterhelper.h"
15
16 #include "webrtc/base/common.h"
17 #include "webrtc/base/logging.h"
18 #include "webrtc/base/stream.h"
19
20 namespace rtc {
21
22 SSLStreamAdapterHelper::SSLStreamAdapterHelper(StreamInterface* stream)
23 : SSLStreamAdapter(stream),
24 state_(SSL_NONE),
25 role_(SSL_CLIENT),
26 ssl_error_code_(0), // Not meaningful yet
27 ssl_mode_(SSL_MODE_TLS),
28 ssl_max_version_(SSL_PROTOCOL_TLS_12) {}
29
30 SSLStreamAdapterHelper::~SSLStreamAdapterHelper() = default;
31
32 void SSLStreamAdapterHelper::SetIdentity(SSLIdentity* identity) {
33 ASSERT(identity_.get() == NULL);
34 identity_.reset(identity);
35 }
36
37 void SSLStreamAdapterHelper::SetServerRole(SSLRole role) {
38 role_ = role;
39 }
40
41 int SSLStreamAdapterHelper::StartSSLWithServer(const char* server_name) {
42 ASSERT(server_name != NULL && server_name[0] != '\0');
43 ssl_server_name_ = server_name;
44 return StartSSL();
45 }
46
47 int SSLStreamAdapterHelper::StartSSLWithPeer() {
48 ASSERT(ssl_server_name_.empty());
49 // It is permitted to specify peer_certificate_ only later.
50 return StartSSL();
51 }
52
53 void SSLStreamAdapterHelper::SetMode(SSLMode mode) {
54 ASSERT(state_ == SSL_NONE);
55 ssl_mode_ = mode;
56 }
57
58 void SSLStreamAdapterHelper::SetMaxProtocolVersion(SSLProtocolVersion version) {
59 ssl_max_version_ = version;
60 }
61
62 StreamState SSLStreamAdapterHelper::GetState() const {
63 switch (state_) {
64 case SSL_WAIT:
65 case SSL_CONNECTING:
66 return SS_OPENING;
67 case SSL_CONNECTED:
68 return SS_OPEN;
69 default:
70 return SS_CLOSED;
71 };
72 // not reached
73 }
74
75 bool SSLStreamAdapterHelper::GetPeerCertificate(SSLCertificate** cert) const {
76 if (!peer_certificate_)
77 return false;
78
79 *cert = peer_certificate_->GetReference();
80 return true;
81 }
82
83 bool SSLStreamAdapterHelper::SetPeerCertificateDigest(
84 const std::string &digest_alg,
85 const unsigned char* digest_val,
86 size_t digest_len) {
87 ASSERT(peer_certificate_.get() == NULL);
88 ASSERT(peer_certificate_digest_algorithm_.empty());
89 ASSERT(ssl_server_name_.empty());
90 size_t expected_len;
91
92 if (!GetDigestLength(digest_alg, &expected_len)) {
93 LOG(LS_WARNING) << "Unknown digest algorithm: " << digest_alg;
94 return false;
95 }
96 if (expected_len != digest_len)
97 return false;
98
99 peer_certificate_digest_value_.SetData(digest_val, digest_len);
100 peer_certificate_digest_algorithm_ = digest_alg;
101
102 return true;
103 }
104
105 void SSLStreamAdapterHelper::Error(const char* context, int err, bool signal) {
106 LOG(LS_WARNING) << "SSLStreamAdapterHelper::Error("
107 << context << ", " << err << "," << signal << ")";
108 state_ = SSL_ERROR;
109 ssl_error_code_ = err;
110 Cleanup();
111 if (signal)
112 StreamAdapterInterface::OnEvent(stream(), SE_CLOSE, err);
113 }
114
115 void SSLStreamAdapterHelper::Close() {
116 Cleanup();
117 ASSERT(state_ == SSL_CLOSED || state_ == SSL_ERROR);
118 StreamAdapterInterface::Close();
119 }
120
121 int SSLStreamAdapterHelper::StartSSL() {
122 ASSERT(state_ == SSL_NONE);
123
124 if (StreamAdapterInterface::GetState() != SS_OPEN) {
125 state_ = SSL_WAIT;
126 return 0;
127 }
128
129 state_ = SSL_CONNECTING;
130 int err = BeginSSL();
131 if (err) {
132 Error("BeginSSL", err, false);
133 return err;
134 }
135
136 return 0;
137 }
138
139 } // namespace rtc
140
OLDNEW
« no previous file with comments | « webrtc/base/sslstreamadapter.cc ('k') | webrtc/libjingle/xmpp/xmppsocket.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698