Skip to content

Commit d863386

Browse files
saghulWebRTC LUCI CQ
authored andcommitted
Enable SRTP GCM ciphers by default
Bug: webrtc:15178 Change-Id: I0216ce8f194fffc820723d82b9c04a76573c2f4f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/305381 Reviewed-by: Harald Alvestrand <[email protected]> Commit-Queue: Philipp Hancke <[email protected]> Reviewed-by: Victor Boivie <[email protected]> Cr-Commit-Position: refs/heads/main@{#40828}
1 parent 98e71f5 commit d863386

File tree

4 files changed

+14
-27
lines changed

4 files changed

+14
-27
lines changed

api/crypto/crypto_options.cc

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,6 @@ CryptoOptions::CryptoOptions(const CryptoOptions& other) {
2323

2424
CryptoOptions::~CryptoOptions() {}
2525

26-
// static
27-
CryptoOptions CryptoOptions::NoGcm() {
28-
CryptoOptions options;
29-
options.srtp.enable_gcm_crypto_suites = false;
30-
return options;
31-
}
32-
3326
std::vector<int> CryptoOptions::GetSupportedDtlsSrtpCryptoSuites() const {
3427
std::vector<int> crypto_suites;
3528
// Note: kSrtpAes128CmSha1_80 is what is required to be supported (by

api/crypto/crypto_options.h

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ struct RTC_EXPORT CryptoOptions {
2525
CryptoOptions(const CryptoOptions& other);
2626
~CryptoOptions();
2727

28-
// Helper method to return an instance of the CryptoOptions with GCM crypto
29-
// suites disabled. This method should be used instead of depending on current
30-
// default values set by the constructor.
31-
static CryptoOptions NoGcm();
32-
3328
// Returns a list of the supported DTLS-SRTP Crypto suites based on this set
3429
// of crypto options.
3530
std::vector<int> GetSupportedDtlsSrtpCryptoSuites() const;
@@ -41,7 +36,7 @@ struct RTC_EXPORT CryptoOptions {
4136
struct Srtp {
4237
// Enable GCM crypto suites from RFC 7714 for SRTP. GCM will only be used
4338
// if both sides enable it.
44-
bool enable_gcm_crypto_suites = false;
39+
bool enable_gcm_crypto_suites = true;
4540

4641
// If set to true, the (potentially insecure) crypto cipher
4742
// kSrtpAes128CmSha1_32 will be included in the list of supported ciphers

api/peer_connection_interface.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1493,7 +1493,7 @@ class RTC_EXPORT PeerConnectionFactoryInterface
14931493
rtc::SSLProtocolVersion ssl_max_version = rtc::SSL_PROTOCOL_DTLS_12;
14941494

14951495
// Sets crypto related options, e.g. enabled cipher suites.
1496-
CryptoOptions crypto_options = CryptoOptions::NoGcm();
1496+
CryptoOptions crypto_options = {};
14971497
};
14981498

14991499
// Set the options to be used for subsequently created PeerConnections.

pc/media_session_unittest.cc

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ static const char* kMediaProtocolsDtls[] = {
284284
// default changes.
285285
static const char* kDefaultSrtpCryptoSuite = kCsAesCm128HmacSha1_80;
286286
static const char* kDefaultSrtpCryptoSuiteGcm = kCsAeadAes256Gcm;
287+
static const uint8_t kDefaultCryptoSuiteSize = 3U;
287288

288289
// These constants are used to make the code using "AddMediaDescriptionOptions"
289290
// more readable.
@@ -622,9 +623,8 @@ class MediaSessionDescriptionFactoryTest : public ::testing::Test {
622623
ASSERT_TRUE(video_media_desc);
623624
EXPECT_TRUE(CompareCryptoParams(audio_media_desc->cryptos(),
624625
video_media_desc->cryptos()));
625-
EXPECT_EQ(1u, audio_media_desc->cryptos().size());
626-
EXPECT_EQ(kDefaultSrtpCryptoSuite,
627-
audio_media_desc->cryptos()[0].crypto_suite);
626+
ASSERT_CRYPTO(audio_media_desc, offer ? kDefaultCryptoSuiteSize : 1U,
627+
kDefaultSrtpCryptoSuite);
628628

629629
// Verify the selected crypto is one from the reference audio
630630
// media content.
@@ -819,7 +819,7 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestCreateAudioOffer) {
819819
EXPECT_EQ(0U, acd->first_ssrc()); // no sender is attached.
820820
EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // default bandwidth (auto)
821821
EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on
822-
ASSERT_CRYPTO(acd, 1U, kDefaultSrtpCryptoSuite);
822+
ASSERT_CRYPTO(acd, kDefaultCryptoSuiteSize, kDefaultSrtpCryptoSuite);
823823
EXPECT_EQ(cricket::kMediaProtocolSavpf, acd->protocol());
824824
}
825825

@@ -844,14 +844,14 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestCreateVideoOffer) {
844844
EXPECT_EQ(0U, acd->first_ssrc()); // no sender is attached
845845
EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // default bandwidth (auto)
846846
EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on
847-
ASSERT_CRYPTO(acd, 1U, kDefaultSrtpCryptoSuite);
847+
ASSERT_CRYPTO(acd, kDefaultCryptoSuiteSize, kDefaultSrtpCryptoSuite);
848848
EXPECT_EQ(cricket::kMediaProtocolSavpf, acd->protocol());
849849
EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type());
850850
EXPECT_EQ(f1_.video_sendrecv_codecs(), vcd->codecs());
851851
EXPECT_EQ(0U, vcd->first_ssrc()); // no sender is attached
852852
EXPECT_EQ(kAutoBandwidth, vcd->bandwidth()); // default bandwidth (auto)
853853
EXPECT_TRUE(vcd->rtcp_mux()); // rtcp-mux defaults on
854-
ASSERT_CRYPTO(vcd, 1U, kDefaultSrtpCryptoSuite);
854+
ASSERT_CRYPTO(vcd, kDefaultCryptoSuiteSize, kDefaultSrtpCryptoSuite);
855855
EXPECT_EQ(cricket::kMediaProtocolSavpf, vcd->protocol());
856856
}
857857

@@ -1298,7 +1298,6 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestCreateAudioAnswerGcm) {
12981298
f1_.set_secure(SEC_ENABLED);
12991299
f2_.set_secure(SEC_ENABLED);
13001300
MediaSessionOptions opts = CreatePlanBMediaSessionOptions();
1301-
opts.crypto_options.srtp.enable_gcm_crypto_suites = true;
13021301
std::unique_ptr<SessionDescription> offer =
13031302
f1_.CreateOfferOrError(opts, nullptr).MoveValue();
13041303
ASSERT_TRUE(offer.get());
@@ -2475,11 +2474,11 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestCreateMultiStreamVideoOffer) {
24752474

24762475
EXPECT_EQ(kAutoBandwidth, acd->bandwidth()); // default bandwidth (auto)
24772476
EXPECT_TRUE(acd->rtcp_mux()); // rtcp-mux defaults on
2478-
ASSERT_CRYPTO(acd, 1U, kDefaultSrtpCryptoSuite);
2477+
ASSERT_CRYPTO(acd, kDefaultCryptoSuiteSize, kDefaultSrtpCryptoSuite);
24792478

24802479
EXPECT_EQ(MEDIA_TYPE_VIDEO, vcd->type());
24812480
EXPECT_EQ(f1_.video_sendrecv_codecs(), vcd->codecs());
2482-
ASSERT_CRYPTO(vcd, 1U, kDefaultSrtpCryptoSuite);
2481+
ASSERT_CRYPTO(vcd, kDefaultCryptoSuiteSize, kDefaultSrtpCryptoSuite);
24832482

24842483
const StreamParamsVec& video_streams = vcd->streams();
24852484
ASSERT_EQ(1U, video_streams.size());
@@ -2512,9 +2511,9 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestCreateMultiStreamVideoOffer) {
25122511
EXPECT_EQ(acd->codecs(), updated_acd->codecs());
25132512
EXPECT_EQ(vcd->type(), updated_vcd->type());
25142513
EXPECT_EQ(vcd->codecs(), updated_vcd->codecs());
2515-
ASSERT_CRYPTO(updated_acd, 1U, kDefaultSrtpCryptoSuite);
2514+
ASSERT_CRYPTO(updated_acd, kDefaultCryptoSuiteSize, kDefaultSrtpCryptoSuite);
25162515
EXPECT_TRUE(CompareCryptoParams(acd->cryptos(), updated_acd->cryptos()));
2517-
ASSERT_CRYPTO(updated_vcd, 1U, kDefaultSrtpCryptoSuite);
2516+
ASSERT_CRYPTO(updated_vcd, kDefaultCryptoSuiteSize, kDefaultSrtpCryptoSuite);
25182517
EXPECT_TRUE(CompareCryptoParams(vcd->cryptos(), updated_vcd->cryptos()));
25192518

25202519
const StreamParamsVec& updated_audio_streams = updated_acd->streams();
@@ -3881,8 +3880,8 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestCryptoDtls) {
38813880
ASSERT_TRUE(audio_media_desc);
38823881
video_media_desc = offer->GetContentDescriptionByName("video");
38833882
ASSERT_TRUE(video_media_desc);
3884-
EXPECT_EQ(1u, audio_media_desc->cryptos().size());
3885-
EXPECT_EQ(1u, video_media_desc->cryptos().size());
3883+
EXPECT_EQ(kDefaultCryptoSuiteSize, audio_media_desc->cryptos().size());
3884+
EXPECT_EQ(kDefaultCryptoSuiteSize, video_media_desc->cryptos().size());
38863885

38873886
audio_trans_desc = offer->GetTransportDescriptionByName("audio");
38883887
ASSERT_TRUE(audio_trans_desc);

0 commit comments

Comments
 (0)