ClearKey key format - https://www.w3.org/Bugs/Public/show_bug.cgi?id=17682
authorAdrian Bateman <adrianba@microsoft.com>
Mon, 14 Jan 2013 16:35:01 -0800
changeset 63 db164d726dcd
parent 62 d1a3fcfc773b
child 64 122330340bf1
ClearKey key format - https://www.w3.org/Bugs/Public/show_bug.cgi?id=17682
encrypted-media/encrypted-media.html
encrypted-media/encrypted-media.xml
encrypted-media/spec-html.xsl
--- a/encrypted-media/encrypted-media.html	Fri Jan 11 20:25:10 2013 -0800
+++ b/encrypted-media/encrypted-media.html	Mon Jan 14 16:35:01 2013 -0800
@@ -956,8 +956,23 @@
       <code><a href="#dom-destinationurl">destinationURL</a></code> = value of the default URL if present in the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> and null otherwise.
     </li></ul>
 
-    <p>The <var title="true">key</var> parameter of <code><a href="#dom-update">update()</a></code> should be an array of bytes containing the key.</p>
+    <p>The <var title="true">key</var> parameter of <code><a href="#dom-update">update()</a></code> should be a JSON Web Key (JWK) representation of the symmetric key to be used for decryption, as defined in the <a href="http://tools.ietf.org/html/draft-jones-jose-json-private-and-symmetric-key">IETF Internet-draft JSON Private and Symmetric Key specification</a>. The JSON string is encoded into the Uint8Array parameter using <a href="http://www.w3.org/TR/html5/infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character encoding</a>.</p>
+    <p>When the JWK 'key type' ("kty") member value is 'octet sequence' ("oct"), the 'key value' ("k") member will be a base64 encoding of the octet sequence containing the symmetric key value.</p>
+    <p>For example, the following contains a single symmetric key represented as a JWK, designated as being for use with the AES Key Wrap algorithm (line breaks for readability, only).</p>
 
+    <div class="example">
+      <pre class="code">
+{
+  "keys": 
+    [{
+      "kty":"oct",
+      "alg":"A128KW",
+      "kid":"67ef0gd8pvfd0=",
+      "k":"GawgguFyGrWKav7AX4VKUg"
+    }]
+}</pre>
+    </div>
+    
 
     <h2 id="containers">7. Container Guidelines</h2>
     <p>This document describes behavior independent of specific media containers.
@@ -1048,7 +1063,7 @@
   function handleMessage(event) {
     var keySession = event.target;
 
-    var key = new Uint8Array([ 0xaa, 0xbb, 0xcc, ... ]);
+    var key = new Uint8Array([ ... ]);
     keySession.<a href="#dom-update">update</a>(key);
   }
 &lt;/script&gt;
--- a/encrypted-media/encrypted-media.xml	Fri Jan 11 20:25:10 2013 -0800
+++ b/encrypted-media/encrypted-media.xml	Mon Jan 14 16:35:01 2013 -0800
@@ -902,8 +902,23 @@
       <coderef>destinationURL</coderef> = value of the default URL if present in the <videoanchor name="media-data">media data</videoanchor> and null otherwise.
     </li></ul>
 
-    <p>The <var title="true">key</var> parameter of <methodref>update</methodref> should be an array of bytes containing the key.</p>
+    <p>The <var title="true">key</var> parameter of <methodref>update</methodref> should be a JSON Web Key (JWK) representation of the symmetric key to be used for decryption, as defined in the <a href="http://tools.ietf.org/html/draft-jones-jose-json-private-and-symmetric-key">IETF Internet-draft JSON Private and Symmetric Key specification</a>. The JSON string is encoded into the Uint8Array parameter using <ascii-encoding />.</p>
+    <p>When the JWK 'key type' ("kty") member value is 'octet sequence' ("oct"), the 'key value' ("k") member will be a base64 encoding of the octet sequence containing the symmetric key value.</p>
+    <p>For example, the following contains a single symmetric key represented as a JWK, designated as being for use with the AES Key Wrap algorithm (line breaks for readability, only).</p>
 
+    <div class="example">
+      <pre class="code">
+{
+  "keys": 
+    [{
+      "kty":"oct",
+      "alg":"A128KW",
+      "kid":"67ef0gd8pvfd0=",
+      "k":"GawgguFyGrWKav7AX4VKUg"
+    }]
+}</pre>
+    </div>
+    
 
     <h2 id="containers">7. Container Guidelines</h2>
     <p>This document describes behavior independent of specific media containers.
@@ -994,7 +1009,7 @@
   function handleMessage(event) {
     var keySession = event.target;
 
-    var key = new Uint8Array([ 0xaa, 0xbb, 0xcc, ... ]);
+    var key = new Uint8Array([ ... ]);
     keySession.<premethodref>update</premethodref>(key);
   }
 &lt;/script&gt;
--- a/encrypted-media/spec-html.xsl	Fri Jan 11 20:25:10 2013 -0800
+++ b/encrypted-media/spec-html.xsl	Mon Jan 14 16:35:01 2013 -0800
@@ -132,6 +132,10 @@
     <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#media-element</xsl:attribute>media element</a>
   </xsl:template>
 
+  <xsl:template match="//ascii-encoding">
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/infrastructure.html#ascii-compatible-character-encoding</xsl:attribute>ASCII-compatible character encoding</a>
+  </xsl:template>
+
   <xsl:template match="//non-normative-section">
     <p><i>This section is non-normative.</i></p>
   </xsl:template>