Use explicit Content Keys

By default, MK.IO will take care of the generating and propagating keys for use in key server and license server. However it is also supported to define the a key and the key ID for any of the enabled encryption defined in a streaming policy.

Below is a sample curl request injecting a new streaming locator with a predefined streaming policy and content key policy that defines contentKeys CENC, CBCS and ClearKey encryptions:

curl --request PUT \
     --url \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'x-mkio-token: " token" \
     --data '
    "properties": {
        "assetName": "ASSET_NAME",
        "streamingPolicyName": "SP_NAME",
        "contentKeys": [
                "id": "d1e755c0-14cd-491e-aafb-83277872dd3a",
                "type": "CommonEncryptionCenc",
                "labelReferenceInStreamingPolicy": "ContentKey_CENC",
                "value": "4UqLohAfWsEGkULYxHjYZg==",
                "policyName": "KP_NAME",
                "id": "deaea8ec-5509-4c38-80a3-ab0767cd9bab",
                "type": "CommonEncryptionCbcs",
                "labelReferenceInStreamingPolicy": "ContentKey_CBCS",
                "value": "5UqLohAfWsEGkULYxHjYZg==",
                "policyName": "KP_NAME",
                "id": "b1c4dcac-30cc-41f9-b09b-bf4d16226c91",
                "type": "EnvelopeEncryption",
                "labelReferenceInStreamingPolicy": "ContentKey_AES",
                "value": "6UqLohAfWsEGkULYxHjYZg==",
                "policyName": "KP_NAME",

If keys and key IDs are manually defined in the streaming locator, MK.IO will propagate the defined keys to the key server and license server. MK.IO will make sure that those keys are unprovisioned upon deletion of the streaming locator.

For PlayReady this capability can be combined with the External Playready license URL to build a complete DRM workflow out of MK.IO.