- From: <bugzilla@jessica.w3.org>
- Date: Mon, 15 Oct 2012 19:33:14 +0000
- To: public-html-bugzilla@w3.org
- Message-ID: <bug-17199-2486-K6ziSOVGEs@http.www.w3.org/Bugs/Public/>
https://www.w3.org/Bugs/Public/show_bug.cgi?id=17199 --- Comment #8 from Mark Watson <watsonm@netflix.com> --- Text proposal based on the above discussion: (add to 4.1) The following sections apply only in the case that both UA and Key System support secure proof of key release. 4.2 Persistent storage of key release messages The CDM must provide an origin-specific persistent store of proof of key release messages, each associated with a sessionId. 4.3 Providing a key release message Whenever a key is deleted due to execution of a method on MediaKeySession, the following steps shall be run: 1. Construct a proof of key release message, containing proof that the keys and licenses associated with the session were deleted and the time at which they were deleted. 2. Store the proof of key release message, together with the associated sessionId, in the persistent store. 3. Queue a task to fire a simple event named keymessage at the MediaKeySession object containing the message constructed at step one. Note: the following methods of MediaKeySession may cause keys to be deleted: close(), update(). If a MediaKeySession object is destroyed whilst keys are still present, for example due to closure of the window or navigation of the document, the following steps SHALL be run: 1. Construct a proof of key release message, containing proof that the keys and licenses associated with the session were deleted and the time at which they were deleted. 2. Store the proof of key release message in persistent store. Furthermore, the following step SHOULD be run: 3. Fire a simple event named keymessage at the MediaKeySession object containing the message constructed at step one. 4.4 Acknowledging receipt of a key release message Proof of receipt of the secure proof of key release by the server shall be provided within KeySystem-specific messages using the update() method of MediaKeySession. The following steps are added to step 2, substep 4 of the update() procedure: 3. For each acknowledgement of receipt of a secure proof of key release in key: 1. Remove the proof of key release message associated with sessionId from persistent store 4.5 Retrieving stored key release messages Step 2 of the procedure for the createSession() method of MediaKeys is modified by the introduction of a new step 1a as follows: 1a. If type is equal to the special string "keyrelease", then the 'retrieve a session with released key(s)' procedure shall be executed and the following steps aborted. When the 'retrieve a session with released key(s)' procedure is to be executed the following steps are run: 1. Let sessionId be the sessionId associated with the oldest proof of key release message in the persistent store for which no MediaKeySession object exists. If no such sessionId exists, thow a NOT_FOUND_ERR exeception and abort the procedure. 2. Create a new MediaKeySession object 1. Let the keySystem attribute be keySystem 2. Let the sessionId attribute be sessionId 3. Add the new object to an internal list of session objects 4. Schedule a task to generate a key release message, providing initData and the new object The user agent will asynchronously execute the following steps in the task: 1. Let cdm be the cdm loaded in the MediaKeys constructor 2. Let defaultURL be null 3. Use cdm to generate a key release message and follow the steps for the first matching condition from the following list: - If a key release message is sucessfully retrieved 1. Let keyrelease be the key release message generated by the CDM using initData, if provided 2. If initData was not null and contains a default URL for keySystem, let defaultURL be that URL - Otherwise 1. Create a new MediaKeyError object with the following attributes code = the appropriate MediaKeyError code systemCode = a Key System-specific value, if provided, and 0 otherwise 2. Set the MediaKeySession object's error attribute to the error object created in the previous step 3. queue a task to fire a simple event named keyerror at the MediaKeySession object 4. Abort the task 4. queue a task to fire a simple event named keymessage at the new object The event if of type MediaKeyMessageEvent and has: message = keyrelease destinationURL = defaultURL 5. Return the new object to the caller. -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Monday, 15 October 2012 19:33:16 UTC