

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

これは、Secure Packager and Encoder Key Exchange (SPEKE) v2 用の REST API です。この仕様を使用して、暗号化を使用するお客様に DRM 著作権保護を提供します。SPEKE に準拠するには、DRM キープロバイダーがこの仕様で説明されている REST API を公開する必要があります。エンクリプタはキープロバイダーへ API コールを行います。

**注記**  
この仕様のコード例は、あくまでも説明用です。これらの例は完全な SPEKE 実装の一部ではないため、実行できません。

SPEKE は、DASH Industry Forum Content Protection Information Exchange Format (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 Industry Forum の [CPIX 2.3 仕様](https://dashif.org/docs/CPIX2.3/Cpix.html)を参照してください。

大まかに、SPEKE v2.0 は SPEKE v1.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)

# SPEKE API v2 - DASH-IF 仕様のカスタマイズと制約
<a name="speke-constraints-v2"></a>

DASH Industry Forum [CPIX 2.3 仕様](https://dashif.org/docs/CPIX2.3/Cpix.html)は、多くのユースケースとトポロジをサポートしています。SPEKE API v2.0 仕様では、CPIX プロファイルと CPIX 用の API の両方が定義されています。この 2 つの目標を達成するために、次のカスタマイズと制約を適用した CPIX 仕様に準拠しています。

**CPIX プロファイル**
+ SPEKE は、エンクリプタコンシューマーのワークフローに従います。
+ 暗号化されたコンテンツキーの場合、SPEKE により次の制限が適用されます。
  + SPEKE は、リクエストおよびレスポンスペイロードにデジタル署名検証 (XMLDSIG) をサポートしていません。
  + SPEKE には 2048 ビットの RSA ベースの証明書が必要です。
+ SPEKE は CPIX 機能のサブセットのみを利用します。
  + SPEKE は `UpdateHistoryItemList` の機能を省略します。リストがレスポンスに存在する場合、SPEKE はそれを無視します。
  + SPEKE では、ルート/リーフキー機能は省略されます。`ContentKey@dependsOnKey` 属性がレスポンスに存在する場合、SPEKE はそれを無視します。
  + SPEKE では、`BitrateFilter` 要素と `VideoFilter@wcg` 属性は省略されます。これらの要素または属性が CPIX ペイロードに存在する場合、SPEKE はそれを無視します。
+ [スタンダードペイロードコンポーネント](standard-payload-components-v2.md)のページまたは[暗号化契約](encryption-contract-v2.md)のページで「サポートされる」として参照されている要素または属性のみ、SPEKE v2 と交換される CPIX ドキュメントで使用できます。
+ すべての要素および属性は、エンクリプタが CPIX リクエストに含めている場合、キープロバイダーの CPIX レスポンスで有効な値を保持します。そうでない場合、エンクリプタは停止してエラーをスローします。
+ SPEKE は `KeyPeriodFilter` 要素でキーローテーションをサポートします。SPEKE は `ContentKeyPeriod@index` のみを使用して、キー期間を追跡します。
+ HLS シグナリングの場合、複数の `DRMSystem.HLSSignalingData` 要素を使用する必要があります。`DRMSystem.HLSSignalingData@playlist` 属性値「media」で使用されるものと、`DRMSystem.HLSSignalingData@playlist` 属性値「master」で使用されるものです。
+ キーをリクエストするとき、エンクリプタは、`ContentKey` 要素にオプションの `@explicitIV` 属性を使用することがあります。キープロバイダーは、属性がリクエストに含まれていなくても、`@explicitIV` を使用して IV で応答することができます。
+ エンクリプタはキー識別子 (`KID`) を生成しますが、これは与えられたコンテンツ ID とキー期間に対して同じです。キープロバイダーには、リクエストドキュメントに対するレスポンスとして `KID` が含まれます。
+ エンクリプタは `CPIX@contentId` 属性の値を含めます。この属性に空の値を受け取ると、キープロバイダーは「Missing CPIX@contentId」(CPIX@contentId がありません) という説明を含むエラーを返します。`CPIX@contentId` 値をキープロバイダーでオーバーライドすることはできません。

   `CPIX@id` 値が null でない場合は、キープロバイダーによって無視されます。
+ エンクリプタは `CPIX@version` 属性の値を含めます。この属性に空の値を受け取ると、キープロバイダーは「Missing CPIX@version」(CPIX@version がありません) という説明を含むエラーを返します。サポートされていないバージョンのリクエストを受け取った場合、キープロバイダーから返されるエラーの説明は「Unsupported CPIX@version」(サポートされていない CPIX@version です) になります。

   `CPIX@version` 値をキープロバイダーでオーバーライドすることはできません。
+ エンクリプタは、リクエストされたキーごとに `ContentKey@commonEncryptionScheme` 属性の値を含めます。この属性に空の値を受け取ると、キープロバイダーは「Missing ContentKey@commonEncryptionScheme for KID `id`」(KID id の ContentKey@commonEncryptionScheme がありません) という説明を含むエラーを返します。

  一意の CPIX ドキュメントでは、異なる `ContentKey@commonEncryptionScheme` 属性に複数の値を混在させることはできません。このような組み合わせを受信すると、キープロバイダーは「Non compliant ContentKey@commonEncryptionScheme combination」(非準拠の ContentKey @commonEncryptionScheme の組み合わせがあります) という説明を含むエラーを返します。

  すべての `ContentKey@commonEncryptionScheme` 値がすべての DRM テクノロジと互換性があるわけではありません。このような組み合わせを受信すると、キープロバイダーは「ContentKey@commonEncryptionScheme non compatible with DRMSystem `id`」(ContentKey@commonEncryptionScheme は DRMSystem id と互換性がありません) という説明を含むエラーを返します。

   `ContentKey@commonEncryptionScheme` 値をキープロバイダーでオーバーライドすることはできません。
+ CPIX レスポンス本文で `DRMSystem@PSSH` と `DRMSystem.ContentProtectionData` innerXML `<pssh>` 要素に異なる値を受け取った場合、エンクリプタは停止してエラーをスローします。

**CPIX 用の API**
+ キープロバイダーは、`X-Speke-User-Agent` HTTP レスポンスヘッダーの値を含めます。
+ SPEKE 準拠のエンクリプタはクライアントとして機能し、POST オペレーションをキープロバイダーエンドポイントに送信します。
+ エンクリプタは、`X-Speke-Version` HTTP リクエストヘッダーの値と、リクエストで使用される SPEKE バージョンを含めます。その際に、バージョンは MajorVersion.MinorVersion として定式化されます (SPEKE v2.0 の場合は '2.0' など)。キープロバイダーがエンクリプタによって使用される SPEKE バージョンを現在のリクエストでサポートしていない場合、キープロバイダーは「Unsupported SPEKE version」(サポート対象外の SPEKE バージョン) という説明を含むエラーを返し、ベストエフォートベースでの CPIX ドキュメントの処理を試行しません。

  キープロバイダーは、エンクリプタによって定義された `X-Speke-Version` ヘッダー値をリクエストへのレスポンスで変更できません。
+ レスポンス本文でエラーを受信すると、エンクリプタはエラーをスローし、SPEKE v1.0 のバージョニングでリクエストを再試行しません。

  キープロバイダーがエラーを返さないものの、必須情報を含む CPIX ドキュメントを返さない場合、エンクリプタは停止してエラーをスローする必要があります。

次の表は、キープロバイダーがメッセージの本文で返す必要がある標準メッセージをまとめたものです。エラーの場合の HTTP レスポンスコードは 4XX または 5XX になり、200 ではありません。422 エラーコードは SPEKE/CPIX に関連するすべてのエラーに使用できます。


| エラーケース | エラーメッセージ | 
| --- | --- | 
|  CPIX @contentId が定義されていない  |  Missing CPIX@contentId (CPIX@contentId がありません)  | 
|  CPIX @version が定義されていない  |  Missing CPIX@version (CPIX@version がありません)  | 
|  CPIX@version がサポートされていない  |  Unsupported CPIX@version (サポート対象外の CPIX@version)  | 
|  ContentKey@commonEncryptionScheme が定義されていない  |  Missing ContentKey@commonEncryptionScheme for KID `id` (KID id の ContentKey@commonEncryptionScheme がありません) (ここで、`id` は ContentKey@kid の値と等しい)  | 
|  単一の CPIX ドキュメントで複数の ContentKey@commonEncryptionScheme 値が使用されている  |  Non compliant ContentKey@commonEncryptionScheme combination (非準拠の ContentKey@commonEncryptionScheme の組み合わせがあります)  | 
|  ContentKey@commonEncryptionScheme が DRM テクノロジーと互換性がない  |  ContentKey@commonEncryptionScheme non compatible with DRMSystem `id` (ContentKey@commonEncryptionScheme は DRMSystem id と互換性がありません) (ここで、`id` は DRMSystem@systemId の値と等しい)  | 
|  X-Speke-Version ヘッダー値がサポートされている SPEKE バージョンではない  |  Unsupported SPEKE version (サポート対象外の SPEKE バージョン)  | 
|  暗号化契約の形式が正しくない  |  Malformed encryption contract (不正な形式の暗号化契約)  | 
|  暗号化契約が DRM のセキュリティレベルの制約と矛盾している  |  Requested CPIX encryption contract not supported (リクエストされた CPIX 暗号化契約はサポートされていません)  | 
|  暗号化契約に VideoFilter または AudioFilter 要素が含まれていない  |  Missing CPIX encryption contract (CPIX 暗号化契約がありません)  | 

# SPEKE API v2 - 標準ペイロードコンポーネント
<a name="standard-payload-components-v2"></a>

1 回の SPEKE 要求により、エンクリプタは特定のコンテンツに対して定義された暗号化契約に従って、複数のコンテンツキーを、複数のパッケージ形式に必要なマニフェストシグナリングとともにリクエストすることができます。

これらすべての側面をカバーするために、標準の CPIX ドキュメントは、3 つの必須リストセクションと、ライブコンテンツのキーローテーションのためのオプションのリストセクションで構成されています。

**<cpix:ContentKeyList> セクションとトップレベルの <cpix:CPIX> 要素**  
これは、ライブストリーミングと VOD ストリーミングの両方に関連した必須セクションで、エンクリプタで使用する必要があるさまざまなコンテンツキーを定義します。`<cpix:ContentKeyList>` 要素には 1 つまたは複数の `<cpix:ContentKey>` 子要素を含めることができます。それぞれの要素は個別のコンテンツキーについて記述します。

CPIX 仕様に従って、`ContentKey@commonEncryptionScheme` 属性に使用できる値は、ISO ベースメディアファイル形式ファイルの一般的な暗号化の仕様 (ISO/IEC 23001-7:2016) で定義されています。
+ 'cenc': AES-CTR モードのフルサンプルとビデオ NAL サブサンプル暗号化
+ 'cbc1': AES-CBC モードのフルサンプルとビデオ NAL サブサンプル暗号化
+ 'cens': AES-CTR モードの部分的なビデオ NAL パターン暗号化
+ 'cbcs': AES-CBC モードの部分的なビデオ NAL パターン暗号化

次の例は、暗号化されていない単一のコンテンツキーを持つ CPIX ドキュメントを示しています。

```
<cpix:CPIX contentId="abc123" version="2.3" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff" commonEncryptionScheme="cbcs">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
	</cpix:ContentKeyList>
	...
</cpix:CPIX>
```

デフォルトでは、以下の例のように、コンテンツキーは暗号化されません。ただし、コンテンツキーの暗号化は、<cpix:DeliveryDataList> 要素を含めることにより、エンクリプタによってリクエストすることができます。詳細については、コンテンツキーの暗号化のセクションを参照してください。


| SPEKE でサポートされる要素 | 必須属性 | オプションの属性 | 必須の子要素 | オプションの子要素 | 
| --- | --- | --- | --- | --- | 
|  <cpix:CPIX>  |  contentId、version、xmlns:cpix、xmlns:pskc  |  name、xmlns:enc  |  1 つの <cpix:ContentKeyList>、1 つの <cpix:DRMSystemList>、1 つの <cpix:ContentKeyUsageRuleList>  |  1 つの <cpix:DeliveryDataList>、1 つの <cpix:ContentKeyPeriodList>  | 
|  <cpix:ContentKeyList>  |  -  |  id  |  少なくとも 1 つの <cpix:ContentKey>  |  -  | 
|  <cpix:ContentKey>  |  kid、commonEncryptionScheme、Data  |  id、Algorithm、explicitIV  |  1 つの <pskc:Secret>  |  -  | 
|  <pskc:Secret>  |  PlainValue または EncryptedValue  |  ValueMAC  |  -  |  <enc:EncryptionMethod>、<enc:CipherData>  | 

**<cpix:DRMSystemList> セクション**  
これは、ライブストリーミングと VOD ストリーミングの両方に関連した必須セクションで、コンテンツキーとともに使用する必要があるさまざまな DRM システムを定義します。

次の例は、単一の PlayReady DRM システム仕様を持つ DRM システムリストを示しています。

```
<cpix:DRMSystemList>
	<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
		<cpix:HLSSignalingData playlist="media">HicXmbZ2m[...]4==</cpix:HLSSignalingData>
		<cpix:HLSSignalingData playlist="master">HicXmbZ2m[...]jEi</cpix:HLSSignalingData>
		<cpix:ContentProtectionData>t7WwH24FI[...]YCC</cpix:ContentProtectionData>
		<cpix:PSSH>FFFFanBzc[...]A==</cpix:PSSH>
		<cpix:SmoothStreamingProtectionHeaderData>s5RrJ12HL[...]UBB</cpix:SmoothStreamingProtectionHeaderData>
	</cpix:DRMSystem>
</cpix:DRMSystemList>
```

DRM SystemID の完全なリストについては、DASH-IF 識別子リポジトリの[コンテンツ保護](https://dashif.org/identifiers/content_protection/)セクションを参照してください。


| SPEKE でサポートされる要素 | 必須属性 | オプションの属性 | 必須の子要素 | オプションの子要素 | 
| --- | --- | --- | --- | --- | 
|  <cpix:DRMSystemList>  |  -  |  id  |  少なくとも 1 つの <cpix:DRMSystem>  |  -  | 
|  <cpix:DRMSystem>  |  kid、systemId  |  id、name、PSSH  |  -  |  ContentProtectionData、SmoothStreamingProtectionHeaderData、プレイリストの属性値が異なる 2 つの <cpix:HLSSignalingData> 要素  | 

 ISO-BMFF カプセル化がメディアセグメントに適用されている場合、`DRMSystem@PSSH` は必須です。`DRMSystem.ContentProtectionData` innerXML `<pssh>` 要素は、マニフェストシグナリングの目的でのみ、エンクリプタによって利用されます。

`DRMSystem@PSSH` が存在し、`DRMSystem.ContentProtectionData` に innerXML `<pssh>` 要素が含まれている場合、両方の値は同じでなければなりません。

`DRMSystem` シグナリングが HLS マニフェストで伝送される場合、CPIX リクエストとレスポンスには、`<cpix:HLSSignalingData playlist="media">` 要素と `<cpix:HLSSignalingData playlist="master">` 要素の両方が含まれている必要があります。

**<cpix:ContentKeyPeriodList> セクション**  
これは、ライブストリーミングにのみ関連するオプションのセクションで、コンテンツに適用される暗号化期間を定義します。

`<cpix:ContentKeyPeriodList>` 要素には 1 つまたは複数の `<cpix:ContentKeyPeriod>` 子要素を含めることができます。それぞれの要素はライブタイムラインの個別の暗号化期間について記述します。id 属性の値の一部として UUID を使用することは、一般的に使用されるアプローチです。

```
<cpix:ContentKeyPeriodList>
	<cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
</cpix:ContentKeyPeriodList>
```


| SPEKE でサポートされる要素 | 必須属性 | オプションの属性 | 必須の子要素 | オプションの子要素 | 
| --- | --- | --- | --- | --- | 
|  <cpix:ContentKeyPeriodList>  |  -  |  id  |  少なくとも 1 つの <cpix:ContentKeyPeriod>  |  -  | 
|  <cpix:ContentKeyPeriod>  |  id、index  |  -  |  -  |  -  | 

暗号化期間を使用する場合は、次のセクションに示すように、CPIX ドキュメント内のいずれかの暗号化期間に暗号化キーをアタッチする必要があります。

**<cpix:ContentKeyUsageRuleList> セクション**  
これは、ライブストリーミングと VOD ストリーミングの両方に関連する必須セクションであり、暗号化期間にわたってストリームセット内でさまざまなコンテンツキーがトラックを保護する方法を定義します。

<cpix:ContentKeyUsageRuleList> 要素には、1 つ以上の <cpix:ContentKeyUsageRule> 子要素を含めることができます。それぞれの子要素は、特定の暗号化期間中に、指定されたコンテンツキーがエンクリプタによって適用される可能性のあるトラックについて記述します。<cpix:ContentKeyUsageRule> 要素には、1 つ以上の <cpix:AudioFilter> 要素または 1 つの <cpix:VideoFilter> 要素が存在する必要があります。

次の例は、特定の暗号化期間中にすべてのオーディオトラックとビデオトラックに 1 つのコンテンツキーを適用するというルールのみを含む単純なリストを示しています。

```
<cpix:ContentKeyUsageRuleList>
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="ALL">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
		<cpix:VideoFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```


| SPEKE でサポートされる要素 | 必須属性 | オプションの属性 | 必須の子要素 | オプションの子要素 | 
| --- | --- | --- | --- | --- | 
|  <cpix:ContentKeyUsageRuleList>  |  -  |  id  |  少なくとも 1 つの <cpix:ContentKeyUsageRule>  |  -  | 
|  <cpix:ContentKeyUsageRule>  |  kid、intendedTrackType  |  -  |  少なくとも 1 つの <cpix:AudioFilter> または 1 つの <cpix:VideoFilter> (\$1)  |  <cpix:KeyPeriodFilter>  | 
|  <cpix:KeyPeriodFilter>  |  periodId  |  -  |  -  |  -  | 
|  <cpix:AudioFilter>  |  -  |  minChannels、maxChannels  |  -  |  -  | 
|  <cpix:VideoFilter>  |  -  |  minPixels、maxPixels、hdr、minFps、maxFps  |  -  |  -  | 

 *(\$1) ストリームセット内の 1 つまたは複数のトラックを保護するために単一または複数のコンテンツキーを使用することに関する詳細な説明については、ドキュメントの[暗号化契約](encryption-contract-v2.md)セクションを参照してください。\$1* 

# SPEKE API v2 - 暗号化契約
<a name="encryption-contract-v2"></a>

暗号化契約は、トラックの特性に基づいて、どのコンテンツキーが特定のストリームセット内のどのトラックを保護しているかを定義します。

ストリームセット内の異なるトラックに複数のコンテンツキーを使用することが、必須ではないものの、業界のベストプラクティスとして推奨されています。少なくとも 2 つの異なるコンテンツキー (オーディオトラック用に 1 つとビデオトラック用に 1 つ) を使用するようにしてください。単一のコンテンツキーを使用して複数のトラックを暗号化することは可能ですが、エンクリプタからキープロバイダーに送信される CPIX ドキュメントで明示的に通知する必要があります。一般的に、エンクリプタは、必要なコンテンツキーの数と、それらがさまざまなメディアトラックの暗号化にどのように活用されるかを常に正確に記述します。

**原則**  
暗号化契約は、CPIX ドキュメントの `<cpix:ContentKeyUsageRuleList>` セクションにあります。このセクションでは、`<cpix:ContentKeyList>` セクションで定義された各コンテンツキーは、特定の `<cpix:ContentKeyUsageRule>` 要素に対応します。これには以下が含まれます。
+ 1 つ以上のサブコンポーネントを参照できる `ContentKeyUsageRule@intendedTrackType` 属性。複数のサブコンポーネントが使用されている場合は、「\$1」記号で区切られます。`ContentKeyUsageRule@intendedTrackType` の値は暗号化契約では一意であり、複数の `ContentKeyUsageRule` 要素で使用することはできません。
+ 1 つまたは複数の `<cpix:AudioFilter>` または `<cpix:VideoFilter>` 子要素 (`ContentKeyUsageRule@intendedTrackType` 属性の値に応じます)。

この関係を規定するルールは次のとおりです。
+ ストリームセットのすべてのオーディオトラックとビデオトラックを一意のコンテンツキーで保護する必要がある場合は、文字列 `'ALL'` を `ContentKeyUsageRule@intendedTrackType` 属性値として使用する必要があります。例 1 は、このようなユースケースを示しています。この状況では、属性を持たない `<cpix:AudioFilter />` 子属性と `<cpix:VideoFilter />` 子属性の両方を含める必要があります。`<cpix:AudioFilter>` 要素や `<cpix:VideoFilter>` 要素のその他の組み合わせは、この特定のコンテキストでは無効です。
+ それ以外のすべてのユースケースでは、`ContentKeyUsageRule@intendedTrackType` 属性の値は自由に定義でき、`<cpix:AudioFilter />` 子要素と `<cpix:VideoFilter />` 子要素の数は、「\$1」記号で集計されたサブコンポーネントの数に対応する必要があります。例 2/3/4/5/6/7/9/10 は、`ContentKeyUsageRule@intendedTrackType` 属性の値に単一のサブコンポーネントが存在する場合のこの要件を示しています。例 8 は、複数のサブコンポーネントが使用される場合を示しています。ここで、`ContentKeyUsageRule@intendedTrackType="SD+HD"` は異なる属性値を持つ 2 つの別個の `<cpix:VideoFilter>` 子要素によって記述され、`ContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD"` は異なる属性値を持つ 3 つの別個の `<cpix:VideoFilter>` 子要素によって記述されています。

**フィルター**  
CPIX は複数のフィルタリング要素と属性を定義しますが、SPEKE はそのサブセットのみをサポートしています。次の表では、これらの違いを要約しています。


| CPIX フィルターのタイプ | SPEKE の全体的なサポート | SPEKE でサポートされるフィルター属性 | SPEKE でサポートされないフィルター属性 | 
| --- | --- | --- | --- | 
|  <cpix:VideoFilter>  |  はい  |  minPixels、maxPixels、hdr、minFps、maxFps (オプションの属性)  |  wcg  | 
|  <cpix:AudioFilter>  |  はい  |  minChannels、 maxChannels (オプションの属性)  |  | 
|  <cpix:KeyPeriodFilter>  |  はい  |  periodId (必須属性)  |  | 
|  <cpix:BitrateFilter>  |  不可  |  該当なし  |  該当なし  | 
|  <cpix:LabelFilter>  |  不可  |  該当なし  |  該当なし  | 

VideoFilter の CPIX 仕様に従って、[minPixels, maxPixels] は両方のディメンションのすべての包含範囲であり、(minFps, maxFps] は maxFps ディメンションの場合のみの包含範囲です。AudioFilter の場合、[minChannels, maxChannels] は両方のディメンションの包含範囲です。

**問題のある状況**  
暗号化契約で提供される情報が、部分的、あいまい、または誤りである状況があります。このような場合、エンクリプタとキープロバイダーが適切に動作し、コンテンツが適切に保護されていることを保証することが重要です。次の表に、このような状況での推奨される動作を示します。


| 状況 | エンクリプタの動作 | キープロバイダーの動作 | 
| --- | --- | --- | 
|  ストリームセット内の 1 つまたは複数のトラックにルールが適用されない (以下の例 3 を参照)  |  エンクリプタは、(CPIX ペイロードの外部の) 設定を確認し、関係するトラックが暗号化を必要としないことを確認する必要があります。想定と異なる場合、エンクリプタはエラーをスローして、処理を停止する必要があります。  |   *該当なし: キープロバイダーはストリームセット構造を把握していません。*  | 
|  複数のルールが重複し、特定のトラックを暗号化するために複数のコンテンツキーが提案される  |  エンクリプタは、ドキュメントの順番で正常に評価された最後の ContentKeyUsageRule を適用する必要があります。  |   *該当なし: キープロバイダーはストリームセット構造を把握していません。*  | 
|  暗号化契約が単一の SPEKE リクエスト/レスポンスサイクルで変更される  |  キープロバイダーは暗号化契約を定義する役割を負わないため、エンクリプタは例外を発生させ、処理を停止します。  |  この状況がそもそも発生しないようにするために、キープロバイダーが SPEKE 要求の CPIX ペイロードで受信した暗号化契約を変更しないようにする必要があります。  | 
|  不正な形式の暗号化契約: intendedTrackType/filters カーディナリティ制約例外、サポートされていないフィルターまたは属性  |  この場合、誤ったコンテンツ保護が行われたり、一部のトラックが保護されないままになったりする可能性が非常に高いため、エンクリプタは例外を発生させて処理を停止し、SPEKE リクエストをキープロバイダーに送信しません。  |  キープロバイダーは例外を発生させ、「Malformed encryption contract」(不正な形式の暗号化契約) エラーを返します。  | 
|  暗号化契約の形式は正しいが、DRM のセキュリティレベルの制約に違反している。例えば、オーディオトラックと UHD ビデオトラックの両方を保護するために、単一のコンテンツキーが要求されている  |  この場合、誤ったコンテンツ保護が行われる可能性が非常に高いため、エンクリプタが DRM セキュリティレベルの制約を把握している場合には、例外を発生させて処理を停止し、SPEKE リクエストをキープロバイダーに送信しません。  |  キープロバイダーは例外を発生させ、「Requested CPIX encryption contract not supported」(リクエストされた CPIX 暗号化契約はサポートされていません) エラーを返します。  | 
|  暗号化契約がない  |  エンクリプタは、VideoFilter 要素または AudioFilter 要素を含まない CPIX ドキュメントを送信しません。  |  キープロバイダーは例外を発生させ、「Missing CPIX encryption contract」(CPIX 暗号化契約がありません) エラーを返します。  | 

**暗号化契約の例**  
 *例 1: すべてのオーディオトラックとビデオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="ALL">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
		<cpix:VideoFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 2: すべてのビデオトラックに 1 つのコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
    <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
        <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
        <cpix:VideoFilter />
    </cpix:ContentKeyUsageRule>
    <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
        <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
        <cpix:AudioFilter />
    </cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 3: すべてのオーディオトラックと暗号化されていないビデオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 4: 異なるビデオトラック (SD/HD) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD video tracks (up to 1024x576) -->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="589824" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HD video tracks (more than 1024x576) -->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="589825" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks -->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 5: 異なるビデオトラック (SD/HD/UHD) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD video tracks (up to 1024x576) -->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="589824" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HD video tracks (more than 1024x576, up to 1920x1080) -->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="589825" maxPixels="2073600" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for UHD video tracks (more than 1920x1080) -->
	<cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="2073601" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks -->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 *例 6: 異なるビデオトラック (SD/HD/UHD1/UHD2) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー* 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD video tracks (up to 1024x576) -->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="589824" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HD video tracks (more than 1024x576, up to 1920x1080) -->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="589825" maxPixels="2073600" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for UHD1 video tracks (more than 1920x1080, up to 4096x2160) -->
	<cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD1">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="2073601" maxPixels="8847360" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for UHD2 video tracks (more than 4096x2160) -->
	<cpix:ContentKeyUsageRule kid="63d2ec36-6b7c-9f34-4546-97d01f36f7c5" intendedTrackType="UHD2">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="8847361" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks -->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 例 7: 異なるビデオトラック (SD/HD1/HD2/UHD1/UHD2) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD video tracks (up to 1024x576) -->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="589824" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HD1 video tracks (more than 1024x576, up to 1280x720) -->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD1">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="589825" maxPixels="921600" />
	</cpix:ContentKeyUsageRule>
        <!-- Rule for HD2 video tracks (more than 1280x720, up to 1920x1080) -->
          <cpix:ContentKeyUsageRule kid="cda406d8-9d87-4f76-92da-31110e756176" intendedTrackType="HD2">
            <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
            <cpix:VideoFilter minPixels="921601" maxPixels="2073600" />
          </cpix:ContentKeyUsageRule>
	<!-- Rule for UHD1 video tracks (more than 1920x1080, up to 4096x2160) -->
	<cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD1">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="2073601" maxPixels="8847360" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for UHD2 video tracks (more than 4096x2160) -->
	<cpix:ContentKeyUsageRule kid="63d2ec36-6b7c-9f34-4546-97d01f36f7c5" intendedTrackType="UHD2">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter minPixels="8847361" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks -->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 例 8: 異なるビデオトラック (複数の属性タイプに基づく) に複数のコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキー 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for SD and HD video tracks-->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD+HD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter maxPixels="442368" maxFps="30" hdr="false"/>
		<cpix:VideoFilter minPixels="442369" maxPixels="2073600" maxFps="30" hdr="false"/>
	</cpix:ContentKeyUsageRule>
	<!-- Rule for HDR, HFR and UHD video tracks-->
	<cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HDR+HFR+UHD">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter hdr="true" />
		<cpix:VideoFilter minFps="30" />
		<cpix:VideoFilter minPixels="20736001" />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for all audio tracks-->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter />
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 例 9: すべてのビデオトラックに 1 つのコンテンツキー、ステレオおよびマルチチャネルオーディオトラックに複数のコンテンツキー 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for video tracks-->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for stereo audio tracks-->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="STEREO_AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter maxChannels="2"/>
	</cpix:ContentKeyUsageRule>
	<!-- Rule for multichannel audio tracks-->
	<cpix:ContentKeyUsageRule kid="7ae8e96f-309e-42c3-a510-24023d923373" intendedTrackType="MULTICHANNEL_AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<AudioFilter minChannels="3"/>
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

 例 10: すべてのビデオトラックに 1 つのコンテンツキー、ステレオおよび 2 つの種類のマルチチャネルオーディオトラックに複数のコンテンツキー 

```
<cpix:ContentKeyUsageRuleList>
	<!-- Rule for video tracks-->
	<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:VideoFilter />
	</cpix:ContentKeyUsageRule>
	<!-- Rule for stereo audio tracks-->
	<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="STEREO_AUDIO">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter maxChannels="2"/>
	</cpix:ContentKeyUsageRule>
	<!-- Rule for multichannel audio tracks (3 to 6 channels)-->
	<cpix:ContentKeyUsageRule kid="7ae8e96f-309e-42c3-a510-24023d923373" intendedTrackType="MULTICHANNEL_AUDIO_3_6">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter minChannels="3" maxChannels="6"/>
	</cpix:ContentKeyUsageRule>
  <!-- Rule for multichannel audio tracks (7 channels and more)-->
	<cpix:ContentKeyUsageRule kid="81eb3761-55ff-4d22-a31d-94f01bbfd8ba" intendedTrackType="MULTICHANNEL_AUDIO_7">
		<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
		<cpix:AudioFilter minChannels="7"/>
	</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
```

# SPEKE API v2 - ライブワークフローメソッド呼び出しの例
<a name="live-workflow-methods-v2"></a>

 *リクエストの構文例* 

次の URL は例であり、固定形式ではありません。

```
POST https://speke-compatible-server/speke/v2.0/copyProtection
```

 *リクエストボディ* 

CPIX ドキュメント。

 *リクエストヘッダー* 


| 名前 | 型 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `AWS Authorization`   |  文字列  |  1..1  |  [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) を参照   | 
|   `X-Amz-Security-Token`   |  String  |  1..1  |  [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) を参照   | 
|   `X-Amz-Date`   |  String  |  1..1  |  [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) を参照   | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 
|   `X-Speke-Version`   |  String  |  1..1  |  リクエストで使用される SPEKE API バージョン。SPEKE v2.0 の場合は「2.0」のように、MajorVersion.MinorVersion として定式化されます。  | 

 *レスポンスヘッダー* 


| 名前 | 型 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `X-Speke-User-Agent`   |  文字列  |  1..1  |  キープロバイダーを識別する文字列  | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 
|   `X-Speke-Version`   |  String  |  1..1  |  リクエストで使用される SPEKE API バージョン。SPEKE v2.0 の場合は「2.0」のように、MajorVersion.MinorVersion として定式化されます。  | 

 *レスポンスのリクエスト* 


| HTTP コード | ペイロード名 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1..1  |  DASH-CPIX ペイロードレスポンス  | 
|   `4XX (Client error)`   |  クライアントエラーメッセージ'  |  1..1  |  クライアントエラーの説明  | 
|   `5XX (Server error)`   |  サーバーエラーメッセージ  |  1..1  |  サーバーエラーの説明  | 

**注記**  
このセクションの例には、コンテンツキーの暗号化は含まれていません。コンテンツキーの暗号化を追加する方法については、[コンテンツキーの暗号化](content-key-encryption-v2.md)を参照してください。

 *クリアでキーを含むリクエストペイロードのライブ例* 

次の例は、エンクリプタから DRM キープロバイダーへの一般的なライブリクエストペイロードを示しています。ここでは、すべてのビデオトラックに 1 つのコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキーがあります。

```
<cpix:CPIX contentId="abc123" version="2.3" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff" commonEncryptionScheme="cbcs"></cpix:ContentKey>
		<cpix:ContentKey explicitIV="L6jzdXrXAFbCJGBuMrrKrG==" kid="53abdba2-f210-43cb-bc90-f18f9a890a02" commonEncryptionScheme="cbcs"></cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- FairPlay -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
		</cpix:DRMSystem>
		<!-- Widevine -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
			<cpix:ContentProtectionData></cpix:ContentProtectionData>
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
			<cpix:ContentProtectionData></cpix:ContentProtectionData>
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>
		<!-- Playready -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
			<cpix:ContentProtectionData></cpix:ContentProtectionData>
			<cpix:PSSH></cpix:PSSH>
			<cpix:SmoothStreamingProtectionHeaderData></cpix:SmoothStreamingProtectionHeaderData>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
			<cpix:ContentProtectionData></cpix:ContentProtectionData>
			<cpix:PSSH></cpix:PSSH>
			<cpix:SmoothStreamingProtectionHeaderData></cpix:SmoothStreamingProtectionHeaderData>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
			<cpix:VideoFilter />
		</cpix:ContentKeyUsageRule>
		<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
			<cpix:AudioFilter />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```

 *クリアでキーを含むレスポンスペイロードのライブ例* 

次の例は、DRM キープロバイダーからの一般的なレスポンスペイロードを示しています (読みやすくするために、戻り値は […​] で短縮されています)。

```
<cpix:CPIX contentId="abc123" version="2.3" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff" commonEncryptionScheme="cbcs">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
		<cpix:ContentKey explicitIV="L6jzdXrXAFbCJGBuMrrKrG==" kid="53abdba2-f210-43cb-bc90-f18f9a890a02" commonEncryptionScheme="cbcs">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>h3toSFIlyAYpfXVQ795m6x==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- FairPlay -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:HLSSignalingData playlist="media">aHR0cHM6L[...]WZm</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">Y29tLmFwc[...]XJ5</cpix:HLSSignalingData>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:HLSSignalingData playlist="media">trBAnbMcj[...]u44</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">mn626PjyR[...]2fi</cpix:HLSSignalingData>
		</cpix:DRMSystem>
		<!-- Widevine -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media">Ifa2V5LWl[...]nNB</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">oIARIQeSI[...]Nd2l</cpix:HLSSignalingData>
			<cpix:ContentProtectionData>RoNd2lkZXZ[...]Nib</cpix:ContentProtectionData>
			<cpix:PSSH>AAAAanBzc[...]A==</cpix:PSSH>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media">lTznjvtzL[...]GfJ</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">XgzdzQH7p[...]zeX</cpix:HLSSignalingData>
			<cpix:ContentProtectionData>TdgRnuJsZ[...]wDw</cpix:ContentProtectionData>
			<cpix:PSSH>mYZbjpWdS[...]D==</cpix:PSSH>
		</cpix:DRMSystem>
		<!-- Playready -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<cpix:HLSSignalingData playlist="media">HicXmbZ2m[...]4==</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">GVzdCIfa2[...]Eta</cpix:HLSSignalingData>
			<cpix:ContentProtectionData>t7WwH24FI[...]YCC</cpix:ContentProtectionData>
			<cpix:PSSH>FFFFanBzc[...]A==</cpix:PSSH>
			<cpix:SmoothStreamingProtectionHeaderData>s5RrJ12HL[...]UBB</cpix:SmoothStreamingProtectionHeaderData>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<cpix:HLSSignalingData playlist="media">BptGzwis2[...]Iej</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">3c9SXdVa0[...]MBH</cpix:HLSSignalingData>
			<cpix:ContentProtectionData>HotJCMQyc[...]GpU</cpix:ContentProtectionData>
			<cpix:PSSH>S6UD43ybN[...]f==</cpix:PSSH>
			<cpix:SmoothStreamingProtectionHeaderData>VBFUv2or0[...]JeP</cpix:SmoothStreamingProtectionHeaderData>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
			<cpix:VideoFilter />
		</cpix:ContentKeyUsageRule>
		<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
			<cpix:AudioFilter />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```

# SPEKE API v2 - VOD ワークフローメソッド呼び出しの例
<a name="vod-workflow-method-v2"></a>

 *リクエストの構文例* 

次の URL は例であり、固定形式ではありません。

```
POST https://speke-compatible-server/speke/v2.0/copyProtection
```

 *リクエストボディ* 

CPIX ドキュメント。

 *リクエストヘッダー* 


| 名前 | 型 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `AWS Authorization`   |  文字列  |  1..1  |  [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) を参照   | 
|   `X-Amz-Security-Token`   |  String  |  1..1  |  [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) を参照   | 
|   `X-Amz-Date`   |  String  |  1..1  |  [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) を参照   | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 
|   `X-Speke-Version`   |  String  |  1..1  |  リクエストで使用される SPEKE API バージョン。SPEKE v2.0 の場合は「2.0」のように、MajorVersion.MinorVersion として定式化されます。  | 

 *レスポンスヘッダー* 


| 名前 | 型 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `X-Speke-User-Agent`   |  文字列  |  1..1  |  キープロバイダーを識別する文字列  | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 
|   `X-Speke-Version`   |  String  |  1..1  |  リクエストで使用される SPEKE API バージョン。SPEKE v2.0 の場合は「2.0」のように、MajorVersion.MinorVersion として定式化されます。  | 

 *レスポンスのリクエスト* 


| HTTP コード | ペイロード名 | 発生 | 説明 | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1..1  |  DASH-CPIX ペイロードレスポンス  | 
|   `4XX (Client error)`   |  クライアントエラーメッセージ'  |  1..1  |  クライアントエラーの説明  | 
|   `5XX (Server error)`   |  サーバーエラーメッセージ  |  1..1  |  サーバーエラーの説明  | 

**注記**  
このセクションの例には、コンテンツキーの暗号化は含まれていません。コンテンツキーの暗号化を追加する方法については、[コンテンツキーの暗号化](content-key-encryption-v2.md)を参照してください。

 *クリアでキーを含むリクエストペイロードの VOD 例* 

次の例は、エンクリプタから DRM キープロバイダーへの一般的な VOD リクエストペイロードを示しています。すべてのビデオトラックに 1 つのコンテンツキー、すべてのオーディオトラックに 1 つのコンテンツキーがあります。

```
<cpix:CPIX contentId="abc123" version="2.3" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff" commonEncryptionScheme="cbcs"></cpix:ContentKey>
		<cpix:ContentKey explicitIV="L6jzdXrXAFbCJGBuMrrKrG==" kid="53abdba2-f210-43cb-bc90-f18f9a890a02" commonEncryptionScheme="cbcs"></cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- FairPlay -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
		</cpix:DRMSystem>
		<!-- Widevine -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
			<cpix:ContentProtectionData></cpix:ContentProtectionData>
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
			<cpix:ContentProtectionData></cpix:ContentProtectionData>
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>
		<!-- Playready -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
			<cpix:ContentProtectionData></cpix:ContentProtectionData>
			<cpix:PSSH></cpix:PSSH>
			<cpix:SmoothStreamingProtectionHeaderData></cpix:SmoothStreamingProtectionHeaderData>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
			<cpix:ContentProtectionData></cpix:ContentProtectionData>
			<cpix:PSSH></cpix:PSSH>
			<cpix:SmoothStreamingProtectionHeaderData></cpix:SmoothStreamingProtectionHeaderData>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
			<cpix:VideoFilter />
		</cpix:ContentKeyUsageRule>
		<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
			<cpix:AudioFilter />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```

 *クリアでキーを含むレスポンスペイロードの VOD 例* 

次の例は、DRM キープロバイダーからの一般的なレスポンスペイロードを示しています (読みやすくするために、戻り値は […​] で短縮されています)。

```
<cpix:CPIX contentId="abc123" version="2.3" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff" commonEncryptionScheme="cbcs">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
		<cpix:ContentKey explicitIV="L6jzdXrXAFbCJGBuMrrKrG==" kid="53abdba2-f210-43cb-bc90-f18f9a890a02" commonEncryptionScheme="cbcs">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>h3toSFIlyAYpfXVQ795m6x==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- FairPlay -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:HLSSignalingData playlist="media">aHR0cHM6L[...]WZm</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">Y29tLmFwc[...]XJ5</cpix:HLSSignalingData>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:HLSSignalingData playlist="media">trBAnbMcj[...]u44</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">mn626PjyR[...]2fi</cpix:HLSSignalingData>
		</cpix:DRMSystem>
		<!-- Widevine -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media">Ifa2V5LWl[...]nNB</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">oIARIQeSI[...]Nd2l</cpix:HLSSignalingData>
			<cpix:ContentProtectionData>RoNd2lkZXZ[...]Nib</cpix:ContentProtectionData>
			<cpix:PSSH>AAAAanBzc[...]A==</cpix:PSSH>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media">lTznjvtzL[...]GfJ</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">XgzdzQH7p[...]zeX</cpix:HLSSignalingData>
			<cpix:ContentProtectionData>TdgRnuJsZ[...]wDw</cpix:ContentProtectionData>
			<cpix:PSSH>mYZbjpWdS[...]D==</cpix:PSSH>
		</cpix:DRMSystem>
		<!-- Playready -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<cpix:HLSSignalingData playlist="media">HicXmbZ2m[...]4==</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">GVzdCIfa2[...]Eta</cpix:HLSSignalingData>
			<cpix:ContentProtectionData>t7WwH24FI[...]YCC</cpix:ContentProtectionData>
			<cpix:PSSH>FFFFanBzc[...]A==</cpix:PSSH>
			<cpix:SmoothStreamingProtectionHeaderData>s5RrJ12HL[...]UBB</cpix:SmoothStreamingProtectionHeaderData>
		</cpix:DRMSystem>
		<cpix:DRMSystem kid="53abdba2-f210-43cb-bc90-f18f9a890a02" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<cpix:HLSSignalingData playlist="media">BptGzwis2[...]Iej</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">3c9SXdVa0[...]MBH</cpix:HLSSignalingData>
			<cpix:ContentProtectionData>HotJCMQyc[...]GpU</cpix:ContentProtectionData>
			<cpix:PSSH>S6UD43ybN[...]f==</cpix:PSSH>
			<cpix:SmoothStreamingProtectionHeaderData>VBFUv2or0[...]JeP</cpix:SmoothStreamingProtectionHeaderData>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO">
			<cpix:VideoFilter />
		</cpix:ContentKeyUsageRule>
		<cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO">
			<cpix:AudioFilter />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```

# SPEKE API v2 - コンテンツキーの暗号化
<a name="content-key-encryption-v2"></a>

必要に応じて SPEKE 実装にコンテンツキーの暗号化を追加できます。コンテンツキーの暗号化は、コンテンツ自体の暗号化に加えて、転送用のコンテンツキーを暗号化することにより、エンドツーエンドの完全な保護を保証します。キープロバイダーにこれを実装していない場合は、トランスポートレイヤーの暗号化と強力な認証をセキュリティに使用することになります。

AWS クラウドで動作するエンクリプタにコンテンツキー暗号化を使用するには、お客様は証明書を AWS Certificate Manager にインポートし、暗号化アクティビティにその結果の証明書 ARN を使用します。エンクリプタは、証明書 ARN と ACM サービスを使用して、暗号化されたコンテンツキーを DRM キープロバイダーに提供します。

**制限事項**  
SPEKE は、DASH-IF CPIX 仕様で指定されているコンテンツキー暗号化をサポートします。ただし、次の制限があります。
+ SPEKE は、リクエストおよびレスポンスペイロードにデジタル署名検証 (XMLDSIG) をサポートしていません。
+ SPEKE には 2048 ビットの RSA ベースの証明書が必要です。

これらの制限は、[DASH-IF 仕様のカスタマイズと制約](speke-constraints-v2.md)にも記載されています。

**コンテンツキーの暗号化の実装**  
コンテンツの暗号化キーを提供するには、DRM キープロバイダーの実装に次の項目を含めます。
+ リクエストペイロードとレスポンスペイロードで要素 `<cpix:DeliveryDataList>` を処理します。
+ レスポンスペイロードの `<cpix:ContentKeyList>` に暗号化された値を入力します。

これらの要素の詳細については、[DASH-IF CPIX 2.3 仕様](https://dashif.org/docs/CPIX2.3/Cpix.html)を参照してください。

 *レスポンスペイロードのコンテンツキー暗号化要素の例 ` <cpix:DeliveryDataList> `* 

```
<cpix:CPIX contentId="abc123"
    version="2.3"
    xmlns:cpix="urn:dashif:org:cpix"
    xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
    <cpix:DeliveryDataList>
        <cpix:DeliveryData id="<ORIGIN SERVER ID>">
            <cpix:DeliveryKey>
                <ds:X509Data>
                    <ds:X509Certificate><X.509 CERTIFICATE, BASE-64 ENCODED></ds:X509Certificate>
                </ds:X509Data>
            </cpix:DeliveryKey>
        </cpix:DeliveryData>
    </cpix:DeliveryDataList>
    <cpix:ContentKeyList>
     ...
    </cpix:ContentKeyList>
</cpix:CPIX>
```

 *レスポンスペイロードのコンテンツキー暗号化要素の例` <cpix:DeliveryDataList> `* 

```
<cpix:CPIX contentId="abc123"
    version="2.3"
    xmlns:cpix="urn:dashif:org:cpix"
    xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
    <cpix:DeliveryDataList>
        <cpix:DeliveryData id="<ORIGIN SERVER ID>">
            <cpix:DeliveryKey>
                <ds:X509Data>
                    <ds:X509Certificate><X.509 CERTIFICATE, BASE-64 ENCODED></ds:X509Certificate>
                </ds:X509Data>
            </cpix:DeliveryKey>
            <cpix:DocumentKey Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc">
                <cpix:Data>
                    <pskc:Secret>
                        <pskc:EncryptedValue>
                            <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" />
                            <enc:CipherData>
                                <enc:CipherValue><RSA CIPHER VALUE></enc:CipherValue>
                            </enc:CipherData>
                        </pskc:EncryptedValue>
                        <pskc:ValueMAC>qnei/5TsfUwDu+8bhsZrLjDRDngvmnUZD2eva7SfXWw=</pskc:ValueMAC>
                    </pskc:Secret>
                </cpix:Data>
            </cpix:DocumentKey>
            <cpix:MACMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512">
                <cpix:Key>
                    <pskc:EncryptedValue>
                        <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" />
                        <enc:CipherData>
                            <enc:CipherValue><RSA CIPHER VALUE></enc:CipherValue>
                        </enc:CipherData>
                    </pskc:EncryptedValue>
                    <pskc:ValueMAC>DGqdpHUfFKxdsO9+EWrPjtdTCVfjPLwwtzEcFC/j0xY=</pskc:ValueMAC>
                </cpix:Key>
            </cpix:MACMethod>
        </cpix:DeliveryData>
    </cpix:DeliveryDataList>
    <cpix:ContentKeyList>
     ...
    </cpix:ContentKeyList>
</cpix:CPIX>
```

 *レスポンスペイロードのコンテンツキー暗号化要素の例` <cpix:ContentKeyList> `* 

次の例は、レスポンスペイロードの `<cpix:ContentKeyList>` 要素で暗号化されたコンテンツキーの処理を示しています。これは `<pskc:EncryptedValue>` 要素を使用します。

```
<cpix:ContentKeyList>
     <cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff" commonEncryptionScheme="cbcs">
         <cpix:Data>
             <pskc:Secret>
                 <pskc:EncryptedValue>
                     <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
                     <enc:CipherData>
                         <enc:CipherValue>NJYebfvJ2TdMm3k6v+rLNVYb0NoTJoTLBBdbpe8nmilEfp82SKa7MkqTn2lmQBPB</enc:CipherValue>
                     </enc:CipherData>
                 </pskc:EncryptedValue>
                 <pskc:ValueMAC>t9lW4WCebfS1GP+dh0IicMs+2+jnrAmfDa4WU6VGHc4=</pskc:ValueMAC>
             </pskc:Secret>
         </cpix:Data>
     </cpix:ContentKey>
 </cpix:ContentKeyList>
```

これに対して、以下の例は、クリアキーとして暗号化されていないコンテンツキーを持つ同様のレスポンスペイロードを示しています。これは `<pskc:PlainValue>` 要素を使用します。

```
<cpix:ContentKeyList>
    <cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff" commonEncryptionScheme="cbcs">
        <cpix:Data>
            <pskc:Secret>
                <pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
            </pskc:Secret>
        </cpix:Data>
    </cpix:ContentKey>
</cpix:ContentKeyList>
```

# SPEKE API v2 - キー識別子のオーバーライド
<a name="kid-override-v2"></a>

エンクリプタは、キーを回すたびに新しいキー識別子 (KID) を作成します。リクエストで KID を DRM キープロバイダーに渡します。ほとんどの場合、キープロバイダーは同じ KID を使用して応答しますが、レスポンスの KID には異なる値を提供できます。

以下は、KID `11111111-1111-1111-1111-111111111111` のリクエスト例です。

```
<cpix:CPIX contentId="abc123" version="2.3" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="11111111-1111-1111-1111-111111111111" commonEncryptionScheme="cbcs"></cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- Widevine -->
		<cpix:DRMSystem kid="11111111-1111-1111-1111-111111111111" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media"></cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master"></cpix:HLSSignalingData>
			<cpix:ContentProtectionData></cpix:ContentProtectionData>
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="11111111-1111-1111-1111-111111111111" intendedTrackType="VIDEO">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
			<cpix:VideoFilter />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```

次のレスポンスは、KID を `22222222-2222-2222-2222-222222222222` にオーバーライドします。

```
<cpix:CPIX contentId="abc123" version="2.3" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="22222222-2222-2222-2222-222222222222" commonEncryptionScheme="cbcs">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- Widevine -->
		<cpix:DRMSystem kid="22222222-2222-2222-2222-222222222222" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:HLSSignalingData playlist="media">Ifa2V5LWl[...]nNB</cpix:HLSSignalingData>
			<cpix:HLSSignalingData playlist="master">oIARIQeSI[...]Nd2l</cpix:HLSSignalingData>
			<cpix:ContentProtectionData>RoNd2lkZXZ[...]Nib</cpix:ContentProtectionData>
			<cpix:PSSH>AAAAanBzc[...]A==</cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="22222222-2222-2222-2222-222222222222" intendedTrackType="VIDEO">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/>
			<cpix:VideoFilter />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```