DRM Messages
This article describes the valid format for the msg parameter of the sendDrmMessage method.
Widevine
<?xml version="1.0" encoding="utf-8"?>
<WidevineCredentialsInfo xmlns="http://www.smarttv-alliance.org/DRM/widevine/2012/protocols/" >
<ContentURL>$(ContentURL)</ContentURL>
<DeviceID>$(DeviceID)</DeviceID>
<StreamID>$(StreamID)</StreamID>
<ClientIP>$(Client)</ClientIP>
<DRMServerURL>$(DRMServerURL)</DRMServerURL>
<DRMAckServerURL>$(DRMSAckerverURL)</DRMAckServerURL>
<DRMHeartBeatURL>$( HeartbeatServerURL)</DRMHeartBeatURL>
<DRMHeartBeatPeriod>$(DRMHeartBeatPeriod)</DRMHeartBeatPeriod>
<UserData>$(UserData) </UserData>
<Portal>$(Portal)</Portal>
<StoreFront>$(Portal)</StoreFront>
<BandwidthCheckURL>$(BandwidthCheckURL) </BandwidthCheckURL>
<BandwidthCheckInterval>$(BandwidthCheckInterval)</BandwidthCheckInterval>
</WidevineCredentialsInfo >
Element | Support by CSP* | Description |
---|---|---|
ContentURL | Mandatory | Content URL |
DRMServerURL | Mandatory | URL for the Widevine DRM key server |
DeviceID | Optional | Unique ID of the device |
ClientIP | Optional | Client IP address |
StreamID | Optional | Unique ID of the stream being requested in the entitlement request |
DRMAckServerURL | Optional | URL for entitlement delivery acknowledgments |
DRMHeartBeatURL | Optional | URL of a server that handles a heartbeat request |
DRMHeartBeatPeriod | Optional | The duration between consecutive heartbeats (in seconds) |
UserData | Optional | User data (Custom Data). Do not use tag type data for custom data. It is recognized as sub-elements and that makes parsing error. |
Portal | Optional | Portal URL |
StoreFront | Optional | StoreFront URL |
BandwidthCheckURL | Optional | The URL for bandwidth check server |
BandwidthCheckInterval | Optional | Interval of bandwidth check |
*CSP: Content Service Provider |
- Even if you do not use the optional elements, you must specify the elements with an empty value.
- You should keep the order of XML elements in the Widevine message as above table and example.
PlayReady
Pre-acquisition
<?xml version="1.0" encoding="utf-8"?>
<PlayReadyInitiator xmlns= "http://schemas.microsoft.com/DRM/2007/03/protocols/">
<LicenseAcquisition>
<Header>
<WRMHEADER xmlns= "http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0">
<DATA>
<PROTECTINFO>
<KEYLEN>16</KEYLEN>
<ALGID>AESCTR</ALGID>
</PROTECTINFO>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
<KID>lFmb2gxg0Cr5bfEnJXgJeA==</KID>
<CHECKSUM>P7ORpD2IpA==</CHECKSUM>
</DATA>
</WRMHEADER>
</Header>
<CustomData>AuthZToken XYZ</CustomData>
</LicenseAcquisition>
</PlayReadyInitiator>
Element | Support by Device | Include by Service |
---|---|---|
Header | Mandatory | Mandatory |
CustomData | Mandatory | Optional |
Authentication with custom data for post-acquisition
License server url overriding for license post-acquisition
<?xml version="1.0" encoding="utf-8"?>
<PlayReadyInitiator xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/">
<LicenseServerUriOverride>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
</LicenseServerUriOverride>
</PlayReadyInitiator>
After this message, all further license post-acquisitions send the license challenge to the specified LA_URL, not to the default LA_URL contained in the WRMHEADER of the content (application persistence). License pre-acquisitions are not affected by this command.
<?xml version="1.0" encoding="utf-8"?>
<PlayReadyInitiator xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/">
<LicenseServerUriOverride>
<LA_URL></LA_URL>
</LicenseServerUriOverride>
</PlayReadyInitiator>
After this message, all further license post-acquisitions send the license challenge to the default LA_URL contained in the WRMHEADER of the content (URL overriding canceled).
Set challenge customdata for license post-acquisition
<?xml version="1.0" encoding="utf-8"?>
<PlayReadyInitiator xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/">
<SetCustomData>
<CustomData>AuthZToken XYZ</CustomData>
</SetCustomData>
</PlayReadyInitiator>
After this message, all further license post-acquisitions use the specified value, as the CustomData value of the generated license challenges (application persistence). License pre-acquisitions are not affected by this command.
<?xml version="1.0" encoding="utf-8"?>
<PlayReadyInitiator xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/">
<SetCustomData>
<CustomData></CustomData>
</SetCustomData>
</PlayReadyInitiator>
After this message, all further license post-acquisitions use no CustomData value in the generated license challenges.