[Bug 25218] New: Allow license management directly via MediaKeys

https://www.w3.org/Bugs/Public/show_bug.cgi?id=25218

            Bug ID: 25218
           Summary: Allow license management directly via MediaKeys
           Product: HTML WG
           Version: unspecified
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Encrypted Media Extensions
          Assignee: adrianba@microsoft.com
          Reporter: steele@adobe.com
        QA Contact: public-html-bugzilla@w3.org
                CC: mike@w3.org, public-html-media@w3.org

We have been having a lot of discussion about how key lifecycle should be
managed. I will throw another proposal out there which can meet all the needs I
have heard expressed so far. 

Here are the problems I see:
1) A session may contain more than just a single license.  
2) A license may be shared between content streams (e.g. domain licenses) 
3) A license may or may NOT be allowed to be persisted on the device
4) The application may want to manage licenses directly to the extent possible
5) The application may require a license release notification

Items 1 & 2 mean that managing the session itself is not good enough. The
application cannot know what is in the "session" without key system specific
logic that we are trying to avoid. 
Item 3 means that we must throw an error when the CDM does not support the
behavior - either because it is incapable or because policy does not allow it.
Item 4 means we must have a way of identifying individual licenses in the
session. 
Item 5 means we would like a way of identifying licenses as they are released.

I propose we add a license specific set of methods to the MediaKeySession:

void MediaKeySession::removeKey(DomString keyID);
This would remove the key identified by the keyID if present and send any
required key notifications. It would return an error if the key is not present.

void MediaKeySession::loadKey(DomString keyID);
This would remove the key identified by the keyID if present into the current
MediaKeySession. It would return an error if the key is not present.

void MediaKeySession::queryKey(DomString keyID);
This would create an opaque blob containing the key identified by the keyID if
present. The blob would be returned as a message or an error would be returned
if the key was not present. 

This would remove the need for the MediaKeySession.release() method. It would
not remove the need for the "persistent/ephemeral" license type flag to be
passed to createSession() since that would provide a useful error message.

I also think we should change Section 1.1.3. Key Session to reflect that
license/key lifetime can now be managed directly.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Received on Monday, 31 March 2014 20:48:32 UTC