|
|
|
|
@ -48,7 +48,7 @@ class DtlsTestClient : public sigslot::has_slots<> {
|
|
|
|
|
: name_(name),
|
|
|
|
|
packet_size_(0),
|
|
|
|
|
use_dtls_srtp_(false),
|
|
|
|
|
ssl_max_version_(rtc::SSL_PROTOCOL_DTLS_10),
|
|
|
|
|
ssl_max_version_(rtc::SSL_PROTOCOL_DTLS_12),
|
|
|
|
|
negotiated_dtls_(false),
|
|
|
|
|
received_dtls_client_hello_(false),
|
|
|
|
|
received_dtls_server_hello_(false) {}
|
|
|
|
|
@ -400,7 +400,7 @@ class DtlsTransportChannelTest : public testing::Test {
|
|
|
|
|
channel_ct_(1),
|
|
|
|
|
use_dtls_(false),
|
|
|
|
|
use_dtls_srtp_(false),
|
|
|
|
|
ssl_expected_version_(rtc::SSL_PROTOCOL_DTLS_10) {}
|
|
|
|
|
ssl_expected_version_(rtc::SSL_PROTOCOL_DTLS_12) {}
|
|
|
|
|
|
|
|
|
|
void SetChannelCount(size_t channel_ct) {
|
|
|
|
|
channel_ct_ = static_cast<int>(channel_ct);
|
|
|
|
|
@ -600,16 +600,30 @@ TEST_F(DtlsTransportChannelTest, TestTransferSrtpTwoChannels) {
|
|
|
|
|
TestTransfer(1, 1000, 100, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestTransferDtls DISABLED_TestTransferDtls
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestTransferDtls TestTransferDtls
|
|
|
|
|
#endif
|
|
|
|
|
// Connect with DTLS, and transfer some data.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestTransferDtls) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestTransferDtls) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtls);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
ASSERT_TRUE(Connect());
|
|
|
|
|
TestTransfer(0, 1000, 100, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestTransferDtlsTwoChannels DISABLED_TestTransferDtlsTwoChannels
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestTransferDtlsTwoChannels TestTransferDtlsTwoChannels
|
|
|
|
|
#endif
|
|
|
|
|
// Create two channels with DTLS, and transfer some data.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestTransferDtlsTwoChannels) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestTransferDtlsTwoChannels) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtls);
|
|
|
|
|
SetChannelCount(2);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
@ -675,8 +689,15 @@ TEST_F(DtlsTransportChannelTest, TestDtls12Client2) {
|
|
|
|
|
ASSERT_TRUE(Connect());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtp DISABLED_TestTransferDtlsSrtp
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtp TestTransferDtlsSrtp
|
|
|
|
|
#endif
|
|
|
|
|
// Connect with DTLS, negotiate DTLS-SRTP, and transfer SRTP using bypass.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtp) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestTransferDtlsSrtp) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
PrepareDtlsSrtp(true, true);
|
|
|
|
|
@ -684,9 +705,18 @@ TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtp) {
|
|
|
|
|
TestTransfer(0, 1000, 100, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestTransferDtlsInvalidSrtpPacket \
|
|
|
|
|
DISABLED_TestTransferDtlsInvalidSrtpPacket
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestTransferDtlsInvalidSrtpPacket \
|
|
|
|
|
TestTransferDtlsInvalidSrtpPacket
|
|
|
|
|
#endif
|
|
|
|
|
// Connect with DTLS-SRTP, transfer an invalid SRTP packet, and expects -1
|
|
|
|
|
// returned.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestTransferDtlsInvalidSrtpPacket) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestTransferDtlsInvalidSrtpPacket) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtls);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
PrepareDtlsSrtp(true, true);
|
|
|
|
|
@ -695,24 +725,47 @@ TEST_F(DtlsTransportChannelTest, TestTransferDtlsInvalidSrtpPacket) {
|
|
|
|
|
ASSERT_EQ(-1, result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtpRejected DISABLED_TestTransferDtlsSrtpRejected
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtpRejected TestTransferDtlsSrtpRejected
|
|
|
|
|
#endif
|
|
|
|
|
// Connect with DTLS. A does DTLS-SRTP but B does not.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpRejected) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestTransferDtlsSrtpRejected) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
PrepareDtlsSrtp(true, false);
|
|
|
|
|
ASSERT_TRUE(Connect());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtpNotOffered \
|
|
|
|
|
DISABLED_TestTransferDtlsSrtpNotOffered
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtpNotOffered TestTransferDtlsSrtpNotOffered
|
|
|
|
|
#endif
|
|
|
|
|
// Connect with DTLS. B does DTLS-SRTP but A does not.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpNotOffered) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestTransferDtlsSrtpNotOffered) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
PrepareDtlsSrtp(false, true);
|
|
|
|
|
ASSERT_TRUE(Connect());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtpTwoChannels \
|
|
|
|
|
DISABLED_TestTransferDtlsSrtpTwoChannels
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtpTwoChannels TestTransferDtlsSrtpTwoChannels
|
|
|
|
|
#endif
|
|
|
|
|
// Create two channels with DTLS, negotiate DTLS-SRTP, and transfer bypass SRTP.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpTwoChannels) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestTransferDtlsSrtpTwoChannels) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
SetChannelCount(2);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
@ -722,8 +775,15 @@ TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpTwoChannels) {
|
|
|
|
|
TestTransfer(1, 1000, 100, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtpDemux DISABLED_TestTransferDtlsSrtpDemux
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestTransferDtlsSrtpDemux TestTransferDtlsSrtpDemux
|
|
|
|
|
#endif
|
|
|
|
|
// Create a single channel with DTLS, and send normal data and SRTP data on it.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpDemux) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestTransferDtlsSrtpDemux) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
PrepareDtlsSrtp(true, true);
|
|
|
|
|
@ -732,8 +792,17 @@ TEST_F(DtlsTransportChannelTest, TestTransferDtlsSrtpDemux) {
|
|
|
|
|
TestTransfer(0, 1000, 100, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestTransferDtlsAnswererIsPassive \
|
|
|
|
|
DISABLED_TestTransferDtlsAnswererIsPassive
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestTransferDtlsAnswererIsPassive \
|
|
|
|
|
TestTransferDtlsAnswererIsPassive
|
|
|
|
|
#endif
|
|
|
|
|
// Testing when the remote is passive.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestTransferDtlsAnswererIsPassive) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestTransferDtlsAnswererIsPassive) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
SetChannelCount(2);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
@ -758,9 +827,16 @@ TEST_F(DtlsTransportChannelTest, TestDtlsSetupWithLegacyAsAnswerer) {
|
|
|
|
|
EXPECT_EQ(rtc::SSL_CLIENT, channel2_role);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestDtlsReOfferFromOfferer DISABLED_TestDtlsReOfferFromOfferer
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestDtlsReOfferFromOfferer TestDtlsReOfferFromOfferer
|
|
|
|
|
#endif
|
|
|
|
|
// Testing re offer/answer after the session is estbalished. Roles will be
|
|
|
|
|
// kept same as of the previous negotiation.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestDtlsReOfferFromOfferer) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestDtlsReOfferFromOfferer) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
SetChannelCount(2);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
@ -777,7 +853,14 @@ TEST_F(DtlsTransportChannelTest, TestDtlsReOfferFromOfferer) {
|
|
|
|
|
TestTransfer(1, 1000, 100, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestDtlsReOfferFromAnswerer) {
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestDtlsReOfferFromAnswerer DISABLED_TestDtlsReOfferFromAnswerer
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestDtlsReOfferFromAnswerer TestDtlsReOfferFromAnswerer
|
|
|
|
|
#endif
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestDtlsReOfferFromAnswerer) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
SetChannelCount(2);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
@ -794,8 +877,15 @@ TEST_F(DtlsTransportChannelTest, TestDtlsReOfferFromAnswerer) {
|
|
|
|
|
TestTransfer(1, 1000, 100, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestDtlsRoleReversal DISABLED_TestDtlsRoleReversal
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestDtlsRoleReversal TestDtlsRoleReversal
|
|
|
|
|
#endif
|
|
|
|
|
// Test that any change in role after the intial setup will result in failure.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestDtlsRoleReversal) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestDtlsRoleReversal) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
SetChannelCount(2);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
@ -809,9 +899,18 @@ TEST_F(DtlsTransportChannelTest, TestDtlsRoleReversal) {
|
|
|
|
|
NF_REOFFER | NF_EXPECT_FAILURE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestDtlsReOfferWithDifferentSetupAttr \
|
|
|
|
|
DISABLED_TestDtlsReOfferWithDifferentSetupAttr
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestDtlsReOfferWithDifferentSetupAttr \
|
|
|
|
|
TestDtlsReOfferWithDifferentSetupAttr
|
|
|
|
|
#endif
|
|
|
|
|
// Test that using different setup attributes which results in similar ssl
|
|
|
|
|
// role as the initial negotiation will result in success.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestDtlsReOfferWithDifferentSetupAttr) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestDtlsReOfferWithDifferentSetupAttr) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtlsSrtp);
|
|
|
|
|
SetChannelCount(2);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
@ -871,8 +970,15 @@ TEST_F(DtlsTransportChannelTest, TestCertificatesBeforeConnect) {
|
|
|
|
|
ASSERT_FALSE(remote_cert2 != NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if defined(MEMORY_SANITIZER)
|
|
|
|
|
// Fails under MemorySanitizer:
|
|
|
|
|
// See https://code.google.com/p/webrtc/issues/detail?id=5381.
|
|
|
|
|
#define MAYBE_TestCertificatesAfterConnect DISABLED_TestCertificatesAfterConnect
|
|
|
|
|
#else
|
|
|
|
|
#define MAYBE_TestCertificatesAfterConnect TestCertificatesAfterConnect
|
|
|
|
|
#endif
|
|
|
|
|
// Test Certificates state after connection.
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, TestCertificatesAfterConnect) {
|
|
|
|
|
TEST_F(DtlsTransportChannelTest, MAYBE_TestCertificatesAfterConnect) {
|
|
|
|
|
MAYBE_SKIP_TEST(HaveDtls);
|
|
|
|
|
PrepareDtls(true, true, rtc::KT_DEFAULT);
|
|
|
|
|
ASSERT_TRUE(Connect());
|
|
|
|
|
|