Index: webrtc/p2p/base/dtlstransportchannel_unittest.cc |
diff --git a/webrtc/p2p/base/dtlstransportchannel_unittest.cc b/webrtc/p2p/base/dtlstransportchannel_unittest.cc |
index 26f6578d7b0c6e5c77775f6f085d8c19d5187173..34aa651af7ee6c69e2fe910bede4db874a6ba728 100644 |
--- a/webrtc/p2p/base/dtlstransportchannel_unittest.cc |
+++ b/webrtc/p2p/base/dtlstransportchannel_unittest.cc |
@@ -58,12 +58,16 @@ class DtlsTestClient : public sigslot::has_slots<> { |
received_dtls_client_hello_(false), |
received_dtls_server_hello_(false) { |
} |
- void CreateIdentity(rtc::KeyType key_type) { |
- identity_.reset(rtc::SSLIdentity::Generate(name_, key_type)); |
+ void CreateCertificate(rtc::KeyType key_type) { |
+ certificate_ = rtc::RTCCertificate::Create( |
+ rtc::scoped_ptr<rtc::SSLIdentity>( |
+ rtc::SSLIdentity::Generate(name_, key_type)).Pass()); |
+ } |
+ const rtc::scoped_refptr<rtc::RTCCertificate>& certificate() { |
+ return certificate_; |
} |
- rtc::SSLIdentity* identity() { return identity_.get(); } |
void SetupSrtp() { |
- ASSERT(identity_.get() != NULL); |
+ ASSERT(certificate_); |
use_dtls_srtp_ = true; |
} |
void SetupMaxProtocolVersion(rtc::SSLProtocolVersion version) { |
@@ -72,8 +76,8 @@ class DtlsTestClient : public sigslot::has_slots<> { |
} |
void SetupChannels(int count, cricket::IceRole role) { |
transport_.reset(new cricket::DtlsTransport<cricket::FakeTransport>( |
- signaling_thread_, worker_thread_, "dtls content name", NULL, |
- identity_.get())); |
+ signaling_thread_, worker_thread_, "dtls content name", nullptr, |
+ certificate_)); |
transport_->SetAsync(true); |
transport_->SetIceRole(role); |
transport_->SetIceTiebreaker( |
@@ -114,36 +118,36 @@ class DtlsTestClient : public sigslot::has_slots<> { |
void Negotiate(DtlsTestClient* peer, cricket::ContentAction action, |
ConnectionRole local_role, ConnectionRole remote_role, |
int flags) { |
- Negotiate(identity_.get(), (identity_) ? peer->identity_.get() : NULL, |
+ Negotiate(certificate_, certificate_ ? peer->certificate_ : nullptr, |
action, local_role, remote_role, flags); |
} |
// Allow any DTLS configuration to be specified (including invalid ones). |
- void Negotiate(rtc::SSLIdentity* local_identity, |
- rtc::SSLIdentity* remote_identity, |
+ void Negotiate(const rtc::scoped_refptr<rtc::RTCCertificate>& local_cert, |
+ const rtc::scoped_refptr<rtc::RTCCertificate>& remote_cert, |
cricket::ContentAction action, |
ConnectionRole local_role, |
ConnectionRole remote_role, |
int flags) { |
rtc::scoped_ptr<rtc::SSLFingerprint> local_fingerprint; |
rtc::scoped_ptr<rtc::SSLFingerprint> remote_fingerprint; |
- if (local_identity) { |
+ if (local_cert) { |
std::string digest_algorithm; |
- ASSERT_TRUE(local_identity->certificate().GetSignatureDigestAlgorithm( |
+ ASSERT_TRUE(local_cert->ssl_certificate().GetSignatureDigestAlgorithm( |
&digest_algorithm)); |
ASSERT_FALSE(digest_algorithm.empty()); |
local_fingerprint.reset(rtc::SSLFingerprint::Create( |
- digest_algorithm, local_identity)); |
+ digest_algorithm, local_cert->identity())); |
ASSERT_TRUE(local_fingerprint.get() != NULL); |
EXPECT_EQ(rtc::DIGEST_SHA_256, digest_algorithm); |
} |
- if (remote_identity) { |
+ if (remote_cert) { |
std::string digest_algorithm; |
- ASSERT_TRUE(remote_identity->certificate().GetSignatureDigestAlgorithm( |
+ ASSERT_TRUE(remote_cert->ssl_certificate().GetSignatureDigestAlgorithm( |
&digest_algorithm)); |
ASSERT_FALSE(digest_algorithm.empty()); |
remote_fingerprint.reset(rtc::SSLFingerprint::Create( |
- digest_algorithm, remote_identity)); |
+ digest_algorithm, remote_cert->identity())); |
ASSERT_TRUE(remote_fingerprint.get() != NULL); |
EXPECT_EQ(rtc::DIGEST_SHA_256, digest_algorithm); |
} |
@@ -163,7 +167,7 @@ class DtlsTestClient : public sigslot::has_slots<> { |
cricket::ICEMODE_FULL, local_role, |
// If remote if the offerer and has no DTLS support, answer will be |
// without any fingerprint. |
- (action == cricket::CA_ANSWER && !remote_identity) ? |
+ (action == cricket::CA_ANSWER && !remote_cert) ? |
NULL : local_fingerprint.get(), |
cricket::Candidates()); |
@@ -186,7 +190,7 @@ class DtlsTestClient : public sigslot::has_slots<> { |
ASSERT_EQ(expect_success, transport_->SetLocalTransportDescription( |
local_desc, cricket::CA_ANSWER, NULL)); |
} |
- negotiated_dtls_ = (local_identity && remote_identity); |
+ negotiated_dtls_ = (local_cert && remote_cert); |
} |
bool Connect(DtlsTestClient* peer) { |
@@ -252,7 +256,7 @@ class DtlsTestClient : public sigslot::has_slots<> { |
static_cast<uint32>(sent)); |
// Only set the bypass flag if we've activated DTLS. |
- int flags = (identity_.get() && srtp) ? cricket::PF_SRTP_BYPASS : 0; |
+ int flags = (certificate_ && srtp) ? cricket::PF_SRTP_BYPASS : 0; |
rtc::PacketOptions packet_options; |
int rv = channels_[channel]->SendPacket( |
packet.get(), size, packet_options, flags); |
@@ -333,7 +337,7 @@ class DtlsTestClient : public sigslot::has_slots<> { |
ASSERT_TRUE(VerifyPacket(data, size, &packet_num)); |
received_.insert(packet_num); |
// Only DTLS-SRTP packets should have the bypass flag set. |
- int expected_flags = (identity_.get() && IsRtpLeadByte(data[0])) ? |
+ int expected_flags = (certificate_ && IsRtpLeadByte(data[0])) ? |
cricket::PF_SRTP_BYPASS : 0; |
ASSERT_EQ(expected_flags, flags); |
} |
@@ -370,7 +374,7 @@ class DtlsTestClient : public sigslot::has_slots<> { |
std::string name_; |
rtc::Thread* signaling_thread_; |
rtc::Thread* worker_thread_; |
- rtc::scoped_ptr<rtc::SSLIdentity> identity_; |
+ rtc::scoped_refptr<rtc::RTCCertificate> certificate_; |
rtc::scoped_ptr<cricket::FakeTransport> transport_; |
std::vector<cricket::DtlsTransportChannelWrapper*> channels_; |
size_t packet_size_; |
@@ -407,10 +411,10 @@ class DtlsTransportChannelTest : public testing::Test { |
} |
void PrepareDtls(bool c1, bool c2, rtc::KeyType key_type) { |
if (c1) { |
- client1_.CreateIdentity(key_type); |
+ client1_.CreateCertificate(key_type); |
} |
if (c2) { |
- client2_.CreateIdentity(key_type); |
+ client2_.CreateCertificate(key_type); |
} |
if (c1 && c2) |
use_dtls_ = true; |
@@ -826,17 +830,17 @@ TEST_F(DtlsTransportChannelTest, TestCertificatesBeforeConnect) { |
PrepareDtls(true, true, rtc::KT_DEFAULT); |
Negotiate(); |
- rtc::scoped_ptr<rtc::SSLIdentity> identity1; |
- rtc::scoped_ptr<rtc::SSLIdentity> identity2; |
+ rtc::scoped_refptr<rtc::RTCCertificate> certificate1; |
+ rtc::scoped_refptr<rtc::RTCCertificate> certificate2; |
rtc::scoped_ptr<rtc::SSLCertificate> remote_cert1; |
rtc::scoped_ptr<rtc::SSLCertificate> remote_cert2; |
// After negotiation, each side has a distinct local certificate, but still no |
// remote certificate, because connection has not yet occurred. |
- ASSERT_TRUE(client1_.transport()->GetIdentity(identity1.accept())); |
- ASSERT_TRUE(client2_.transport()->GetIdentity(identity2.accept())); |
- ASSERT_NE(identity1->certificate().ToPEMString(), |
- identity2->certificate().ToPEMString()); |
+ ASSERT_TRUE(client1_.transport()->GetCertificate(&certificate1)); |
+ ASSERT_TRUE(client2_.transport()->GetCertificate(&certificate2)); |
+ ASSERT_NE(certificate1->ssl_certificate().ToPEMString(), |
+ certificate2->ssl_certificate().ToPEMString()); |
ASSERT_FALSE( |
client1_.transport()->GetRemoteCertificate(remote_cert1.accept())); |
ASSERT_FALSE(remote_cert1 != NULL); |
@@ -851,24 +855,24 @@ TEST_F(DtlsTransportChannelTest, TestCertificatesAfterConnect) { |
PrepareDtls(true, true, rtc::KT_DEFAULT); |
ASSERT_TRUE(Connect()); |
- rtc::scoped_ptr<rtc::SSLIdentity> identity1; |
- rtc::scoped_ptr<rtc::SSLIdentity> identity2; |
+ rtc::scoped_refptr<rtc::RTCCertificate> certificate1; |
+ rtc::scoped_refptr<rtc::RTCCertificate> certificate2; |
rtc::scoped_ptr<rtc::SSLCertificate> remote_cert1; |
rtc::scoped_ptr<rtc::SSLCertificate> remote_cert2; |
// After connection, each side has a distinct local certificate. |
- ASSERT_TRUE(client1_.transport()->GetIdentity(identity1.accept())); |
- ASSERT_TRUE(client2_.transport()->GetIdentity(identity2.accept())); |
- ASSERT_NE(identity1->certificate().ToPEMString(), |
- identity2->certificate().ToPEMString()); |
+ ASSERT_TRUE(client1_.transport()->GetCertificate(&certificate1)); |
+ ASSERT_TRUE(client2_.transport()->GetCertificate(&certificate2)); |
+ ASSERT_NE(certificate1->ssl_certificate().ToPEMString(), |
+ certificate2->ssl_certificate().ToPEMString()); |
// Each side's remote certificate is the other side's local certificate. |
ASSERT_TRUE( |
client1_.transport()->GetRemoteCertificate(remote_cert1.accept())); |
ASSERT_EQ(remote_cert1->ToPEMString(), |
- identity2->certificate().ToPEMString()); |
+ certificate2->ssl_certificate().ToPEMString()); |
ASSERT_TRUE( |
client2_.transport()->GetRemoteCertificate(remote_cert2.accept())); |
ASSERT_EQ(remote_cert2->ToPEMString(), |
- identity1->certificate().ToPEMString()); |
+ certificate1->ssl_certificate().ToPEMString()); |
} |