OTT DRM Signaling
1. Overview
This page details the DRM signalings handled by the SSP Content Key Management services.
It is intended to support OTT integration cases. If several pre-encrypted contents already exist, this documentation will inform weither or not the DRM signaling is already compatible with SSP.
For Post-Delivery in content authorization mode, SSP will always consider the content ID specified in the SSP token to retrieve the keys from the key server.
This mechanism is common to all DRMs.
2. PlayReady DRM Signaling
PlayReady DASH signaling is defined here.
The standard SSP signaling contains the content ID. It is defined in the custom attributes of the PlayReady Header Object.
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
<DATA>
<PROTECTINFO>
<KIDS>
<KID ALGID="AESCTR" CHECKSUM="XdR5ZOIlmSU=" VALUE="mZmZmSIiMzNERBAAFgAAEQ=="> </KID>
</KIDS>
</PROTECTINFO>
<LA_URL>https://BBAND.anycast.nagra.com/BBAND/prls/contentlicenseservice/v1/licenses</LA_URL>
<LUI_URL>https://BBAND.anycast.nagra.com/BBAND/prls/contentlicenseservice/v1/licenses</LUI_URL>
<CUSTOMATTRIBUTES>
<nv:ContentId xmlns:nv="urn:schema-ssp-nagra-com">Content_01</nv:ContentId>
</CUSTOMATTRIBUTES>
</DATA>
</WRMHEADER>
The content ID in the signaling is optional, when absent only the value present in the SSP token is taken into consideration.
3. Widevine DRM Signaling
Widevine DASH signaling is defined here. (A Widevine licence agreement is required to access this document – see this page for details.)
Widevine HLS signaling is defined here.
SSP supports three Widevine PSSH formats :
Containing the key IDs and the content ID - Standard SSP.
- CODE
{"keyIds":["U9tVJT1DRs6QH5L/PJ/lAQ=="],"contentId":"Q29udGVudF8wMQ=="}
Containing the key IDs only.
- CODE
{"keyIds":["U9tVJT1DRs6QH5L/PJ/lAQ=="]}
Containing the content ID only, in a UUID format.
- CODE
{"contentId":"MTBmZjlhMzEtMTBiZC00ODgwLWIyMzEtZmZkZjg0ZGNhOGMy"}
The key ID will be generated based on the content ID, in this case :
- CODE
{"KeyId":"10ff9a31-10bd-4880-b231-ffdf84dca8c2"}
Containing the content ID only, clear value in any format.
- CODE
{"contentId":"c3BpZGVyLW1hbi0x"}
In this case, the key ID must be specified in the SSP token.
4. FairPlay DRM Signaling
4.1. Standard SSP FairPlay DRM Signaling
FairPlay HLS signaling is defined as part of the FPS SDK downloadable here.
The standard SSP asset ID is a Json string containing ContentId, KeyId and IV (IV is optional), encoded in base64.
Example :
#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://eyAiQ29udGVudElkIjoiR29uZSB3aXRoIHRoZSBXaW5kIiwgIktleUlkIjoiOTFhMWU0NDctNjg0Yi00YWNlLWI2Y2UtNDAxMTYwZjA3ZjAxIiwgIklWIjoiRWo1RloraWJFdE9rVmtKbVZVUUFBQT09IiB9",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"
Asset ID in clear format :
{
"ContentId": "Gone with the Wind",
"KeyId": "91a1e447-684b-4ace-b6ce-401160f07f01",
"IV": "Ej5FZ+ibEtOkVkJmVUQAAA=="
}
4.2. Full list of supported FairPlay asset IDs
SSP supports five formats of asset IDs to facilitate the integration with our system :
A string starting with "skd://" and followed by the json string, encoded in base64 - Standard SSP
- CODE
#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://eyJDb250ZW50SWQiOiJhYmMiLCAiS2V5SWQiOiIxMGZmOWEzMS0xMGJkLTQ4ODAtYjIzMS1mZmRmODRkY2E4YzIiLCAiSVYiOiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPT0ifQ==",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"
A string starting with "skd://" and followed by the key ID, not encoded.
- CODE
#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://0f3ce999-4be0-4780-b144-daa8b3ce6a17",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"
A string starting with "skd://" and followed by the key ID, not encoded and without dashes.
- CODE
#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://10ff9a3110bd4880b231ffdf84dca8c2",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"
The key ID with dashes is generated by the license server, in this case :
- CODE
{"KeyId":"10ff9a31-10bd-4880-b231-ffdf84dca8c2"}
5. PRM DRM Signaling
PRM DASH and HLS signaling is defined in PRM-Signaling_IRS.pdf.