Content protection information is signaled in the catalog at two levels:
a root-level contentProtections array containing DRM system descriptions,
and track-level references to those descriptions.
4.1.1. Content Protections
Location: R Required: Optional JSON Type: Array
A JSON array of Content Protection objects at the root level of the catalog. Each object describes a single DRM system configuration. Content protection information MUST NOT be duplicated at the track level; all tracks reference the root-level entries.
Each Content Protection object contains the following fields:
4.1.1.1. Reference ID
Location: CP Required: Required JSON Type: String
A unique identifier for this content protection entry. Track entries
reference this value via the contentProtectionRefIDs field.
4.1.1.2. Default KIDs
Location: CP Required: Required JSON Type: Array of Strings
An array of default Key IDs (KIDs) expressed as UUID strings in the format "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx". These correspond to the default_KID values defined in [CENC] Section 5. When multiple KIDs are present, each identifies a key used to encrypt a different set of samples (e.g., separate keys for different track types).
4.1.1.3. Scheme
Location: CP Required: Required JSON Type: String
The Common Encryption protection scheme as defined in [CENC]. Allowed values are:
| Name | Value | Description |
|---|---|---|
| CENC | cenc | AES-CTR full sample and sub-sample encryption |
| CBCS | cbcs | AES-CBC pattern-based encryption with subsample |
The RECOMMENDED scheme for CMSF is "cbcs" as it provides better compatibility with hardware decoders and aligns with DASH-IF ECCP recommendations [DASHIF-ECCP].
4.1.1.4. DRM System
Location: CP Required: Required JSON Type: Object
An object describing the DRM system associated with this content protection entry. It contains the following fields:
4.1.1.4.1. System ID
Location: DS Required: Required JSON Type: String
The DRM System ID expressed as a UUID string. Well-known system IDs include:
| DRM System | System ID |
|---|---|
| Widevine | edef8ba9-79d6-4ace-a3c8-27dcd51d21ed |
| PlayReady | 9a04f079-9840-4286-ab92-e65be0885f95 |
| FairPlay | 94ce86fb-07ff-4f43-adb8-93d2fa968ca2 |
| ClearKey | 1077efec-c0b2-4d02-ace3-3c1e52e2fb4b |
The ClearKey system ID follows the W3C EME specification and corresponds to the DASH-IF ECCP "Explicit Clear Key Content Protection" mechanism [DASHIF-ECCP].
4.1.1.4.2. License URL
Location: DS Required: Optional JSON Type: Object
An object containing the URL of the license acquisition service. The object has the following fields:
-
url(String, Required): The URL of the license server. -
type(String, Optional): The license protocol type (e.g., "EME-1.0").
4.1.1.4.3. Certificate URL
Location: DS Required: Optional JSON Type: Object
An object containing the URL of the DRM certificate service. This field is REQUIRED for DRM systems that require a server certificate (e.g., FairPlay Streaming). The object has the following fields:
-
url(String, Required): The URL of the certificate server. -
type(String, Optional): The MIME type of the certificate resource (e.g., "application/pkcs7-mime", "application/x-x509-ca-cert"). This corresponds to the certType attribute defined in [DASHIF-ECCP].
4.1.1.4.4. Authorization URL
Location: DS Required: Optional JSON Type: Object
An object containing the URL of an authorization service. The object has the following fields:
-
url(String, Required): The URL of the authorization server. -
type(String, Optional): The authorization protocol type.
4.1.1.4.5. PSSH
Location: DS Required: Optional JSON Type: String
A Base64-encoded [BASE64] Protection System Specific Header (PSSH) box as defined in [CENC] Section 8.1. The PSSH box contains DRM system-specific initialization data needed by the client to acquire a license. This field SHOULD be present for DRM systems that require PSSH data (e.g., Widevine, PlayReady).
4.1.1.4.6. Robustness
Location: DS Required: Optional JSON Type: String
A string indicating the minimum robustness level required by the DRM system. The interpretation of this value is DRM system-specific.
4.1.2. Content Protection Reference IDs
Location: T Required: Optional JSON Type: Array of Strings
An array of Reference ID strings (see Section 4.1.1.1) identifying which content
protection entries from the root-level contentProtections array apply to
this track. When this field is present, the track content is encrypted
using Common Encryption [CENC] and the subscriber MUST acquire appropriate
licenses before decryption.
When this field is absent, the track content is not protected by Common Encryption.