Title: [211429] trunk
- Revision
- 211429
- Author
- zandober...@gmail.com
- Date
- 2017-01-31 03:41:07 -0800 (Tue, 31 Jan 2017)
Log Message
[EME] InitDataRegistry should use base64url encoding and decoding for keyids
https://bugs.webkit.org/show_bug.cgi?id=167592
Reviewed by Jer Noble.
Source/WebCore:
In InitDataRegistry, WTF::base64URLEncode() and WTF::base64URLDecode() should
be used to encode and decode the 'keyids' initialization data format, as
required by the relevant specification.
https://w3c.github.io/encrypted-media/format-registry/initdata/keyids.html#format
Relevant test case was added to media/encrypted-media/mock-MediaKeySession-generateRequest.html.
* Modules/encryptedmedia/InitDataRegistry.cpp:
(WebCore::extractKeyIDsKeyids):
(WebCore::sanitizeKeyids):
LayoutTests:
* media/encrypted-media/mock-MediaKeySession-generateRequest-expected.txt:
* media/encrypted-media/mock-MediaKeySession-generateRequest.html: Include a test case
that passes an init data JSON to generateRequest() that fails to decode when using the
plain base64 decoding algorithm. The test passes when base64url encoding and decoding
are used in InitDataRegistry.
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (211428 => 211429)
--- trunk/LayoutTests/ChangeLog 2017-01-31 11:26:14 UTC (rev 211428)
+++ trunk/LayoutTests/ChangeLog 2017-01-31 11:41:07 UTC (rev 211429)
@@ -1,3 +1,16 @@
+2017-01-31 Zan Dobersek <zdober...@igalia.com>
+
+ [EME] InitDataRegistry should use base64url encoding and decoding for keyids
+ https://bugs.webkit.org/show_bug.cgi?id=167592
+
+ Reviewed by Jer Noble.
+
+ * media/encrypted-media/mock-MediaKeySession-generateRequest-expected.txt:
+ * media/encrypted-media/mock-MediaKeySession-generateRequest.html: Include a test case
+ that passes an init data JSON to generateRequest() that fails to decode when using the
+ plain base64 decoding algorithm. The test passes when base64url encoding and decoding
+ are used in InitDataRegistry.
+
2017-01-31 Antoine Quint <grao...@apple.com>
[Sierra WK1] LayoutTest media/modern-media-controls/placard-support/placard-support-pip.html is a flaky crash
Modified: trunk/LayoutTests/media/encrypted-media/mock-MediaKeySession-generateRequest-expected.txt (211428 => 211429)
--- trunk/LayoutTests/media/encrypted-media/mock-MediaKeySession-generateRequest-expected.txt 2017-01-31 11:26:14 UTC (rev 211428)
+++ trunk/LayoutTests/media/encrypted-media/mock-MediaKeySession-generateRequest-expected.txt 2017-01-31 11:41:07 UTC (rev 211429)
@@ -37,5 +37,11 @@
RUN(mediaKeySession = mediaKeys.createSession("temporary"))
RUN(promise = mediaKeySession.generateRequest("keyids", stringToUInt8Array(kids)))
Promise resolved OK
+
+initData is encoded in base64url.
+RUN(kids = JSON.stringify({ kids: [ "ig2FRSEF1BU1j-qPaObBkQ"] }))
+RUN(mediaKeySession = mediaKeys.createSession("temporary"))
+RUN(promise = mediaKeySession.generateRequest("keyids", stringToUInt8Array(kids)))
+Promise resolved OK
END OF TEST
Modified: trunk/LayoutTests/media/encrypted-media/mock-MediaKeySession-generateRequest.html (211428 => 211429)
--- trunk/LayoutTests/media/encrypted-media/mock-MediaKeySession-generateRequest.html 2017-01-31 11:26:14 UTC (rev 211428)
+++ trunk/LayoutTests/media/encrypted-media/mock-MediaKeySession-generateRequest.html 2017-01-31 11:41:07 UTC (rev 211429)
@@ -101,6 +101,14 @@
run('promise = mediaKeySession.generateRequest("keyids", stringToUInt8Array(kids))');
shouldResolve(promise).then(next, next);
},
+
+ function() {
+ consoleWrite('initData is encoded in base64url.')
+ run('kids = JSON.stringify({ kids: [ "ig2FRSEF1BU1j-qPaObBkQ"] })');
+ run('mediaKeySession = mediaKeys.createSession("temporary")');
+ run('promise = mediaKeySession.generateRequest("keyids", stringToUInt8Array(kids))');
+ shouldResolve(promise).then(next, next);
+ },
];
</script>
</head>
Modified: trunk/Source/WebCore/ChangeLog (211428 => 211429)
--- trunk/Source/WebCore/ChangeLog 2017-01-31 11:26:14 UTC (rev 211428)
+++ trunk/Source/WebCore/ChangeLog 2017-01-31 11:41:07 UTC (rev 211429)
@@ -1,3 +1,21 @@
+2017-01-31 Zan Dobersek <zdober...@igalia.com>
+
+ [EME] InitDataRegistry should use base64url encoding and decoding for keyids
+ https://bugs.webkit.org/show_bug.cgi?id=167592
+
+ Reviewed by Jer Noble.
+
+ In InitDataRegistry, WTF::base64URLEncode() and WTF::base64URLDecode() should
+ be used to encode and decode the 'keyids' initialization data format, as
+ required by the relevant specification.
+ https://w3c.github.io/encrypted-media/format-registry/initdata/keyids.html#format
+
+ Relevant test case was added to media/encrypted-media/mock-MediaKeySession-generateRequest.html.
+
+ * Modules/encryptedmedia/InitDataRegistry.cpp:
+ (WebCore::extractKeyIDsKeyids):
+ (WebCore::sanitizeKeyids):
+
2017-01-31 Joseph Pecoraro <pecor...@apple.com>
Performance Timeline: Add serializer to PerformanceEntry
Modified: trunk/Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp (211428 => 211429)
--- trunk/Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp 2017-01-31 11:26:14 UTC (rev 211428)
+++ trunk/Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp 2017-01-31 11:41:07 UTC (rev 211429)
@@ -63,7 +63,7 @@
continue;
Vector<char> keyIDData;
- if (!WTF::base64Decode(keyID, { keyIDData }))
+ if (!WTF::base64URLDecode(keyID, { keyIDData }))
continue;
Ref<SharedBuffer> keyIDBuffer = SharedBuffer::adoptVector(keyIDData);
@@ -84,7 +84,7 @@
auto object = InspectorObject::create();
auto kidsArray = InspectorArray::create();
for (auto& buffer : keyIDBuffer)
- kidsArray->pushString(base64Encode(buffer->data(), buffer->size()));
+ kidsArray->pushString(WTF::base64URLEncode(buffer->data(), buffer->size()));
object->setArray("kids", WTFMove(kidsArray));
CString jsonData = object->toJSONString().utf8();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes