Definitions of Types
1. Nagra, Harmonic & Nagra-CMAF interfaces
1.1. Simple Types
1.1.1. UUIDType
This type is used for identifiers that need to be unique in time and space. Its main advantage is to not depend on centralized data storage.
Base type | Pattern Restriction |
---|---|
xsd:token | [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12} |
1.1.2. DistributionModeType
Base type | Enumeration | Description |
---|---|---|
xsd:string | VOD | VOD content, only one content key per content. |
LIVE | LIVE content, key rotation shall be applied |
1.1.3. StreamingModeType
Base type | Enumeration | Description |
---|---|---|
xsd:string | DASH | Dynamic Adaptive Streaming over Http |
HLS | Http Live Streaming (Apple) | |
SMOOTH | Smooth Streaming is an IIS Media Services extension that enables adaptive streaming of media to clients over HTTP (Microsoft) | |
CUSTOM | Custom streaming mode |
1.1.4. KeyAndSignalizationReturnCodeType
Base type | Enumeration | Description |
---|---|---|
xsd:string | OK | The request succeeded. |
UNDEFINED_DRM_SYSTEM_ID | Should not occur, kept for interface compatibility | |
UNDEFINED_STREAMING_MODE | The provided streaming mode is not known in the system. | |
UNDEFINED_DISTRIBUTION_MODE | The provided distribution is not known in the system. | |
UNDEFINED_ENCRYPTION_METHOD | When the provided EMI does not match a valid encryption method or if the DRM does not support it. | |
INVALID_METADATA | The metadata associated to the DRM is not well formed (depends on the knowledge that is requested by the KSS). | |
UNAVALAIBLE_SERVICE | One of the resources used by the server is not available | |
INTERNAL_ERROR | A non-business error occurred at server level. | |
MISSING_KEY_ID | The key id has been omitted whereas a signalling request has been received (this error applies only when a DRM or a DRM proxy implements this interface) | |
MISSING_CONTENT_KEY | A key id has been provided by the encryptor but the associated content key has been omitted whereas it is necessary in this use case (where the encryptor provides the content key). | |
MISSING_STREAMING_MODE | The streaming mode has been omitted, it is always mandatory on this interface. | |
MISSING_ENCRYPTION_METHOD | The EMI is not provided in CUSTOM or PIFF streaming mode. | |
INVALID_KEY_LENGTH | The content key provided by the encryptor has an invalid length, key shall be 128 bit long. | |
ALREADY_EXISTING_KEY_ID | The content key provided by the encryptor has the same key id than an already existing different content key. |
1.1.5. HeartbeatReturnCodeType
Base type | Enumeration | Description |
---|---|---|
xsd:string | OK | The request succeeded. |
UNSUPPORTED_VERSION | The version requested by the encryptor does not match the one used by the KSS. | |
INTERNAL_ERROR | A non-business error occurred at server level. |
1.1.6. SystemStatusType
Base type | Enumeration | Description |
---|---|---|
xsd:string | ACTIVE | KSS is in an active state. |
STANDBY | KSS is in a standby state (not handling incoming requests). |
1.2. Data Structures
1.2.1. DrmContentType Structure
Field name | Field type | Multiplicity | Description |
---|---|---|---|
drmContentId | xsd:string | 1 | Identifier of the content id allocated by the CMS |
profile | SecurityProfileType | 1 | The set of properties for the management of the content key and the signalling |
1.2.2. ContentKeyType Structure
Field name | Field type | Multiplicity | Description |
---|---|---|---|
keyId | UUIDType | 1 | The unique identifier of the content key, provided as a normalized UUID |
key | xsd:base64binary | 0..1 | The content key Mandatory in the response if the KSS has the key generation role Mandatory in the request if the encryptor has this role |
iv | xsd:base64binary | 0..1 | The initialization vector (iv) Mandatory in the response either when the KSS has the key generation role and reaches the conditions to generate IV (sample-AES EMI) or when IV is provided in the request |
1.2.3. DrmInfoType Structure
Field name | Field type | Multiplicity | Description |
---|---|---|---|
drmSystemId | UUIDType | 1 | The unique identifier of the DRM system, provided as a normalized UUID |
drmName | xsd:string | 0..1 | The readable name for the DRM system. Not mandatory, but may help at configuration time. |
drmMetadata | xsd:base64binary | 0..1 | The DRM specific metadata associated to the related content. Reserved for future uses. |
1.2.4. DrmListType Structure
Field name | Field type | Multiplicity | Description |
---|---|---|---|
drm | DrmInfoType | 1..N | The list of addressed DRMs |
1.2.5. DrmSignalizationType Structure
Either one of DASH, HLS or PIFF field will be provided for a given DRM system.
Field name | Field type | Multiplicity | Description |
---|---|---|---|
dash | DashSignalizationType | 0..N | DASH signalling as a MPD content protection XML section and/or a PSSH box data |
hls | HlsSignalizationType | 0..N | HLS signalling mainly holds a key URI |
smooth | SmoothSignalizationType | 0..N | SMOOTH signalling as a manifest header XML section and/or a PSSH box data |
custom | CustomSignalizationType | 0..N | Custom signalling as a base 64 block for which format is specific to DRM trigged |
1.2.6. DashSignalizationType Structure
Field name | Field type | Multiplicity | Description |
---|---|---|---|
drmSystemid | UUIDType | 1 | The DRM system id for which the below signalling information applies |
drmName | xsd:string | 0..1 | Optional readable name of the DRM system |
manifestHeader | xsd:string | 0..1 | The content protection section to be inserted in the MPD |
psshBox | xsd:base64binary | 0..1 | DRM specific full pssh box binary block, provided as a base64 string |
1.2.7. SecurityProfileType Structure
Field name | Field type | Multiplicity | Description |
---|---|---|---|
distributionMode | DistributionModeType | 1 | Either VOD or LIVE, allows to know how to manage keys: VOD --> one key per content LIVE --> key rotation, several keys per content. |
streamingMode | StreamingModeType | 1 | Provides the way the content is streamed, used to build the signalling. Though the schema allows it to be optional, it is mandatory for this interface. |
emi | xsd:unsignedShort | 0..1 | Encryption method indicator as specified by NAGRA. If not provided, a configuration value will be assumed, except for CUSTOM streaming mode. |
cryptoPeriod | xsd:unsignedInt | 0..1 | Crypto period in seconds, to be applied when key rotation management is used. This information need to be compatible with the configured key rotation mode. Not yet used. |
1.2.8. ScheduledKeyType Structure
Field name | Field type | Multiplicity | Description |
---|---|---|---|
time | xsd:unsignedLong | 1 | The stream time at which the key will start being used. Value will be the POSIX time (or Unix epoch), the number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT). |
contentKey | ContentKeyType | 0..1 | If a content key is provided by the encryptor, no key will be generated for this request. If omitted, then it is generated or retrieved by the KSS. |
1.2.9. SmoothSignalizationType Structure (Same as Dash)
Field name | Field type | Multiplicity | Description |
---|---|---|---|
drmSystemId | UUIDType | 1 | The DRM system id for which the below signalling information applies |
drmName | xsd:string | 0..1 | Optional readable name of the DRM system |
manifestHeader | xsd:string | 0..1 | The content protection section to be inserted in the manifest |
psshBox | PsshType | 0..1 | Pssh signalling information |
1.2.10. HlsSignalizationType Structure
Field name | Field type | Multiplicity | Description |
---|---|---|---|
drmSystemid | UUIDType | 1 | The DRM system id for which the below signalling information applies |
drmName | xsd:string | 0..1 | Optional readable name of the DRM system |
keyUri | xsd:anyURI | 1 | Key URI to be inserted in the HLS playlist |
1.2.11. CustomSignalizationType Structure
Field name | Field type | Multiplicity | Description |
---|---|---|---|
drmSystemId | UUIDType | 1 | The DRM system id for which the below signalling information applies |
drmName | xsd:string | 0..1 | Optional readable name of the DRM system. |
data | xsd:string | 1 | DRM specific binary block, provided as a base64 URL-safe string |
2. Conax interface
2.1. AbstractResponseType
The AbstractResponseType defines a base type for the response messages. All response messages extend this type.
Element | Type | Description | Required |
---|---|---|---|
TransactionStatus | A status that describes the outcome of the operation | YES |
2.2. TransactionStatusType
The TransactionStatusType type describes the outcome of an operation.
Element | Type | Description | Required |
---|---|---|---|
StatusCode | xs:string | A code that describes the result of the operation. OK indicates success. | YES |
Message | xs:string | A description of the result of the operation | |
TransactionId | xs:string | A unique identifier of the transaction, assigned by the CA system |
2.3. DrmDataType
The DrmDataType defines an encryption key and the DRM headers for getting licenses for that key.
Element | Type | Description | Required |
---|---|---|---|
Key | xs:string | A 16-byte base64 encoded AES key | YES |
KeyId | xs:string | 128 bit long KeyID for the key returned in a base64 encoded format On DASH packaging this value identifies the default KID of the content in the MPD. | YES |
ContentRef | xs:string | A unique identifier for the content in SSP. The ID is 36 characters (32 hexadecimal characters and four hyphens) and follows the GUID syntax. | YES |
DrmHeaderData | DrmHeaderDataType | The DRM headers for the indicated DRM systems. | YES |
2.4. DrmHeaderDataType
The DrmHeaderDataType defines the DRM header for the indicated DRM system.
Element | Type | Description | Required |
---|---|---|---|
DrmId | xs:string | Identification of DRM system and packaging. Possible values :
| YES |
Header | xs:string | DRM header data For HLS: The header is formatted as a URI to be inserted in the EXT-X-KEY tag in the HLS playlist file. For Smooth Streaming: The header is base64 encoded. After base64 decoding, the header is inserted in the Smooth Streaming protection system header. For CENC/MPEG-DASH: The header contains base64 encoded DRM-specific data. After base64 decoding, the header has two possible usages:
| YES |
DrmSystemId | xs:string | DRM system ID of the current DRM system. This element is included in the service response on DASH packaging. It is omitted on the other packaging types. | |
IV | xs:string | A 128 bit long base64 encoded initialization vector If the IV element is present in the response, the initialization vector shall be used by the encoder. | |
LicenseServer | xs:string | The URL for the License Server |