Index: webrtc/pc/srtpfilter_unittest.cc |
diff --git a/webrtc/pc/srtpfilter_unittest.cc b/webrtc/pc/srtpfilter_unittest.cc |
index cc5b3e5fb3c29502cac34270846e3aa99c0a09f3..cf80bdf2a57075d53f22ff1637a8c05d6a234a36 100644 |
--- a/webrtc/pc/srtpfilter_unittest.cc |
+++ b/webrtc/pc/srtpfilter_unittest.cc |
@@ -26,6 +26,8 @@ extern "C" { |
using rtc::CS_AES_CM_128_HMAC_SHA1_80; |
using rtc::CS_AES_CM_128_HMAC_SHA1_32; |
+using rtc::CS_AEAD_AES_128_GCM; |
+using rtc::CS_AEAD_AES_256_GCM; |
using cricket::CryptoParams; |
using cricket::CS_LOCAL; |
using cricket::CS_REMOTE; |
@@ -41,10 +43,26 @@ static const std::string kTestKeyParams3 = |
"inline:1234X19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz"; |
static const std::string kTestKeyParams4 = |
"inline:4567QCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR"; |
+static const std::string kTestKeyParamsGcm1 = |
+ "inline:e166KFlKzJsGW0d5apX+rrI05vxbrvMJEzFI14aTDCa63IRTlLK4iH66uOI="; |
+static const std::string kTestKeyParamsGcm2 = |
+ "inline:6X0oCd55zfz4VgtOwsuqcFq61275PDYN5uwuu3p7ZUHbfUY2FMpdP4m2PEo="; |
+static const std::string kTestKeyParamsGcm3 = |
+ "inline:YKlABGZWMgX32xuMotrG0v0T7G83veegaVzubQ=="; |
+static const std::string kTestKeyParamsGcm4 = |
+ "inline:gJ6tWoUym2v+/F6xjr7xaxiS3QbJJozl3ZD/0A=="; |
static const cricket::CryptoParams kTestCryptoParams1( |
1, "AES_CM_128_HMAC_SHA1_80", kTestKeyParams1, ""); |
static const cricket::CryptoParams kTestCryptoParams2( |
1, "AES_CM_128_HMAC_SHA1_80", kTestKeyParams2, ""); |
+static const cricket::CryptoParams kTestCryptoParamsGcm1( |
+ 1, "AEAD_AES_256_GCM", kTestKeyParamsGcm1, ""); |
+static const cricket::CryptoParams kTestCryptoParamsGcm2( |
+ 1, "AEAD_AES_256_GCM", kTestKeyParamsGcm2, ""); |
+static const cricket::CryptoParams kTestCryptoParamsGcm3( |
+ 1, "AEAD_AES_128_GCM", kTestKeyParamsGcm3, ""); |
+static const cricket::CryptoParams kTestCryptoParamsGcm4( |
+ 1, "AEAD_AES_128_GCM", kTestKeyParamsGcm4, ""); |
static int rtp_auth_tag_len(const std::string& cs) { |
return (cs == CS_AES_CM_128_HMAC_SHA1_32) ? 4 : 10; |
@@ -133,6 +151,13 @@ TEST_F(SrtpFilterTest, TestGoodSetupOneCipherSuite) { |
EXPECT_TRUE(f1_.IsActive()); |
} |
+TEST_F(SrtpFilterTest, TestGoodSetupOneCipherSuiteGcm) { |
+ EXPECT_TRUE(f1_.SetOffer(MakeVector(kTestCryptoParamsGcm1), CS_LOCAL)); |
+ EXPECT_FALSE(f1_.IsActive()); |
+ EXPECT_TRUE(f1_.SetAnswer(MakeVector(kTestCryptoParamsGcm2), CS_REMOTE)); |
+ EXPECT_TRUE(f1_.IsActive()); |
+} |
+ |
// Test that we can set up things with multiple params. |
TEST_F(SrtpFilterTest, TestGoodSetupMultipleCipherSuites) { |
std::vector<CryptoParams> offer(MakeVector(kTestCryptoParams1)); |
@@ -148,6 +173,18 @@ TEST_F(SrtpFilterTest, TestGoodSetupMultipleCipherSuites) { |
EXPECT_TRUE(f1_.IsActive()); |
} |
+TEST_F(SrtpFilterTest, TestGoodSetupMultipleCipherSuitesGcm) { |
+ std::vector<CryptoParams> offer(MakeVector(kTestCryptoParamsGcm1)); |
+ std::vector<CryptoParams> answer(MakeVector(kTestCryptoParamsGcm3)); |
+ offer.push_back(kTestCryptoParamsGcm4); |
+ offer[1].tag = 2; |
+ answer[0].tag = 2; |
+ EXPECT_TRUE(f1_.SetOffer(offer, CS_LOCAL)); |
+ EXPECT_FALSE(f1_.IsActive()); |
+ EXPECT_TRUE(f1_.SetAnswer(answer, CS_REMOTE)); |
+ EXPECT_TRUE(f1_.IsActive()); |
+} |
+ |
// Test that we handle the cases where crypto is not desired. |
TEST_F(SrtpFilterTest, TestGoodSetupNoCipherSuites) { |
std::vector<CryptoParams> offer, answer; |