Sign in

§4.1

Content Protection catalog fields

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:

Table 3
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:

Table 4
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.

This is one section of CMSF- a CMAF compliant implementation of MOQT Streaming Format, rendered per-section for quick reference and citation. The authoritative text is draft-ietf-moq-cmsf-01 at the IETF.