CPIX API Guide

Overview

The CPIX API is an API implemented in accordance with the Content Protection Information Exchange Format (CPIX) Standard Guide as defined by the DASH Industry Forum. It defines specifications that link the keys required to apply multi-DRM in the process of packaging media contents. With this API, PallyCon Multi DRM can be easily linked with encoder/transcoder solution supporting CPIX based key exchange.

CPIX API Types

PallyCon Multi DRM can be integrated with the following types of CPIX API depending on the implementation subject of API.

  • PallyCon CPIX API: The CPIX API implemented by PallyCon, allowing encoder/transcoder solution vendors to work with PallyCon Multi DRM with the corresponding API. Flussonic Media Server is integrated using PallyCon CPIX API.

  • SPEKE API: The CPIX API implemented by AWS Elemental, which is pre-integrated with PallyCon to easily apply PallyCon Multi DRM to MediaPackage or MediaConvert products of AWS Elemental Media Service. For more information about SPEKE API integration, please refer to the guide.

  • Anevia CPIX API: The CPIX API implemented by Anevia. It can be easily applied to PallyCon Multi DRM with Anevia NEA-DVR solution.

PallyCon CPIX API

This API is implemented by PallyCon according to the CPIX implementation guide of DASH-IF.

Please refer to the following guide for details of CPIX specification. https://dashif.org/docs/CPIX2.1/HTML/Index.html

Supported Features

PallyCon CPIX API supports the following content types and functions.

PlayReady Widevine FairPlay AES-128
DASH (key rotation supported) (key rotation supported)
HLS (key rotation supported) (NCG DRM supported)

KMS URL Specification

PallyCon CPIX API provides the following KMS URL specifications. The enc-token at the end of the URL is an API authentication token that is generated when you sign up PallyCon service, and can be found on the PallyCon Console site.

KMS URL V1 - https://kms.pallycon.com/v1/cpix/pallycon/getKey/{enc-token}
KMS URL V2 - https://kms.pallycon.com/v2/cpix/pallycon/getKey/{enc-token}

Encoder/transcoder solution calls the above URL to get the key needed for DRM encryption. Add the CPIX data as shown in the following example to the body part of the request data, and call it by POST method.

KMS Specification V2 and Multi-key Packaging

Request/response data for multi-key packaging has been added to the V2 specification. Multi-key packaging encrypts video tracks by resolution with different keys, and is required for setting the security level for each resolution by Hollywood Studio requirement.

For multi-key packaging, the following items should be added to the corresponding XML request data.

If you want to package with single key, you may remove the below items from the example request XML.

IntendedTrackType

Sets the track type (SD, HD, etc) to be encrypted with the kid in cpix:ContentKeyUsageRule tag. The values that can be entered and the default resolution are as follows.

  • AUDIO: for audio track
  • SD: 576p or less
  • HD: 720p ~ 1080p
  • UHD1: 4K
  • UHD2: 8K

VideoFilter

You can set the min/max pixels of the video track using VideoFilter tag and minPixels / maxPixels parameters.

Content ID Specification

When packaging content with PallyCon CPIX API, you must enter a unique content ID(CID) managed by the CMS of the content service. The CID is registered with PallyCon license server and used to request and issue DRM licenses on content playback.

Enter the content ID (max 200 alphanumeric characters) in the cpix:CPIX tag of the request body(XML) for each content type as below.

<cpix:CPIX id="your-content-id"

Example for DASH VOD content

Request body

<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="your-content-id" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
  <cpix:ContentKeyList>
      <cpix:ContentKey kid="681e5b39-49f2-4dfa-b744-86573c22e6fb"></cpix:ContentKey>
  </cpix:ContentKeyList>
  <cpix:DRMSystemList>
      <!-- Common encryption / MSS (Playready) -->
      <cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="9a04f079-9840-4286-ab92-e65be0885f95" />
      <!-- Common encryption (Widevine)-->
      <cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
  </cpix:DRMSystemList>
</cpix:CPIX>
  • <cpix:CPIX id="": Enter a unique ID for the content to be packaged. In the case of single-key packaging, only this part in the above example needs to be modified.
  • kid: Used to identify the key to be issued for each track during multi-key packaging. You can enter any value for single key packaging, because the kid value in request data is not used.
  • systemId: Enter a unique uuid value specified for each DRM. (case insensitive)

Response

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" >
   <cpix:ContentKeyList>
       <cpix:ContentKey explicitIV="MDEyMzQ1Njc4OWFiY2RlZg==" kid="12ea753c-23e7-bc02-4474-b2b976c43beb">
           <cpix:Data>
               <pskc:Secret>
                   <pskc:PlainValue>SzC1qc1cEpyFU6t/lL7Byw==</pskc:PlainValue>
               </pskc:Secret>
           </cpix:Data>
       </cpix:ContentKey>
   </cpix:ContentKeyList>
   <cpix:DRMSystemList>
       <!-- Common encryption / MSS (Playready) -->
       <cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
            <cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- Added to V2 -->
           <cpix:PSSH>AAACwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAqKiAgAAAQABAJgCPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBQAEgAWABxAEUAdQBjAGoAQQByAHgARQBkAEwASwA1AGQAcwBRADcANgB3AD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AC8ARgA3AEIAMQBmAEgAMgBlADAAYwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHQAZQBzAHQAdABvAGsAeQBvAC4AcABhAGwAbAB5AGMAbwBuAC4AYwBvAG0ALwByAGkALwBwAGwAYQB5AHIAZQBhAGQAeQAvAGwAaQBjAGUAbgBzAGUATQBhAG4AYQBnAGUAcgAuAGQAbwA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</cpix:PSSH>
       </cpix:DRMSystem>
       <!-- Common encryption (Widevine)-->
       <cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
            <cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- Added to V2 -->       
           <cpix:PSSH>AAAAVXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADUIARIQEup1PCPnvAJEdLK5dsQ76xoMaW5rYWVudHdvcmtzIg1jcGl4LXRlc3QtY2lkKgJIRA==</cpix:PSSH>
       </cpix:DRMSystem>
   </cpix:DRMSystemList>
</cpix:CPIX>
  • <cpix:CPIX id="": The CID value entered in the request data is returned.
  • <cpix:ContentKey>: The key(<pskc:PlainValue>) and IV(explicitIV) to be used for content encryption, and the kid value for the key are returned. The value of `kid' is newly generated by KMS, independent of the value entered in the request data. The key and IV are returned in Base64 encoded form.
  • <cpix:DRMSystem>: PSSH data for each DRM(PlayReady and Widevine) is returned. The <cpix:PSSH> tag shows the default PSSH value, and the <cpix:ContentProtectionData> tag shows the PSSH data with the header part removed.

Example for HLS VOD content

Request body

<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="your-content-id" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
 <cpix:ContentKeyList>
     <cpix:ContentKey kid="681e5b39-49f2-4dfa-b744-86573c22e6fb"></cpix:ContentKey>
 </cpix:ContentKeyList>
 <cpix:DRMSystemList>
    <!-- HLS SAMPLE-AES (FairPlay) -->
    <cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" />
 </cpix:DRMSystemList>
</cpix:CPIX>
  • <cpix:CPIX id="": Enter a unique ID for the content to be packaged. In the case of single-key packaging, only this part in the above example needs to be modified.
  • kid: Used to identify the key to be issued for each track during multi-key packaging. You can enter any value for single key packaging, because the kid value in request data is not used.
  • systemId: Enter a unique uuid value specified for FairPlay DRM. (case insensitive)

Response

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" >
    <cpix:ContentKeyList>
        <cpix:ContentKey explicitIV="MDEyMzQ1Njc4OWFiY2RlZg==" kid="12ea753c-23e7-bc02-4474-b2b976c43beb">
            <cpix:Data>
                <pskc:Secret>
                    <pskc:PlainValue>ODQ4REQwMTM5OURGNDczQQ==</pskc:PlainValue>
                </pskc:Secret>
            </cpix:Data>
        </cpix:ContentKey>
    </cpix:ContentKeyList>
    <cpix:DRMSystemList>
        <!-- HLS SAMPLE-AES (FairPlay) -->
        <cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
            <cpix:HLSSignalingData>I0VYVC1YLUtFWTpN...DA1</cpix:HLSSignalingData><!-- Added to V2  -->
            <cpix:HLSSignalingData playlist="master">I0VYVC1YLVNFU...DU=</cpix:HLSSignalingData><!-- Added to V2 -->
            <cpix:URIExtXKey>c2tkOi8vRXVwMVBDUG52QUpFZExLNWRzUTc2dz09</cpix:URIExtXKey>
        </cpix:DRMSystem>
    </cpix:DRMSystemList>
</cpix:CPIX>
  • <cpix:CPIX id="": The CID value entered in the request data is returned.
  • <cpix:ContentKey>: The key(<pskc:PlainValue>) and IV(explicitIV) to be used for content encryption, and the kid value for the key are returned. The value of `kid' is newly generated by KMS, independent of the value entered in the request data. The key and IV are returned in Base64 encoded form.
  • <cpix:URIExtXKey>: The skd:// URI value to be included in the URI parameter for the #EXT-X-KEY tag of m3u8 is returned in Base64 encoded form.

Example for DASH live content

For live content, the API responds with a key value that is rotated according to the ContentKeyPeriodList index value.

Request body

<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
	<cpix:ContentKeyList>
		<cpix:ContentKey kid="ca65e643-482c-4a21-a204-05570a1e276c"></cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
	    <!-- Common encryption / MSS (Playready) -->
		<cpix:DRMSystem kid="ca65e643-482c-4a21-a204-05570a1e276c" systemId="9a04f079-9840-4286-ab92-e65be0885f95" />
		<!-- Common encryption (Widevine)-->
		<cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9" index="128"/>
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
            <cpix:ContentKeyUsageRule intendedTrackType="HD" kid="ca65e643-482c-4a21-a204-05570a1e276c"><!-- Added to V2: intendedTrackType -->
                <cpix:KeyPeriodFilter periodId="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9"/>
                <cpix:VideoFilter maxPixels="2073600" minPixels="921600"/><!-- Added to V2 -->
            </cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX> 

Response

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" >
    <cpix:ContentKeyList>
        <cpix:ContentKey explicitIV="S2ljHDlFRStjCuOpN8I7+w==" kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3">
            <cpix:Data>
                <pskc:Secret>
                    <pskc:PlainValue>OlRFK6LSytFr2HnN1HqwWw==</pskc:PlainValue>
                </pskc:Secret>
            </cpix:Data>
        </cpix:ContentKey>
    </cpix:ContentKeyList>
    <cpix:ContentKeyPeriodList>
        <cpix:ContentKeyPeriod id="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9" index="128"/>
    </cpix:ContentKeyPeriodList>
    <cpix:ContentKeyUsageRuleList>
        <cpix:ContentKeyUsageRule intendedTrackType="HD" kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3"><!-- Added to V2 : intendedTrackType -->
            <cpix:KeyPeriodFilter periodId="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9"/>
            <cpix:VideoFilter maxPixels="2073600" minPixels="921600"/><!-- Added to V2 -->
        </cpix:ContentKeyUsageRule>
    </cpix:ContentKeyUsageRuleList>
    <cpix:DRMSystemList>
        <cpix:DRMSystem kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
            <cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- Added to V2 -->
            <cpix:PSSH>AAADTHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAywsAwAAAQABACIDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADQANgBzAGEAKwBNAE8AbgB6AGMAOQBJAFMAawBMAE8AaQB2AEoAdwB3AD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+ADYAaQBiAFAANAAwAHUAVABPAFoAMAA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHQAZQBzAHQAdABvAGsAeQBvAC4AcABhAGwAbAB5AGMAbwBuAC4AYwBvAG0ALwByAGkALwBwAGwAYQB5AHIAZQBhAGQAeQAvAGwAaQBjAGUAbgBzAGUATQBhAG4AYQBnAGUAcgAuAGQAbwA8AC8ATABBAF8AVQBSAEwAPgA8AEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AFAARQBSAEkATwBEAF8ASQBOAEQARQBYAD4AMQAyADgAPAAvAFAARQBSAEkATwBEAF8ASQBOAEQARQBYAD4APAAvAEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</cpix:PSSH>
        </cpix:DRMSystem>
        <cpix:DRMSystem kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
            <cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- Added to V2 -->        
            <cpix:PSSH>AAAAaHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEgIARIQa6yOww7jN589ISkLOivJwxoMaW5rYWVudHdvcmtzIh1jcGl4LXRlc3QtY2lkMDAwMDAwMDAwMDAwMDA4MCoCSEQ4gAE=</cpix:PSSH>
        </cpix:DRMSystem>
    </cpix:DRMSystemList>
</cpix:CPIX>

Example for HLS live content

Request body

<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="your-content-id" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
 <cpix:ContentKeyList>
     <cpix:ContentKey kid="681e5b39-49f2-4dfa-b744-86573c22e6fb"></cpix:ContentKey>
 </cpix:ContentKeyList>
 <cpix:DRMSystemList>
    <!-- HLS SAMPLE-AES (FairPlay) -->
    <cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
        <cpix:ContentProtectionData />
        <cpix:PSSH />
        <cpix:URIExtXKey />
    </cpix:DRMSystem>
 </cpix:DRMSystemList>
</cpix:CPIX>

Response

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" >
    <cpix:ContentKeyList>
        <cpix:ContentKey explicitIV="S2ljHDlFRStjCuOpN8I7+w==" kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3">
            <cpix:Data>
                <pskc:Secret>
                    <pskc:PlainValue>OlRFK6LSytFr2HnN1HqwWw==</pskc:PlainValue>
                </pskc:Secret>
            </cpix:Data>
        </cpix:ContentKey>
    </cpix:ContentKeyList>
    <cpix:ContentKeyPeriodList>
        <cpix:ContentKeyPeriod id="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9" index="128"/>
    </cpix:ContentKeyPeriodList>
    <cpix:ContentKeyUsageRuleList>
        <cpix:ContentKeyUsageRule intendedTrackType="HD" kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3"><!-- Added to V2: intendedTrackType -->
            <cpix:KeyPeriodFilter periodId="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9"/>
            <cpix:VideoFilter maxPixels="2073600" minPixels="921600"/><!-- Added to V2 -->
        </cpix:ContentKeyUsageRule>
    </cpix:ContentKeyUsageRuleList>
    <cpix:DRMSystemList>
        <!-- HLS SAMPLE-AES (FairPlay) -->
        <cpix:DRMSystem kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
            <cpix:HLSSignalingData>I0VYVC1YLUtFWTpN...DA1</cpix:HLSSignalingData><!-- Added to V2 -->
            <cpix:HLSSignalingData playlist="master">I0VYVC1YLVNFU...DU=</cpix:HLSSignalingData><!-- Added to V2 -->
            <cpix:URIExtXKey>c2tkOi8vY3BpeC10ZXN0LWNpZDAwMDAwMDAwMDAwMDAwODA=</cpix:URIExtXKey>
        </cpix:DRMSystem>
    </cpix:DRMSystemList>
</cpix:CPIX>

Nginx real-time packaging integration

If you want to process real-time packaging through Nginx VOD Module, you can develop a client module that calls PallyCon CPIX API to integrate DRM encryption.

Enter the encryption key(<pskc:PlainValue>), IV(explicitIV), kid, and PSSH values of the CPIX response data to the JSON parameter of the guide linked above. For the Nginx integration, the PSSH value must be entered as the value of the <cpix:ContentProtectionData> tag, and the kid value must be entered after converting the uuid string into a Base64-encoded 128-bit binary value.

Flussonic Media Server Integration

Flussonic Media Server is a server software that helps you capture, transcode, record, protect, and deliver video to users across multiple devices. Flussonic Media Server is integrated with PallyCon Multi-DRM service using PallyCon CPIX API.

SPEKE API

Secure Packager and Encoder Key Exchange (SPEKE) API is the CPIX API implemented by AWS Elemental and is used to interface with AWS Elemental MediaPackage or MediaConvert products. The basic specification is the same as the PallyCon CPIX API except the KMS URL. For details on SPEKE integration, please refer to the guide.

KMS URL Specification

KMS URL specification for SPEKE API is as follows. The enc-token at the end of the URL is an API authentication token that is generated when you sign up PallyCon service, and can be found on the PallyCon Console site.

https://kms.pallycon.com/cpix/getKey?enc-token={enc-token}

Anevia CPIX API

CPIX API for integration with Anevia’s NEA-DVR solution. Through this API, PallyCon multi-DRM can be applied easily to Anevia solution.

Supported Features

Multi-DRM integration via Anevia CPIX API supports the following content types and functions.

PlayReady Widevine FairPlay AES-128
DASH
HLS

KMS URL Specification

The KMS URL specification for Anevia CPIX API is as follows. The URL generated according to the following specifications is called by the Anevia solution in GET method to get the key.

https://kms.pallycon.com/cpix/anevia/{streamingFormat}/{encToken}/{cid}
Path Description
streamFormat dash or hls. The key is issued with the drm type supported according to the streaming format type.
encToken The API authentication token that is created when you sign up for the PallyCon service. You can find it on PallyCon Console site.
cid Content ID

Anevia CPIX API Example

Request URL Example

https://kms.pallycon.com/cpix/anevia/dash/eyJzaXRlX2lkIjoiREVNTyIsICJhY2Nlc3Nfa2V5IjoiZHNJb2xjN2gxRzhUVW1JMTdiWXd4aFV1TkZvRmNlNzJjeDllTU9rNjJ3YjhWTjJQZGdwV1lISXhTRVg5ZjBIaSJ9/test-cid

Response Data Example

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:ns3="urn:aws:amazon:com:speke" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <cpix:ContentKeyList>
        <cpix:ContentKey explicitIV="MDEyMzQ1Njc4OWFiY2RlZg==" kid="cbc2eedd-4284-fd94-c17b-0d6fb56c146b">
            <cpix:Data>
                <pskc:Secret>
                    <pskc:PlainValue>dLlreLqTHdROTxGnw/3G7g==</pskc:PlainValue>
                </pskc:Secret>
            </cpix:Data>
        </cpix:ContentKey>
    </cpix:ContentKeyList>
    <cpix:DRMSystemList>
        <cpix:DRMSystem kid="cbc2eedd-4284-fd94-c17b-0d6fb56c146b" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
            <cpix:PSSH>AAACvnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAp6eAgAAAQABAJQCPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgAzAGUANwBDAHkANABSAEMAbABQADMAQgBlAHcAMQB2AHQAVwB3AFUAYQB3AD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AFQAWABrAFkAcgAwAGQAdgBIAEgAYwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAGUAbgBzAGUALgBwAGEAbABsAHkAYwBvAG4ALgBjAG8AbQAvAHIAaQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AbABpAGMAZQBuAHMAZQBNAGEAbgBhAGcAZQByAC4AZABvADwALwBMAEEAXwBVAFIATAA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</cpix:PSSH>
        </cpix:DRMSystem>
        <cpix:DRMSystem kid="cbc2eedd-4284-fd94-c17b-0d6fb56c146b" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
            <cpix:PSSH>AAAAUHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADAIARIQy8Lu3UKE/ZTBew1vtWwUaxoMaW5rYWVudHdvcmtzIgh0ZXN0LWNpZCoCSEQ=</cpix:PSSH>
        </cpix:DRMSystem>
    </cpix:DRMSystemList>
</cpix:CPIX>
Previous
Next