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

Unified Diff: webrtc/p2p/base/dtlstransport.h

Issue 1312643004: Replaces SSLIdentity* with scoped_refptr<RTCCertificate> in cricket::Transport layer. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: certificate_for_testing() Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « talk/session/media/channel_unittest.cc ('k') | webrtc/p2p/base/dtlstransportchannel_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/p2p/base/dtlstransport.h
diff --git a/webrtc/p2p/base/dtlstransport.h b/webrtc/p2p/base/dtlstransport.h
index 27cece49d04ea9cfe328ad0084eca36a7b967f93..0c53ff9c5b61c4c9f0a1c143ce47557a12ab24bb 100644
--- a/webrtc/p2p/base/dtlstransport.h
+++ b/webrtc/p2p/base/dtlstransport.h
@@ -11,6 +11,7 @@
#ifndef WEBRTC_P2P_BASE_DTLSTRANSPORT_H_
#define WEBRTC_P2P_BASE_DTLSTRANSPORT_H_
+#include "webrtc/base/checks.h"
#include "webrtc/p2p/base/dtlstransportchannel.h"
#include "webrtc/p2p/base/transport.h"
@@ -23,6 +24,7 @@ namespace cricket {
class PortAllocator;
// Base should be a descendant of cricket::Transport
+// TODO(hbos): Add appropriate DCHECK thread checks to all methods.
template<class Base>
class DtlsTransport : public Base {
public:
@@ -30,9 +32,9 @@ class DtlsTransport : public Base {
rtc::Thread* worker_thread,
const std::string& content_name,
PortAllocator* allocator,
- rtc::SSLIdentity* identity)
+ const rtc::scoped_refptr<rtc::RTCCertificate>& certificate)
: Base(signaling_thread, worker_thread, content_name, allocator),
- identity_(identity),
+ certificate_(certificate),
secure_role_(rtc::SSL_CLIENT),
ssl_max_version_(rtc::SSL_PROTOCOL_DTLS_10) {
}
@@ -40,33 +42,39 @@ class DtlsTransport : public Base {
~DtlsTransport() {
Base::DestroyAllChannels();
}
- virtual void SetIdentity_w(rtc::SSLIdentity* identity) {
- identity_ = identity;
+ void SetCertificate_w(
+ const rtc::scoped_refptr<rtc::RTCCertificate>& certificate) override {
+ DCHECK(Base::worker_thread()->IsCurrent());
+ certificate_ = certificate;
}
- virtual bool GetIdentity_w(rtc::SSLIdentity** identity) {
- if (!identity_)
+ bool GetCertificate_w(
+ rtc::scoped_refptr<rtc::RTCCertificate>* certificate) override {
+ DCHECK(Base::worker_thread()->IsCurrent());
+ if (!certificate_)
return false;
- *identity = identity_->GetReference();
+ *certificate = certificate_;
return true;
}
virtual bool SetSslMaxProtocolVersion_w(rtc::SSLProtocolVersion version) {
+ DCHECK(Base::worker_thread()->IsCurrent());
ssl_max_version_ = version;
return true;
}
virtual bool ApplyLocalTransportDescription_w(TransportChannelImpl* channel,
std::string* error_desc) {
+ DCHECK(Base::worker_thread()->IsCurrent());
rtc::SSLFingerprint* local_fp =
Base::local_description()->identity_fingerprint.get();
if (local_fp) {
// Sanity check local fingerprint.
- if (identity_) {
+ if (certificate_) {
rtc::scoped_ptr<rtc::SSLFingerprint> local_fp_tmp(
rtc::SSLFingerprint::Create(local_fp->algorithm,
- identity_));
+ certificate_->identity()));
ASSERT(local_fp_tmp.get() != NULL);
if (!(*local_fp_tmp == *local_fp)) {
std::ostringstream desc;
@@ -81,10 +89,12 @@ class DtlsTransport : public Base {
error_desc);
}
} else {
- identity_ = NULL;
+ certificate_ = nullptr;
}
- if (!channel->SetLocalIdentity(identity_)) {
+ // TODO(hbos): SetLocalCertificate
+ if (!channel->SetLocalIdentity(
+ certificate_ ? certificate_->identity() : nullptr)) {
return BadTransportDescription("Failed to set local identity.",
error_desc);
}
@@ -95,6 +105,7 @@ class DtlsTransport : public Base {
virtual bool NegotiateTransportDescription_w(ContentAction local_role,
std::string* error_desc) {
+ DCHECK(Base::worker_thread()->IsCurrent());
if (!Base::local_description() || !Base::remote_description()) {
const std::string msg = "Local and Remote description must be set before "
"transport descriptions are negotiated";
@@ -211,6 +222,7 @@ class DtlsTransport : public Base {
}
virtual bool GetSslRole_w(rtc::SSLRole* ssl_role) const {
+ DCHECK(Base::worker_thread()->IsCurrent());
ASSERT(ssl_role != NULL);
*ssl_role = secure_role_;
return true;
@@ -220,6 +232,7 @@ class DtlsTransport : public Base {
virtual bool ApplyNegotiatedTransportDescription_w(
TransportChannelImpl* channel,
std::string* error_desc) {
+ DCHECK(Base::worker_thread()->IsCurrent());
// Set ssl role. Role must be set before fingerprint is applied, which
// initiates DTLS setup.
if (!channel->SetSslRole(secure_role_)) {
@@ -237,7 +250,7 @@ class DtlsTransport : public Base {
return Base::ApplyNegotiatedTransportDescription_w(channel, error_desc);
}
- rtc::SSLIdentity* identity_;
+ rtc::scoped_refptr<rtc::RTCCertificate> certificate_;
rtc::SSLRole secure_role_;
rtc::SSLProtocolVersion ssl_max_version_;
rtc::scoped_ptr<rtc::SSLFingerprint> remote_fingerprint_;
« no previous file with comments | « talk/session/media/channel_unittest.cc ('k') | webrtc/p2p/base/dtlstransportchannel_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698