

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# SPEKE API v1 - DASH-IF 規格的自訂和限制
<a name="speke-constraints"></a>

DASH-IF CPIX 規格 https://dashif.org/docs/DASH-IF-CPIX-v2-0.pdf 支援多種使用案例和拓撲。SPEKE API 規格遵循 CPIX 規格，具有下列自訂和限制：
+ SPEKE 遵循 Encryptor Consumer 工作流程。
+ 對於加密的內容金鑰，SPEKE 會套用下列限制：
  + SPEKE 不支援請求或回應承載的數位簽章驗證 (XMLDSIG)。
  + SPEKE 需要 2048 RSA 型憑證。
+ 對於輪換金鑰工作流程，SPEKE 需要`ContentKeyUsageRule`篩選條件 `KeyPeriodFilter`。SPEKE 會忽略所有其他`ContentKeyUsageRule`設定。
+ SPEKE 會省略`UpdateHistoryItemList`功能。如果回應中存在清單，SPEKE 會忽略該清單。
+ SPEKE 支援金鑰輪換。SPEKE 僅使用 `ContentKeyPeriod@index 來追蹤金鑰期間。
+ 為了支援 MSS PlayReady，SPEKE 會使用`DRMSystem`標籤 下的自訂參數`SPEKE:ProtectionHeader`。
+ 對於 HLS 封裝，如果 `URIExtXKey` 出現在回應中，則其必須包含要新增到 HLS 播放清單 `EXT-X-KEY` 標籤 URI 參數中的完整資料，而無需進一步訊號要求。
+ 對於 HLS 播放清單，在`DRMSystem`標籤下，SPEKE 會提供選用的自訂參數 `speke:KeyFormat`和 `speke:KeyFormatVersions`，用於`EXT-X-KEY`標籤的 `KEYFORMAT`和 `KEYFORMATVERSIONS` 參數值。

  除非操作者明確指定，否則 HLS 初始向量 (IV) 會一律遵循區段號碼。
+ 當請求金鑰時，加密程式必須使用 `ContentKey` 元素上的可選 `@explicitIV` 屬性。金鑰提供者可以使用 `@explicitIV` 來回應 IV，即使該屬性未包含在請求中。
+ 加密程式會建立金鑰識別符 (`KID`)，無論任何指定的內容 ID 和金鑰期間都將提供相同識別符。金鑰提供者會在對請求文件的回應中包括 `KID`。
+ 金鑰提供者可能會包含 `Speke-User-Agent` 回應標頭的值，以自我識別供偵錯之用。
+ SPEKE 目前不支援每個內容的多個音軌或索引鍵。

  與 SPEKE 相容的加密程式可做為用戶端，並將`POST`操作傳送至金鑰提供者端點。加密程式可能會傳送定期的 `heartbeat` 請求，以確保加密程式與金鑰提供者端點之間的連線情況良好。