本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SPEKEAPIv2-對 DASH-IF 規範的自定義和約束
DASH產業論壇 CPIX2.3 規格
CPIX設定檔
-
SPEKE 遵循加密程式消費者工作流程。
-
對於加密的內容金鑰,會SPEKE套用下列限制:
-
SPEKE不支援要求或回應承載的數位簽章驗證 (XMLDSIG)。
-
SPEKE需要以 2048 RSA 為基礎的憑證。
-
-
SPEKE僅利用CPIX功能的一部分:
-
SPEKE 省略
UpdateHistoryItemList
功能。如果列表存在於響應中,則SPEKE忽略它。 -
SPEKE省略根/葉鍵功能。如果該
ContentKey@dependsOnKey
屬性存在於響應中,則SPEKE忽略它。 -
SPEKE省略元
BitrateFilter
素和VideoFilter@wcg
屬性。如果這些元素或屬性存在於有CPIX效負載中,請SPEKE忽略它。
-
-
只有在「標準承載元件」頁面或「加密」合約頁面上參照為「支援」的元素或屬性,才能用於與 SPEKE v2 交換的CPIX文件。
-
當加密器包含在CPIX請求中時,所有元素和屬性應在密鑰提供者CPIX響應中攜帶有效值。如果沒有,加密器應停止並拋出錯誤。
-
SPEKE支援
KeyPeriodFilter
元素的按鍵旋轉。SPEKE僅使用ContentKeyPeriod@index
來追蹤金鑰期間。 -
對於HLS信令,必須使用多個
DRMSystem.HLSSignalingData
元素:一個具有「媒體」的DRMSystem.HLSSignalingData@playlist
屬性值,另一個具有「主」DRMSystem.HLSSignalingData@playlist
屬性值。 -
當請求金鑰時,加密程式必須使用
ContentKey
元素上的可選@explicitIV
屬性。金鑰提供者可以使用@explicitIV
來回應 IV,即使該屬性未包含在請求中。 -
加密程式會建立金鑰識別符 (
KID
),無論任何指定的內容 ID 和金鑰期間都將提供相同識別符。金鑰提供者會在對請求文件的回應中包括KID
。 -
加密器應包括
CPIX@contentId
屬性的值。當收到此屬性的空值時,密鑰提供者應返回描述為「缺少 CPIX @contentId」的錯誤。CPIX@contentId
金鑰提供者無法覆寫值。CPIX@id
值,如果不是 null,則應由密鑰提供者忽略。 -
加密器應包括
CPIX@version
屬性的值。當收到此屬性的空值時,金鑰提供者應傳回描述為「缺少 CPIX @version」的錯誤。當收到具有不支援版本的要求時,金鑰提供者傳回的錯誤描述應為「不支援的 CPIX @version」。CPIX@version
金鑰提供者無法覆寫值。 -
加密器應包括每個請求密鑰的
ContentKey@commonEncryptionScheme
屬性值。當收到此屬性的空值時,密鑰提供者應返回一個錯誤,描述commonEncryptionScheme 為「缺少 ContentKey @ KIDid
」。唯一CPIX文件無法針對不同
ContentKey@commonEncryptionScheme
屬性混合使用多個值。當收到這樣的組合時,密鑰提供者應返回一個描述為「不兼容 ContentKey @ commonEncryptionScheme 組合」的錯誤。並非所有
ContentKey@commonEncryptionScheme
值都與所有DRM技術相容。當收到這樣的組合時,密鑰提供者應返回描述 'ContentKey@ 與' commonEncryptionScheme 不兼容 DRMSystemid
'的錯誤。ContentKey@commonEncryptionScheme
金鑰提供者無法覆寫值。 -
當在CPIX響應體中接收到不同的值
DRMSystem@PSSH
和DRMSystem.ContentProtectionData
內部XML<pssh>
元素時,加密器應停止並拋出錯誤。
適用於 CPIX 的 API
-
金鑰提供者應包含
X-Speke-User-Agent
HTTP回應標頭的值。 -
SPEKE符合標準的加密器充當客戶端,並將POST操作發送到密鑰提供者端點。
-
加密程序應包括
X-Speke-Version
HTTP請求頭的值,與請求一起使用的SPEKE版本,制定為 MajorVersion。 MinorVersion,就像 2.0 版的 SPEKE「2.0」一樣。如果金鑰提供者不支援加密程式針對目前要求所使用的SPEKE版本,金鑰提供者應傳回錯誤,其說明為「不受支援的SPEKE版本」,而不會嘗試以最佳方式處理CPIX文件。加密器定義的
X-Speke-Version
標頭值無法由金鑰提供者在回應要求時修改。 -
在回應主體中收到錯誤時,加密程式應擲回錯誤,而不是使用 SPEKE v1.0 版本重試要求。
如果金鑰提供者沒有傳回錯誤,但無法傳回包含必要資訊的CPIX文件,則加密程式應停止並擲回錯誤。
下表摘要列出訊息主體中金鑰提供者必須傳回的標準訊息。在錯誤的情況下,HTTP響應代碼應該是一個 4XX 或 5XX,從來沒有一個 200。422 錯誤代碼可用於與SPEKE/CPIX相關的所有錯誤。
錯誤大小寫 | 錯誤訊息 |
---|---|
CPIX@ contentId 未定義 |
遺失 CPIX @ contentId |
CPIX@version 尚未定義 |
遺失 CPIX @version |
CPIX不支援 @version |
不支援的 CPIX @version |
ContentKey@ commonEncryptionScheme 未定義 |
缺少 ContentKey @ commonEncryptionScheme KID |
在單個CPIX文檔中使用多個 ContentKey @ commonEncryptionScheme 值 |
不合規 ContentKey @ commonEncryptionScheme 組合 |
ContentKey@與commonEncryptionScheme DRM技術不兼容 |
ContentKey@ commonEncryptionScheme 不兼容 DRMSystem |
X-Speke-版本標頭值不是支援的版本 SPEKE |
不支援SPEKE版本 |
加密合約格式錯誤 |
格式錯誤的加密合約 |
加密合同與DRM安全級別限制相矛盾 |
不支援要求的CPIX加密合約 |
加密合同不包含任何 VideoFilter 或 AudioFilter 元素 |
缺少CPIX加密合同 |