| 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 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 ssl_(NULL), ssl_ctx_(NULL), | 291 ssl_(NULL), ssl_ctx_(NULL), |
| 292 custom_verification_succeeded_(false), | 292 custom_verification_succeeded_(false), |
| 293 ssl_mode_(SSL_MODE_TLS), | 293 ssl_mode_(SSL_MODE_TLS), |
| 294 ssl_max_version_(SSL_PROTOCOL_TLS_11) { | 294 ssl_max_version_(SSL_PROTOCOL_TLS_11) { |
| 295 } | 295 } |
| 296 | 296 |
| 297 OpenSSLStreamAdapter::~OpenSSLStreamAdapter() { | 297 OpenSSLStreamAdapter::~OpenSSLStreamAdapter() { |
| 298 Cleanup(); | 298 Cleanup(); |
| 299 } | 299 } |
| 300 | 300 |
| 301 void OpenSSLStreamAdapter::SetIdentity(SSLIdentity* identity) { | 301 void OpenSSLStreamAdapter::SetCertificate( |
| 302 ASSERT(!identity_); | 302 const scoped_refptr<webrtc::DtlsCertificate>& certificate) { |
| 303 identity_.reset(static_cast<OpenSSLIdentity*>(identity)); | 303 ASSERT(!certificate_.get()); |
| 304 certificate_ = certificate; |
| 304 } | 305 } |
| 305 | 306 |
| 306 void OpenSSLStreamAdapter::SetServerRole(SSLRole role) { | 307 void OpenSSLStreamAdapter::SetServerRole(SSLRole role) { |
| 307 role_ = role; | 308 role_ = role; |
| 308 } | 309 } |
| 309 | 310 |
| 310 bool OpenSSLStreamAdapter::GetPeerCertificate(SSLCertificate** cert) const { | 311 bool OpenSSLStreamAdapter::GetPeerCertificate(SSLCertificate** cert) const { |
| 311 if (!peer_certificate_) | 312 if (!peer_certificate_) |
| 312 return false; | 313 return false; |
| 313 | 314 |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 870 << SSL_get_error(ssl_, ret); | 871 << SSL_get_error(ssl_, ret); |
| 871 } | 872 } |
| 872 | 873 |
| 873 SSL_free(ssl_); | 874 SSL_free(ssl_); |
| 874 ssl_ = NULL; | 875 ssl_ = NULL; |
| 875 } | 876 } |
| 876 if (ssl_ctx_) { | 877 if (ssl_ctx_) { |
| 877 SSL_CTX_free(ssl_ctx_); | 878 SSL_CTX_free(ssl_ctx_); |
| 878 ssl_ctx_ = NULL; | 879 ssl_ctx_ = NULL; |
| 879 } | 880 } |
| 880 identity_.reset(); | 881 certificate_ = nullptr; |
| 881 peer_certificate_.reset(); | 882 peer_certificate_.reset(); |
| 882 | 883 |
| 883 // Clear the DTLS timer | 884 // Clear the DTLS timer |
| 884 Thread::Current()->Clear(this, MSG_TIMEOUT); | 885 Thread::Current()->Clear(this, MSG_TIMEOUT); |
| 885 } | 886 } |
| 886 | 887 |
| 887 | 888 |
| 888 void OpenSSLStreamAdapter::OnMessage(Message* msg) { | 889 void OpenSSLStreamAdapter::OnMessage(Message* msg) { |
| 889 // Process our own messages and then pass others to the superclass | 890 // Process our own messages and then pass others to the superclass |
| 890 if (MSG_TIMEOUT == msg->message_id) { | 891 if (MSG_TIMEOUT == msg->message_id) { |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 978 DTLS1_VERSION : TLS1_1_VERSION); | 979 DTLS1_VERSION : TLS1_1_VERSION); |
| 979 break; | 980 break; |
| 980 case SSL_PROTOCOL_TLS_12: | 981 case SSL_PROTOCOL_TLS_12: |
| 981 default: | 982 default: |
| 982 SSL_CTX_set_max_version(ctx, ssl_mode_ == SSL_MODE_DTLS ? | 983 SSL_CTX_set_max_version(ctx, ssl_mode_ == SSL_MODE_DTLS ? |
| 983 DTLS1_2_VERSION : TLS1_2_VERSION); | 984 DTLS1_2_VERSION : TLS1_2_VERSION); |
| 984 break; | 985 break; |
| 985 } | 986 } |
| 986 #endif | 987 #endif |
| 987 | 988 |
| 988 if (identity_ && !identity_->ConfigureIdentity(ctx)) { | 989 if (certificate_.get() && |
| 990 !static_cast<OpenSSLIdentity*>(certificate_->identity()) |
| 991 ->ConfigureIdentity(ctx)) { |
| 989 SSL_CTX_free(ctx); | 992 SSL_CTX_free(ctx); |
| 990 return NULL; | 993 return NULL; |
| 991 } | 994 } |
| 992 | 995 |
| 993 #ifdef _DEBUG | 996 #ifdef _DEBUG |
| 994 SSL_CTX_set_info_callback(ctx, OpenSSLAdapter::SSLInfoCallback); | 997 SSL_CTX_set_info_callback(ctx, OpenSSLAdapter::SSLInfoCallback); |
| 995 #endif | 998 #endif |
| 996 | 999 |
| 997 int mode = SSL_VERIFY_PEER; | 1000 int mode = SSL_VERIFY_PEER; |
| 998 if (client_auth_enabled()) { | 1001 if (client_auth_enabled()) { |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1163 #endif | 1166 #endif |
| 1164 } | 1167 } |
| 1165 } else { | 1168 } else { |
| 1166 return std::string(); | 1169 return std::string(); |
| 1167 } | 1170 } |
| 1168 } | 1171 } |
| 1169 | 1172 |
| 1170 } // namespace rtc | 1173 } // namespace rtc |
| 1171 | 1174 |
| 1172 #endif // HAVE_OPENSSL_SSL_H | 1175 #endif // HAVE_OPENSSL_SSL_H |
| OLD | NEW |