Index: webrtc/base/sslstreamadapter.h |
diff --git a/webrtc/base/sslstreamadapter.h b/webrtc/base/sslstreamadapter.h |
index c57056b14ad1b2336b1527c00bd7c24059ff02f0..1308f275ed6621e3d50a61e3dc14632505388bcc 100644 |
--- a/webrtc/base/sslstreamadapter.h |
+++ b/webrtc/base/sslstreamadapter.h |
@@ -26,6 +26,8 @@ const int TLS_NULL_WITH_NULL_NULL = 0; |
const int SRTP_INVALID_CRYPTO_SUITE = 0; |
const int SRTP_AES128_CM_SHA1_80 = 0x0001; |
const int SRTP_AES128_CM_SHA1_32 = 0x0002; |
+const int SRTP_AEAD_AES_128_GCM = 0x0007; |
+const int SRTP_AEAD_AES_256_GCM = 0x0008; |
// Cipher suite to use for SRTP. Typically a 80-bit HMAC will be used, except |
// in applications (voice) where the additional bandwidth may be significant. |
@@ -34,6 +36,10 @@ const int SRTP_AES128_CM_SHA1_32 = 0x0002; |
extern const char CS_AES_CM_128_HMAC_SHA1_80[]; |
// 128-bit AES with 32-bit SHA-1 HMAC. |
extern const char CS_AES_CM_128_HMAC_SHA1_32[]; |
+// 128-bit AES GCM with 16 byte AEAD auth tag. |
+extern const char CS_AEAD_AES_128_GCM[]; |
+// 256-bit AES GCM with 16 byte AEAD auth tag. |
+extern const char CS_AEAD_AES_256_GCM[]; |
// Given the DTLS-SRTP protection profile ID, as defined in |
// https://tools.ietf.org/html/rfc4568#section-6.2 , return the SRTP profile |
@@ -43,6 +49,27 @@ std::string SrtpCryptoSuiteToName(int crypto_suite); |
// The reverse of above conversion. |
int SrtpCryptoSuiteFromName(const std::string& crypto_suite); |
+// Get key length and salt length for given crypto suite. Returns true for |
+// valid suites, otherwise false. |
+bool GetSrtpKeyAndSaltLengths(int crypto_suite, int *key_length, |
+ int *salt_length); |
+ |
+// Returns true if the given crypto suite id uses a GCM cipher. |
+bool IsGcmCryptoSuite(int crypto_suite); |
+ |
+// Returns true if the given crypto suite name uses a GCM cipher. |
+bool IsGcmCryptoSuiteName(const std::string& crypto_suite); |
+ |
+struct CryptoOptions { |
+ CryptoOptions() : |
+ enable_gcm_crypto_suites(false) { |
+ } |
+ |
+ // Enable GCM crypto suites from RFC 7714 for SRTP. GCM will only be used |
+ // if both sides enable it. |
+ bool enable_gcm_crypto_suites; |
+}; |
+ |
// SSLStreamAdapter : A StreamInterfaceAdapter that does SSL/TLS. |
// After SSL has been started, the stream will only open on successful |
// SSL verification of certificates, and the communication is |