DRMtoday

DRMtoday

drmtoday:ingest-cenc-key

Ingests a key to DRMtoday API (v3) and provides the ingested key info as environment variables. The tool always exports these environment variables:

* [env_prefix]_asset_id: the DRMtoday asset ID in UTF-8

* [env_prefix]_base64: the CEK as base64 string
* [env_prefix]_hex: the CEK as hex string

* [env_prefix]_id_base64: the Key ID as base64 string
* [env_prefix]_id_hex: the Key ID as hex string

* [env_prefix]_iv_base64: the FairPlay IV as base64 string
* [env_prefix]_iv_hex: the FairPlay IV as hex string

    @PlayReady
* [env_prefix]_pssh_pr_ctr_b64: the PSSH box for PlayReady AES-CTR as base64 string
* [env_prefix]_pssh_pr_cbc_b64: the PSSH box for PlayReady AES-CBC as base64 string
* [env_prefix]_pssh_pr_ctr_hex: the PSSH box for PlayReady AES-CTR as hex string
* [env_prefix]_pssh_pr_cbc_hex: the PSSH box for PlayReady AES-CBC as hex string
* [env_prefix]_cpe_pr_ctr_xml: the DASH manifest content protection element for PlayReady AES-CTR as XML
element string
* [env_prefix]_cpe_pr_cbc_xml: the DASH manifest content protection element for PlayReady AES-CBC as XML
element string
* [env_prefix]_phe_pr_ctr_xml: the MSS manifest protection header element for PlayReady AES-CTR as base64 string
* [env_prefix]_exk_pr_cbc_tag: the HLS EXT-X-KEY tag for PlayReady AES-CBC as string
* [env_prefix]_exsk_pr_cbc_tag: the HLS EXT-X-SESSION-KEY tag for PlayReady AES-CBC as string

    @Widevine
* [env_prefix]_pssh_wv_ctr_b64: the PSSH box for Widevine AES-CTR as base64 string
* [env_prefix]_pssh_wv_cbc_b64: the PSSH box for Widevine AES-CBC as base64 string
* [env_prefix]_pssh_wv_ctr_hex: the PSSH box for Widevine AES-CTR as hex string
* [env_prefix]_pssh_wv_cbc_hex: the PSSH box for Widevine AES-CBC as hex string
* [env_prefix]_cpe_wv_ctr_xml: the DASH manifest content protection element for Widevine AES-CTR as XML element
string
* [env_prefix]_cpe_wv_cbc_xml: the DASH manifest content protection element for Widevine AES-CBC as XML element
string
* [env_prefix]_exk_wv_cbc_tag: the HLS EXT-X-KEY tag for Widevine AES-CBC as string
* [env_prefix]_exsk_wv_cbc_tag: the HLS EXT-X-SESSION-KEY tag for Widevine AES-CBC as string

    @FairPlay
* [env_prefix]_exk_fp_cbc_skd: the HLS EXT-X-KEY SKD URI for FairPlay AES-CBC as string
* [env_prefix]_exk_fp_cbc_tag: the HLS EXT-X-KEY tag for FairPlay AES-CBC as string
* [env_prefix]_exsk_fp_cbc_tag: the HLS EXT-X-SESSION-KEY tag for FairPlay AES-CBC as string

    @ChinaDRM
* [env_prefix]_pssh_cd_ctr_b64: the PSSH box for ChinaDRM AES-CTR as base64 string
* [env_prefix]_pssh_cd_cbc_b64: the PSSH box for ChinaDRM AES-CBC as base64 string
* [env_prefix]_pssh_cd_ctr_hex: the PSSH box for ChinaDRM AES-CTR as hex string
* [env_prefix]_pssh_cd_cbc_hex: the PSSH box for ChinaDRM AES-CBC as hex string
* [env_prefix]_cpe_cd_ctr_xml: the DASH manifest content protection element for ChinaDRM AES-CTR as XML element
string
* [env_prefix]_cpe_cd_cbc_xml: the DASH manifest content protection element for ChinaDRM AES-CBC as XML element
string
* [env_prefix]_exk_cd_cbc_tag: the HLS EXT-X-KEY tag for ChinaDRM AES-CBC as string
* [env_prefix]_exsk_cd_cbc_tag: the HLS EXT-X-SESSION-KEY tag for ChinaDRM AES-CBC as string

Example:

{
    "parameters": {
        "environment": "{env}",
        ["key_id" : "{uuid}",]
        ["key_seed_id" : "{uuid}" [OR] "key" : "00000000-11111-3333-4444-999999999999",]
        ["env_prefix": "key",]
        "asset_id" : "{assetid}",
        ["variant_id" : "{varintid}",]
        ["iv_seed_id" : "{uuid}" [OR] "iv": "00000000-11111-3333-4444-999999999999", -- only if FairPlay is in use ]
        "stream_type" : "VIDEO_AUDIO",
        "user" : "{api::user}",
        "password" : "{password}",
        "clearkey": "false",
        "overwrite": "false"
    },
    "tool": "DRMtoday:ingest_cenc_key"
}

Parameter

Properties

Default

Type

Choice

Description

asset_id

required

stream_type

required

‘VIDEO_AUDIO’, ‘VIDEO’, ‘AUDIO’, ‘SD’, ‘HD’, ‘UHD’, ‘UHD2’

user

required

password

required

environment

optional

PROD

str

‘prod’, ‘test’, ‘staging’, ‘PROD’, ‘TEST’, ‘STAGING’

key_id

optional

key_id is optional. A random key_id will be generated when none given. The key_id will be available in the environment as {[env_prefix]}_id_base64 and {[env_prefix]}_id_hex

key_seed_id

optional

key_seed_id is optional. A random key will be generated when neither key nor key_seed_id is given.

key

optional

key is optional. If key_seed_id is given a key will be generated otherwise a random key will be generated. The key will be available in the environment as {[env_prefix]}_base64 and {[env_prefix]}_hex

env_prefix

optional

key

str

variant_id

optional

iv

optional

iv is optional. When given, it’ll be ingested along with the key. If not given, a random one will be generated.

iv_seed_id

optional

iv_seed_id is optional. When given, it’s used to derive the actual IV. A random IV will be generated when neither iv or iv_seed_id are given.

overwrite

optional

false

bool

Enforce Keyingest by allowing overwriting existing assets.

clearkey

optional

false

bool

Keys ingested will be available in clear form, please read for further information https://fe.staging.drmtoday.com/frontend/documentation/integration/player/hlsclearkey.html#player-integration-clearkey

drmtoday:ingest-onboard

Ingests a key-pair via DRMtoday Onboard API for the remote device management service DRMtoday Onboard

  • Key pairs are collapsed into one single delivery, within one single delivery group of a content cycle.

  • An existing key will be replaced if the same key-id is issued.

  • A new delivery group will be created (UUID) if a new cycle_id is issued.

  • An existing delivery group will be re-used, if a cycle_id with an existing delivery group is present.

  • A tag will only be added to an existing delivery group if not already present.

  • Metadata will be replaced unless omitted

key_iv => not yet supported by API, IVs should be 0x00000000000000000000000000000000 or derived from key_seed track_types compliant to APEX 0415

Example:

{
    "parameters": {
        "key_id": "AAAAAAAAAAAAAAAAAAAAAA==",
        "key": "AAAAAAAAAAAAAAAAAAAAAQ==",
        "track_type": "NON_ENHANCED_SD",
        "cycle_id": "EAGLE_202401_V1",
        "tags": ["tag1", "tag2"],
        "metadata": "Description",
        "organization_id": "urn:janus:organization:00000000000000000000000000000000",
        "user_urn": "urn:janus:user:00000000000000000000000000000000",
        "access_key_id": "urn:janus:accesskey:00000000000000000000000000000000",
        "secret_access_key": "00000000000000000000000000000000"
    },
    "tool": "drmtoday:ingest-onboard"
}

Parameter

Properties

Default

Type

Choice

Description

key_id

required

128 Bit Base64 encoded content-key-id, i.e. {[env_prefix]}_id_base64

key

required

128 Bit Base64 encoded content-key, i.e. {[env_prefix]}_base64

cycle_id

required

str

Content Cycle ID

organization_id

required

str

castLabs Janus Organization ID, i.e. urn:janus:organization:00000000000000000000000000000000

user_urn

required

str

castLabs Janus user ID, i.e. urn:janus:user:00000000000000000000000000000000

access_key_id

required

str

castLabs Janus user access key ID, i.e. urn:janus:accesskey:00000000000000000000000000000000

secret_access_key

required

str

castLabs Janus user secret access key, i.e. 00000000000000000000000000000000

track_type

optional

str

‘AUDIO’, ‘NON_ENHANCED_SD’, ‘NON_ENHANCED’, ‘ENHANCED’

APEX 0415 Track Type

metadata

optional

str

Description

tags

optional [list value]

List of tags

environment

optional

PROD

str

‘TEST’, ‘PROD’

Previous topic: Passwords and Security
Next topic: Transcoding