Interface ICencDRMInfo

All Known Subinterfaces:
ICencDRMInfo2

public interface ICencDRMInfo

Interface for Common Encryption (CENC) DRM information classes. DRM system-specific metadata can be attached to a stream's CENC data to indicate that a stream or a media segment within that stream is protected by the particular DRM system, and may be authorized and decrypted by a player client using the provided DRM system metadata. The metadata provided by classes implementing ICencDRMInfo is inserted into a stream's manifest and/or fragment files. CENC DRM support is in accordance with the Common Encryption standard (ISO/IEC 23001-7).

  • Method Summary

    Modifier and Type
    Method
    Description
    void
    deserialize(byte[] data)
    Sets all internal class data by deserializing the data from the provided byte buffer representation of the class.
    byte[]
    generateKey(byte[] KID)
    Generates a 128-bit content key for use in AES encryption.
    getMPEGDashCPSubElements(boolean keyRotation)
    Returns a string defining zero or more custom xml elements to be inserted as sub-elements to the ContentProtection element that defines the DRM system in an MPEG-DASH MPD.
    Returns a string defining zero or more custom xml name space strings to be inserted into an xml-formatted manifest, such as an MPEG-DASH MPD.
    byte[]
    getPsshData(boolean keyRotation)
    Returns the DRM system-specific binary data associated with the encryption of the media.
    Returns the DRM system id.
    Returns a string defining the DRM system name.
    Returns the license acquisition URL.
    boolean
    Verifies whether all required class parameters have been set, such as systemId.
    byte[]
    Returns a byte buffer with a serialized representation of the class, which could later be reconstituted back into the class via the deserialize method.
    void
    setPsshData(byte[] psshData)
    Sets the DRM system-specific binary data associated with the encryption of the media.
    void
    setSystemId(String systemId)
    Sets the DRM system id.
    void
    Sets the license acquisition URL.
    boolean
    Verifies whether dynamic key generation is supported.
    void
    updateKeyInfo(byte[] KID, byte[] contentKey)
    Sets the new key id and a 128-bit content key values for use in AES encryption.
  • Method Details

    • setSystemId

      void setSystemId(String systemId)
      Sets the DRM system id.

      Example: "12345678-1234-1234-1234-123456789012"

      Parameters:
      systemId - DRM system id
    • getSystemId

      String getSystemId()
      Returns the DRM system id.
      Returns:
      DRM system id string
    • getURL

      String getURL()
      Returns the license acquisition URL.
      Returns:
      license acquisition URL string
    • setURL

      void setURL(String url)
      Sets the license acquisition URL.

      Example: "http://www.mycompany.com/sdrm/rightsmanager.asmx"

      Parameters:
      url - license acquisition URL string
    • getNameSpaces

      String getNameSpaces()
      Returns a string defining zero or more custom xml name space strings to be inserted into an xml-formatted manifest, such as an MPEG-DASH MPD.

      Example: xmlns:sdrma="urn:mycompany:superdrm:a" xmlns:sdrmb="urn:mycompany:superdrm:b"

      Returns:
      zero or more xml name space strings separate by spaces, with a "" or 'null' return indicating no custom namespaces
    • getMPEGDashCPSubElements

      String getMPEGDashCPSubElements(boolean keyRotation)
      Returns a string defining zero or more custom xml elements to be inserted as sub-elements to the ContentProtection element that defines the DRM system in an MPEG-DASH MPD. The element would typically contain Base64-encoded system-specific metadata.

      Example: <sdrma:hdr><!-- base64-encoded data --></sdrma:hdr>

      The resulting ContentProtection element would look something like:

      <ContentProtection schemeIdUri="urn:uuid:12345678-1234-1234-1234-123456789012" value="SuperDRM">
         <sdrma:hdr><!-- base64-encoded data --></sdrma:hdr>
      </ContentProtection>

      Parameters:
      keyRotation - indicates whether key rotation is enabled
      Returns:
      string defining the MPEG-DASH ContentProtection sub-elements
    • getSystemName

      String getSystemName()
      Returns a string defining the DRM system name. This string would be used as the value of the value attribute in the ContentProtection element that defines the DRM system in an MPEG-DASH MPD.

      Example: "SuperDRM"

      The resulting ContentProtection element in an MPEG-DASH MPD would look something like:

      <ContentProtection schemeIdUri="urn:uuid:12345678-1234-1234-1234-123456789012" value="SuperDRM">
         <sdrma:hdr><!-- base64-encoded data --></sdrma:hdr>
      </ContentProtection>

      Returns:
      string defining the DRM system name
    • supportsKeyGeneration

      boolean supportsKeyGeneration()
      Verifies whether dynamic key generation is supported. This capability is only required for dynamic random key rotation support.
      Returns:
      true if dynamic key generation is supported, else false
      See Also:
    • generateKey

      byte[] generateKey(byte[] KID)
      Generates a 128-bit content key for use in AES encryption. Support for this method is only required when dynamic random key generation & rotation is supported.
      Parameters:
      KID - key id for which a content key should be generated
      Returns:
      byte buffer containing the generated content key, or null if not supported
      See Also:
    • updateKeyInfo

      void updateKeyInfo(byte[] KID, byte[] contentKey)
      Sets the new key id and a 128-bit content key values for use in AES encryption. Support for this method is only required in a Common Encryption scenario where dynamic random key generation & rotation is supported.
      Parameters:
      KID - new key id in effect
      contentKey - new content key in effect
      See Also:
    • serialize

      byte[] serialize()
      Returns a byte buffer with a serialized representation of the class, which could later be reconstituted back into the class via the deserialize method.
      Returns:
      byte buffer containing a serialized representation of the class
      See Also:
    • deserialize

      void deserialize(byte[] data)
      Sets all internal class data by deserializing the data from the provided byte buffer representation of the class.
      Parameters:
      data - byte buffer containing the serialized representation of the class
      See Also:
    • getPsshData

      byte[] getPsshData(boolean keyRotation)
      Returns the DRM system-specific binary data associated with the encryption of the media. This data will be inserted into an ISOBMFF pssh box and identified by the associated systemId.
      Parameters:
      keyRotation - indicates whether key rotation is enabled
      Returns:
      byte buffer containing the DRM system-specific binary data for the pssh box
    • setPsshData

      void setPsshData(byte[] psshData)
      Sets the DRM system-specific binary data associated with the encryption of the media. This data will be inserted into an ISOBMFF pssh box and identified by the associated systemId.
      Parameters:
      psshData - DRM system-specific binary data for the pssh box
    • isComplete

      boolean isComplete()
      Verifies whether all required class parameters have been set, such as systemId.
      Returns:
      true if all required class parameters have been set, else false