OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 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 |
(...skipping 12 matching lines...) Expand all Loading... |
23 | 23 |
24 // SSLStreamAdapterHelper : A stream adapter which implements much | 24 // SSLStreamAdapterHelper : A stream adapter which implements much |
25 // of the logic that is common between the known implementations | 25 // of the logic that is common between the known implementations |
26 // (NSS and OpenSSL) | 26 // (NSS and OpenSSL) |
27 class SSLStreamAdapterHelper : public SSLStreamAdapter { | 27 class SSLStreamAdapterHelper : public SSLStreamAdapter { |
28 public: | 28 public: |
29 explicit SSLStreamAdapterHelper(StreamInterface* stream); | 29 explicit SSLStreamAdapterHelper(StreamInterface* stream); |
30 ~SSLStreamAdapterHelper() override; | 30 ~SSLStreamAdapterHelper() override; |
31 | 31 |
32 // Overrides of SSLStreamAdapter | 32 // Overrides of SSLStreamAdapter |
33 void SetIdentity(SSLIdentity* identity) override; | 33 void SetCertificate( |
| 34 const rtc::scoped_refptr<webrtc::DtlsCertificate>& dtlscert) override; |
34 void SetServerRole(SSLRole role = SSL_SERVER) override; | 35 void SetServerRole(SSLRole role = SSL_SERVER) override; |
35 void SetMode(SSLMode mode) override; | 36 void SetMode(SSLMode mode) override; |
36 void SetMaxProtocolVersion(SSLProtocolVersion version) override; | 37 void SetMaxProtocolVersion(SSLProtocolVersion version) override; |
37 | 38 |
38 int StartSSLWithServer(const char* server_name) override; | 39 int StartSSLWithServer(const char* server_name) override; |
39 int StartSSLWithPeer() override; | 40 int StartSSLWithPeer() override; |
40 | 41 |
41 bool SetPeerCertificateDigest(const std::string& digest_alg, | 42 bool SetPeerCertificateDigest(const std::string& digest_alg, |
42 const unsigned char* digest_val, | 43 const unsigned char* digest_val, |
43 size_t digest_len) override; | 44 size_t digest_len) override; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 SSL_CLOSED // Clean close | 81 SSL_CLOSED // Clean close |
81 }; | 82 }; |
82 | 83 |
83 // MSG_MAX is the maximum generic stream message number. | 84 // MSG_MAX is the maximum generic stream message number. |
84 enum { MSG_DTLS_TIMEOUT = MSG_MAX + 1 }; | 85 enum { MSG_DTLS_TIMEOUT = MSG_MAX + 1 }; |
85 | 86 |
86 SSLState state_; | 87 SSLState state_; |
87 SSLRole role_; | 88 SSLRole role_; |
88 int ssl_error_code_; // valid when state_ == SSL_ERROR | 89 int ssl_error_code_; // valid when state_ == SSL_ERROR |
89 | 90 |
90 // Our key and certificate, mostly useful in peer-to-peer mode. | 91 // Contains our key and certificate, mostly useful in peer-to-peer mode. |
91 scoped_ptr<SSLIdentity> identity_; | 92 scoped_refptr<webrtc::DtlsCertificate> dtlscertificate_; |
92 // in traditional mode, the server name that the server's certificate | 93 // in traditional mode, the server name that the server's certificate |
93 // must specify. Empty in peer-to-peer mode. | 94 // must specify. Empty in peer-to-peer mode. |
94 std::string ssl_server_name_; | 95 std::string ssl_server_name_; |
95 // The peer's certificate. Only used for GetPeerCertificate. | 96 // The peer's certificate. Only used for GetPeerCertificate. |
96 scoped_ptr<SSLCertificate> peer_certificate_; | 97 scoped_ptr<SSLCertificate> peer_certificate_; |
97 | 98 |
98 // The digest of the certificate that the peer must present. | 99 // The digest of the certificate that the peer must present. |
99 Buffer peer_certificate_digest_value_; | 100 Buffer peer_certificate_digest_value_; |
100 std::string peer_certificate_digest_algorithm_; | 101 std::string peer_certificate_digest_algorithm_; |
101 | 102 |
102 // Do DTLS or not | 103 // Do DTLS or not |
103 SSLMode ssl_mode_; | 104 SSLMode ssl_mode_; |
104 | 105 |
105 // Maximum allowed protocol version. | 106 // Maximum allowed protocol version. |
106 SSLProtocolVersion ssl_max_version_; | 107 SSLProtocolVersion ssl_max_version_; |
107 | 108 |
108 private: | 109 private: |
109 // Go from state SSL_NONE to either SSL_CONNECTING or SSL_WAIT, | 110 // Go from state SSL_NONE to either SSL_CONNECTING or SSL_WAIT, |
110 // depending on whether the underlying stream is already open or | 111 // depending on whether the underlying stream is already open or |
111 // not. Returns 0 on success and a negative value on error. | 112 // not. Returns 0 on success and a negative value on error. |
112 int StartSSL(); | 113 int StartSSL(); |
113 }; | 114 }; |
114 | 115 |
115 } // namespace rtc | 116 } // namespace rtc |
116 | 117 |
117 #endif // WEBRTC_BASE_SSLSTREAMADAPTERHELPER_H_ | 118 #endif // WEBRTC_BASE_SSLSTREAMADAPTERHELPER_H_ |
OLD | NEW |