DRM Message

This article describes the valid format for the msg parameter of 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 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 acknowledgements

DRMHeartBeatURL

Optional

URL of a server that handles a heartbeat request

DRMHeartBeatPeriod

Optional

Duration between consecutive heartbeats (in seconds)

UserData

Optional

User data (Custom Data)

Do not use tag type data for custom data. It will be 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

You should do:

  • 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 will use no CustomData value in the generated license challenges.

Navigation