Add CryptoParams to webrtc::MediaSession.

SrtpTransportInterface methods take cricket::CryptoParams, so this
should be enough for now.

BUG=webrtc:7311

Review-Url: https://codereview.webrtc.org/2753343002
Cr-Original-Commit-Position: refs/heads/master@{#17299}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 7aeabd081f148e489d1e9d360c3fe7587a92b606
diff --git a/api/ortc/mediadescription.h b/api/ortc/mediadescription.h
index 7e811ec..39b67bd 100644
--- a/api/ortc/mediadescription.h
+++ b/api/ortc/mediadescription.h
@@ -13,8 +13,10 @@
 
 #include <string>
 #include <utility>
+#include <vector>
 
 #include "webrtc/base/optional.h"
+#include "webrtc/media/base/cryptoparams.h"
 
 namespace webrtc {
 
@@ -32,8 +34,18 @@
   rtc::Optional<std::string> mid() const { return mid_; }
   void set_mid(std::string mid) { mid_.emplace(std::move(mid)); }
 
+  // Security keys and parameters for this media stream. Can be used to
+  // negotiate parameters for SRTP.
+  // https://tools.ietf.org/html/rfc4568#page-5
+  std::vector<cricket::CryptoParams>& sdes_params() { return sdes_params_; }
+  const std::vector<cricket::CryptoParams>& sdes_params() const {
+    return sdes_params_;
+  }
+
  private:
   rtc::Optional<std::string> mid_;
+
+  std::vector<cricket::CryptoParams> sdes_params_;
 };
 
 }  // namespace webrtc
diff --git a/api/ortc/mediadescription_unittest.cc b/api/ortc/mediadescription_unittest.cc
index a17fde2..d033a4e 100644
--- a/api/ortc/mediadescription_unittest.cc
+++ b/api/ortc/mediadescription_unittest.cc
@@ -19,4 +19,12 @@
   MediaDescription m("a");
   EXPECT_EQ("a", m.mid());
 }
+
+TEST_F(MediaDescriptionTest, AddSdesParam) {
+  MediaDescription m("a");
+  m.sdes_params().push_back(cricket::CryptoParams());
+  const std::vector<cricket::CryptoParams>& params = m.sdes_params();
+  EXPECT_EQ(1u, params.size());
 }
+
+}  // namespace webrtc