Anevia
Axinom Key Service supports a direct integration with Anevia NEA-DVR, a cloud DVR solution that enables the viewers to record live TV shows.
The integration endpoint is /Anevia of the Key Acquisition API.
Functionalityβ
The Client requests one or more content keys. The Key Service generates the necessary keys using the Key Seed model and returns the keys with additional DRM-specific metadata where needed.
Endpoint Overviewβ
GET https://key-server-management.axprod.net/api/Anevia
Query Parametersβ
| Parameter | Type | Description |
|---|---|---|
id | Base64 | CPIX Configuration as url-safe base64-encoded JSON. |
fixedIv | Boolean (optional) | If true, returned IVs are deterministic (see below) |
Example:
GET /api/Anevia?id=<base64CpixConfig>&fixedIv=true
Authorizationβ
This endpoint requires an authorization header - the same as described under the Key Service Management API.
Authorization: Basic <base64(tenantId:keyServiceManagementKey)>
Request/Response Formatβ
Requestβ
The Client provides the input parameters in a JSON data structure, in the so-called CPIX Configuration. CPIX Configuration shall be supplied in base64-encoded form. Individual properties of this data structure control the respective aspects of the generated CPIX document in the response. You can find a sample CPIX Configuration below.
{
"ContentKeyIds": [
"00000000-0000-0000-0000-111111111111",
"00000000-0000-0000-0000-222222222222"
],
"DrmSystemIds": [
"94ce86fb-07ff-4f43-adb8-93d2fa968ca2",
"9a04f079-9840-4286-ab92-e65be0885f95",
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
],
"ContentKeyUsageRules": [
{
"KeyId": "00000000-0000-0000-0000-111111111111",
"AudioFilters": [{}]
},
{
"KeyId": "00000000-0000-0000-0000-222222222222",
"VideoFilters": [
{
"minPixels": 0,
"maxPixels": 2073600
}
]
}
]
}
The table below explains the elements of the request JSON.
| Element | Description |
|---|---|
ContentKeyIds | The list of the Key IDs for which the Keys shall be generated. Key ID is a GUID. |
DrmSystemIds | Requested DRM types, for which the PSSH boxes will be delivered. The IDs are as defined by DASH-IF. Axinom Key Service supports FairPlay, PlayReady, and Widevine (listed in the example above in this order). |
ContentKeyUsageRules | Content key usage rules for each key. Itβs a pass-through which will be set in CPIX and returned to the Client. |
For more information on valid combinations of Content Key Usage Rules and how Anevia NEA-DVR processes Content Key Usage Rules, see the document NEA-DVR-SW - CPIX back-end by Anevia (Please contact Anevia in order to get the document).
Request formatβ
Get the Base64 value of your cpix configuration JSON.
ex: ewoJIkNvbnRlbnRLZXlJZHMiOgoJWwoJCSIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0xMTExMTExMTExMTEiLAoJCSIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0yMjIyMjIyMjIyMjIiCgldLAoJIkRybVN5c3RlbUlkcyI6CglbCgkJIjk0Y2U4NmZiLTA3ZmYtNGY0My1hZGI4LTkzZDJmYTk2OGNhMiIsCgkJIjlhMDRmMDc5LTk4NDAtNDI4Ni1hYjkyLWU2NWJlMDg4NWY5NSIsCgkJImVkZWY4YmE5LTc5ZDYtNGFjZS1hM2M4LTI3ZGNkNTFkMjFlZCIKCV0sCgkiQ29udGVudEtleVVzYWdlUnVsZXMiOgoJWwoJCXsKCQkJIktleUlkIjogIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTExMTExMTExMTExMSIsCgkJCSJBdWRpb0ZpbHRlcnMiOgoJCQlbCgkJCQl7CgkJCQl9CgkJCV0KCQl9LAoJCXsKCQkJIktleUlkIjogIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTIyMjIyMjIyMjIyMiIsCgkJCSJWaWRlb0ZpbHRlcnMiOgoJCQlbCgkJCQl7CgkJCQkJIm1pblBpeGVscyI6IDAsICJtYXhQaXhlbHMiOiAyMDczNjAwCgkJCQl9CgkJCV0KCQl9CgldCn0=
Send a GET request to the /Anevia endpoint with the id query parameter, which contains the above base64value.
https://key-service-management.axprod.net/api/Anevia?id=ewoJIkNvbnRlbnRLZXlJZHMiOgoJWwoJCSIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0xMTExMTExMTExMTEiLAoJCSIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0yMjIyMjIyMjIyMjIiCgldLAoJIkRybVN5c3RlbUlkcyI6CglbCgkJIjk0Y2U4NmZiLTA3ZmYtNGY0My1hZGI4LTkzZDJmYTk2OGNhMiIsCgkJIjlhMDRmMDc5LTk4NDAtNDI4Ni1hYjkyLWU2NWJlMDg4NWY5NSIsCgkJImVkZWY4YmE5LTc5ZDYtNGFjZS1hM2M4LTI3ZGNkNTFkMjFlZCIKCV0sCgkiQ29udGVudEtleVVzYWdlUnVsZXMiOgoJWwoJCXsKCQkJIktleUlkIjogIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTExMTExMTExMTExMSIsCgkJCSJBdWRpb0ZpbHRlcnMiOgoJCQlbCgkJCQl7CgkJCQl9CgkJCV0KCQl9LAoJCXsKCQkJIktleUlkIjogIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTIyMjIyMjIyMjIyMiIsCgkJCSJWaWRlb0ZpbHRlcnMiOgoJCQlbCgkJCQl7CgkJCQkJIm1pblBpeGVscyI6IDAsICJtYXhQaXhlbHMiOiAyMDczNjAwCgkJCQl9CgkJCV0KCQl9CgldCn0=
Responseβ
The response is a CPIX document.
<?xml version="1.0" encoding="utf-8"?>
<CPIX
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:dashif:org:cpix"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:enc="http://www.w3.org/2001/04/xmlenc#"
xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
<ContentKeyList>
<ContentKey kid="00000000-0000-0000-0000-111111111111" explicitIV="Ue7qBIMJFkSgNQdeBEEMnQ==">
<Data>
<pskc:Secret>
<pskc:PlainValue>mLE9R9fKrFiE8KB5OiVPYA==</pskc:PlainValue>
</pskc:Secret>
</Data>
</ContentKey>
<ContentKey kid="00000000-0000-0000-0000-222222222222" explicitIV="v4qKp01BqkyqerPOS+nX0A==">
<Data>
<pskc:Secret>
<pskc:PlainValue>VhpO1WowkZ5RQlOKnLtdow==</pskc:PlainValue>
</pskc:Secret>
</Data>
</ContentKey>
</ContentKeyList>
<DRMSystemList>
<DRMSystem systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" kid="00000000-0000-0000-0000-111111111111">
<URIExtXKey>c2tkOi8vMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMTExMTExMTExMTExOjUxRUVFQTA0ODMwOTE2NDRBMDM1MDc1RTA0NDEwQzlE</URIExtXKey>
</DRMSystem>
<DRMSystem systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" kid="00000000-0000-0000-0000-222222222222">
<URIExtXKey>c2tkOi8vMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMjIyMjIyMjIyMjIyOkJGOEE4QUE3NEQ0MUFBNENBQTdBQjNDRTRCRTlEN0Qw</URIExtXKey>
</DRMSystem>
<DRMSystem systemId="9a04f079-9840-4286-ab92-e65be0885f95" kid="00000000-0000-0000-0000-111111111111">
<ContentProtectionData>PGNlbmM6cHNzaC...UGdBPTwvcHJvPg==</ContentProtectionData>
</DRMSystem>
<DRMSystem systemId="9a04f079-9840-4286-ab92-e65be0885f95" kid="00000000-0000-0000-0000-222222222222">
<ContentProtectionData>PGNlbmM6cHNzaCB4...BUGdBPTwvcHJvPg==</ContentProtectionData>
</DRMSystem>
<DRMSystem systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" kid="00000000-0000-0000-0000-111111111111">
<ContentProtectionData>PGNlbmM6...QY2xac0c8L2NlbmM6cHNzaD4=</ContentProtectionData>
</DRMSystem>
<DRMSystem systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" kid="00000000-0000-0000-0000-222222222222">
<ContentProtectionData>PGNlbmM6c...L2NlbmM6cHNzaD4=</ContentProtectionData>
</DRMSystem>
</DRMSystemList>
<ContentKeyUsageRuleList>
<ContentKeyUsageRule kid="00000000-0000-0000-0000-111111111111">
<AudioFilter />
</ContentKeyUsageRule>
<ContentKeyUsageRule kid="00000000-0000-0000-0000-222222222222">
<VideoFilter minPixels="0" maxPixels="2073600" />
</ContentKeyUsageRule>
</ContentKeyUsageRuleList>
</CPIX>
The table below describes the key elements of the response CPIX document.
| Element | Description |
|---|---|
ContentKeyList | A generated Key and an initialization vector (IV) for each Key ID. |
DrmSystemList | Additional protection data for each requested DRM system and for each key |
ContentKeyUsageRuleList | Content key usage rules, the same as in the request |
Fixed IVβ
When the fixedIv parameter is set to true, the returned IVs will be non-random and derived based on the Key IDs.
https://key-server-management.axprod.net/api/Anevia?fixedIv=true&id=base64data
Use only when consistent IVs are required; random IVs provide better security for most use cases.
Why is a fixed IV necessary for some scenarios?β
While generating random IVs is generally recommended for security reasons, there are cases where it is necessary to encrypt the same content using exactly the same Key and IV pair. For example, when multiple encoders simultaneously process the same content and CDNs or caching mechanisms are involved, having consistent encryption parameters ensures that the output remains consistent across all encoders.
Encryption Schemesβ
The Anevia endpoint always uses a default encryption scheme. It is "cenc" for Widevine and PlayReady and "cbcs" for FairPlay.
Sample Requests:β
1. Minimal βsingle keyβ CPIX exampleβ
{
"ContentKeyIds": ["11111111-1111-1111-1111-111111111111"],
"DrmSystemIds": ["edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"]
}
2. ContentKeyUsageRules Examplesβ
ContentKeyUsageRules are optional. If omitted, the generated key applies to all tracks.
Audio Filters Example
{
"KeyId": "00000000-0000-0000-0000-111111111111",
"AudioFilters": [{}]
}
An empty filter object ({}) indicates that the key applies to all audio tracks.
Video Filters Example (Resolution-based)
{
"KeyId": "00000000-0000-0000-0000-222222222222",
"VideoFilters": [
{
"minPixels": 0,
"maxPixels": 2073600
}
]
}
This applies the key only to video tracks whose resolution falls within the specified pixel range.
3. Single key used for both audio and videoβ
{
"ContentKeyIds": ["22222222-2222-2222-2222-222222222222"],
"DrmSystemIds": ["edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"],
"ContentKeyUsageRules": [
{
"KeyId": "22222222-2222-2222-2222-222222222222",
"AudioFilters": [{}],
"VideoFilters": [{}]
}
]
}
4. Separate keys for audio and videoβ
{
"ContentKeyIds": [
"33333333-3333-3333-3333-333333333333",
"44444444-4444-4444-4444-444444444444"
],
"DrmSystemIds": ["edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"],
"ContentKeyUsageRules": [
{
"KeyId": "33333333-3333-3333-3333-333333333333",
"AudioFilters": [{}]
},
{
"KeyId": "44444444-4444-4444-4444-444444444444",
"VideoFilters": [{}]
}
]
}
5. Video keys split by resolutionβ
{
"ContentKeyIds": [
"55555555-5555-5555-5555-555555555555",
"66666666-6666-6666-6666-666666666666"
],
"DrmSystemIds": ["edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"],
"ContentKeyUsageRules": [
{
"KeyId": "55555555-5555-5555-5555-555555555555",
"VideoFilters": [
{
"maxPixels": 921600
}
]
},
{
"KeyId": "66666666-6666-6666-6666-666666666666",
"VideoFilters": [
{
"minPixels": 921601
}
]
}
]
}
6. Multiple DRM systems in one requestβ
{
"ContentKeyIds": ["77777777-7777-7777-7777-777777777777"],
"DrmSystemIds": [
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",
"9a04f079-9840-4286-ab92-e65be0885f95",
"94ce86fb-07ff-4f43-adb8-93d2fa968ca2"
]
}