

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

# SPEKE API v2
<a name="the-speke-api-v2"></a>

這是 REST API for Secure Packager and Encoder Key Exchange (SPEKE) v2。使用此規格為使用加密的客戶提供 DRM 版權保護。若要符合 SPEKE，您的 DRM 金鑰提供者必須公開此規格中所述的 REST API。加密程式會對您的金鑰提供者進行 API 呼叫。

**注意**  
本規定中的代碼範例僅供參考之用。您無法執行這些範例，由於它們不是完整 SPEKE 實作的一部分。

SPEKE 使用 DASH 產業論壇內容保護資訊交換格式 (DASH-IF-CPIX) 資料結構定義進行金鑰交換，但有一些限制。DASH-IF-CPIX 會定義結構描述，以提供從 DRM 平台到加密程式的可擴展、多 DRM 交換。這可讓系統在內容壓縮和封裝時，能夠對所有自適性位元速率封裝格式進行內容加密。自適性位元速率封裝格式包括 HLS、DASH 和 MSS。

從其 2.0 版開始，SPEKE 會與特定 CPIX 版本一致：

在 SPEKE 端，這是透過使用 `X-Speke-Version` HTTP 標頭，以及在 CPIX 端透過使用 `CPIX@version` 屬性強制執行。請求中缺少這些元素是 SPEKE v1 舊版工作流程的典型情況。在 SPEKE v2 工作流程中，只有在金鑰提供者同時支援兩個版本參數時，才會預期其會處理 CPIX 文件。

如需交換格式的詳細資訊，請參閱 DASH 產業論壇 [CPIX 2.3 規格。](https://dashif.org/docs/CPIX2.3/Cpix.html)

整體而言，與 SPEKE v1.0 相比，SPEKE v2.0 帶來了以下發展：
+ 來自 SPEKE XML 命名空間的所有標籤都已棄用，以有利於 CPIX XML 命名空間中的對等標籤
+  `SPEKE:ProtectionHeader` 已棄用，並由 取代 `CPIX:DRMSystem.SmoothStreamingProtectionHeaderData` 
+  `CPIX:URIExtXKey`、 `SPEKE:KeyFormat`和 `SPEKE:KeyFormatVersions` 已棄用，並由 取代 `CPIX:DRMSystem.HLSSignalingData` 
+  `CPIX@id` 被 取代 `CPIX@contentId` 
+ 新的強制性 CPIX 屬性：`CPIX@version`、 `ContentKey@commonEncryptionScheme`
+ 新的選用 CPIX 元素： `DRMSystem.ContentProtectionData`
+ 支援多個內容金鑰
+ SPEKE 和 CPIX 之間的跨版本機制
+ HTTP 標頭演變：新`X-Speke-Version`標頭、`Speke-User-Agent`標頭重新命名為 `X-Speke-User-Agent` 
+ 活動訊號 API 棄用

隨著 SPEKE v1.0 規格保持不變，現有的實作不需要變更，即可繼續支援 SPEKE v1.0 工作流程。

**Topics**
+ [SPEKE API v2 - DASH-IF 規格的自訂和限制](speke-constraints-v2.md)
+ [SPEKE API v2 - 標準承載元件](standard-payload-components-v2.md)
+ [SPEKE API v2 - 加密合約](encryption-contract-v2.md)
+ [SPEKE API v2 - 即時工作流程方法呼叫範例](live-workflow-methods-v2.md)
+ [SPEKE API v2 - VOD 工作流程方法呼叫範例](vod-workflow-method-v2.md)
+ [SPEKE API v2 - 內容金鑰加密](content-key-encryption-v2.md)
+ [SPEKE API v2 - 覆寫金鑰識別符](kid-override-v2.md)