Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(834)

Unified Diff: webrtc/pc/webrtcsdp.cc

Issue 2761143002: Support encrypted RTP extensions (RFC 6904) (Closed)
Patch Set: Fix compile error on win_x64 bots. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/pc/srtpfilter_unittest.cc ('k') | webrtc/pc/webrtcsdp_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/pc/webrtcsdp.cc
diff --git a/webrtc/pc/webrtcsdp.cc b/webrtc/pc/webrtcsdp.cc
index 3953773d83f361837e7239ef81550da44635d247..49cd0444bf10db984f597340b706118e64319360 100644
--- a/webrtc/pc/webrtcsdp.cc
+++ b/webrtc/pc/webrtcsdp.cc
@@ -1176,7 +1176,25 @@ bool ParseExtmap(const std::string& line,
return false;
}
- *extmap = RtpExtension(uri, value);
+ bool encrypted = false;
+ if (uri == RtpExtension::kEncryptHeaderExtensionsUri) {
+ // RFC 6904
+ // a=extmap:<value["/"<direction>] urn:ietf:params:rtp-hdrext:encrypt \
+ // <URI> <extensionattributes>
+ const size_t expected_min_fields_encrypted = expected_min_fields + 1;
+ if (fields.size() < expected_min_fields_encrypted) {
+ return ParseFailedExpectMinFieldNum(line, expected_min_fields_encrypted,
+ error);
+ }
+
+ encrypted = true;
+ uri = fields[2];
+ if (uri == RtpExtension::kEncryptHeaderExtensionsUri) {
+ return ParseFailed(line, "Recursive encrypted header.", error);
+ }
+ }
+
+ *extmap = RtpExtension(uri, value, encrypted);
return true;
}
@@ -1433,9 +1451,13 @@ void BuildRtpContentAttributes(const MediaContentDescription* media_desc,
// The definitions MUST be either all session level or all media level. This
// implementation uses all media level.
for (size_t i = 0; i < media_desc->rtp_header_extensions().size(); ++i) {
+ const RtpExtension& extension = media_desc->rtp_header_extensions()[i];
InitAttrLine(kAttributeExtmap, &os);
- os << kSdpDelimiterColon << media_desc->rtp_header_extensions()[i].id
- << kSdpDelimiterSpace << media_desc->rtp_header_extensions()[i].uri;
+ os << kSdpDelimiterColon << extension.id;
+ if (extension.encrypt) {
+ os << kSdpDelimiterSpace << RtpExtension::kEncryptHeaderExtensionsUri;
+ }
+ os << kSdpDelimiterSpace << extension.uri;
AddLine(os.str(), message);
}
« no previous file with comments | « webrtc/pc/srtpfilter_unittest.cc ('k') | webrtc/pc/webrtcsdp_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698