

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Ini adalah REST API untuk Secure Packager dan Encoder Key Exchange (SPEKE) v2. Gunakan spesifikasi ini untuk memberikan perlindungan hak cipta DRM bagi pelanggan yang menggunakan enkripsi. Agar sesuai dengan Speke, penyedia kunci DRM Anda harus mengekspos REST API yang dijelaskan dalam spesifikasi ini. Enkripsi membuat panggilan API ke penyedia kunci Anda.

**catatan**  
Contoh kode dalam spesifikasi ini hanya untuk tujuan ilustrasi. Anda tidak dapat menjalankan contoh karena mereka bukan bagian dari implementasi SPEKE yang lengkap.

SPEKE menggunakan definisi struktur data DASH Industry Forum Content Protection Information Exchange Format (DASH-IF-CPIX) untuk pertukaran kunci, dengan beberapa batasan. DASH-IF-CPIXmendefinisikan skema untuk menyediakan pertukaran multi-DRM yang dapat diperluas dari platform DRM ke enkripsi. Ini memungkinkan enkripsi konten untuk semua format kemasan bitrate adaptif pada saat kompresi dan pengemasan konten. Format kemasan bitrate adaptif termasuk HLS, DASH, dan MSS.

Dimulai dengan versi 2.0, SPEKE disejajarkan pada versi CPIX tertentu:

Di sisi SPEKE, ini diberlakukan melalui penggunaan header `X-Speke-Version` HTTP, dan di sisi CPIX melalui penggunaan atribut. `CPIX@version` Kurangnya elemen-elemen ini dalam permintaan adalah tipikal alur kerja lama SPEKE v1. Dalam alur kerja SPEKE v2, penyedia kunci diharapkan untuk memproses dokumen CPIX hanya jika mendukung kedua parameter versi.

Untuk informasi rinci tentang format pertukaran, lihat spesifikasi DASH Industry Forum [CPIX 2.3](https://dashif.org/docs/CPIX2.3/Cpix.html).

Secara keseluruhan, SPEKE v2.0 membawa evolusi berikut dibandingkan dengan SPEKE v1.0:
+ Semua tag dari namespace SPEKE XHTML tidak digunakan lagi demi tag yang setara di namespace CPIX XHTML
+  `SPEKE:ProtectionHeader`tidak digunakan lagi dan diganti dengan `CPIX:DRMSystem.SmoothStreamingProtectionHeaderData` 
+  `CPIX:URIExtXKey`, `SPEKE:KeyFormat` dan `SPEKE:KeyFormatVersions` tidak digunakan lagi dan diganti dengan `CPIX:DRMSystem.HLSSignalingData` 
+  `CPIX@id`digantikan oleh `CPIX@contentId` 
+ Atribut CPIX wajib baru:, `CPIX@version` `ContentKey@commonEncryptionScheme` 
+ Elemen CPIX opsional baru: `DRMSystem.ContentProtectionData` 
+ Support untuk beberapa kunci konten
+ Mekanisme cross-versioning antara SPEKE dan CPIX
+ Evolusi header HTTP: `X-Speke-Version` header baru, `Speke-User-Agent` header diganti namanya menjadi `X-Speke-User-Agent` 
+ penghentian API detak jantung

Karena spesifikasi SPEKE v1.0 tetap tidak berubah, implementasi yang ada tidak perlu diubah untuk terus mendukung alur kerja SPEKE v1.0.

**Topics**
+ [SPEKE API v2 - Kustomisasi dan kendala untuk spesifikasi DASH-IF](speke-constraints-v2.md)
+ [SPEKE API v2 - Komponen muatan standar](standard-payload-components-v2.md)
+ [SPEKE API v2 - Kontrak enkripsi](encryption-contract-v2.md)
+ [SPEKE API v2 - Contoh panggilan metode alur kerja langsung](live-workflow-methods-v2.md)
+ [SPEKE API v2 - contoh panggilan metode alur kerja VOD](vod-workflow-method-v2.md)
+ [SPEKE API v2 - Enkripsi kunci konten](content-key-encryption-v2.md)
+ [SPEKE API v2 - Mengganti pengenal kunci](kid-override-v2.md)

# SPEKE API v2 - Kustomisasi dan kendala untuk spesifikasi DASH-IF
<a name="speke-constraints-v2"></a>

[Spesifikasi DASH Industry Forum CPIX 2.3](https://dashif.org/docs/CPIX2.3/Cpix.html) mendukung sejumlah kasus penggunaan dan topologi. Spesifikasi SPEKE API v2.0 mendefinisikan Profil CPIX dan API untuk CPIX. Untuk mencapai dua tujuan ini, ia mematuhi spesifikasi CPIX dengan penyesuaian dan kendala berikut:

**Profil CPIX**
+ SPEKE mengikuti alur kerja Encryptor Consumer.
+ Untuk kunci konten terenkripsi, SPEKE menerapkan batasan berikut:
  + SPEKE tidak mendukung verifikasi tanda tangan digital (XMLDSIG) untuk muatan permintaan atau respons.
  + SPEKE membutuhkan 2048 sertifikat berbasis RSA.
+ SPEKE hanya memanfaatkan sebagian dari fungsionalitas CPIX:
  + SPEKE menghilangkan fungsionalitas. `UpdateHistoryItemList` Jika daftar hadir dalam tanggapan, SPEKE mengabaikannya.
  + SPEKE menghilangkan fungsionalitas root/leaf utama. Jika `ContentKey@dependsOnKey` atribut hadir dalam respons, SPEKE mengabaikannya.
  + SPEKE menghilangkan `BitrateFilter` elemen dan atribut. `VideoFilter@wcg` Jika elemen atau atribut ini ada dalam muatan CPIX, SPEKE mengabaikannya.
+ Hanya elemen atau atribut yang dirujuk sebagai 'Didukung' pada [halaman Komponen Muatan Standar atau halaman](standard-payload-components-v2.md) [kontrak Enkripsi](encryption-contract-v2.md) yang dapat digunakan dalam dokumen CPIX yang dipertukarkan dengan SPEKE v2.
+ Ketika disertakan dalam permintaan CPIX oleh enkripsi, semua elemen dan atribut harus membawa nilai yang valid dalam respons CPIX penyedia kunci. Jika tidak, enkripsi akan berhenti dan melempar kesalahan.
+ SPEKE mendukung rotasi kunci dengan `KeyPeriodFilter` elemen. SPEKE hanya menggunakan `ContentKeyPeriod@index` untuk melacak periode kunci.
+ Untuk pensinyalan HLS, beberapa `DRMSystem.HLSSignalingData` elemen harus digunakan: satu dengan nilai `DRMSystem.HLSSignalingData@playlist` atribut 'media', dan satu lagi dengan nilai `DRMSystem.HLSSignalingData@playlist` atribut 'master'.
+ Saat meminta kunci, enkripsi mungkin menggunakan `@explicitIV` atribut opsional pada elemen. `ContentKey` Penyedia kunci dapat merespons dengan menggunakan IV`@explicitIV`, bahkan jika atribut tidak termasuk dalam permintaan.
+ Enkripsi membuat pengenal kunci (`KID`), yang tetap sama untuk setiap ID konten dan periode kunci tertentu. Penyedia kunci memasukkan `KID` dalam tanggapannya terhadap dokumen permintaan.
+ Enkripsi harus menyertakan nilai untuk atribut. `CPIX@contentId` Saat menerima nilai kosong untuk atribut ini, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Missing CPIX @contentId '. `CPIX@contentId`nilai tidak dapat diganti oleh penyedia kunci.

   `CPIX@id`nilai, jika tidak null, akan diabaikan oleh penyedia kunci.
+ Enkripsi harus menyertakan nilai untuk atribut. `CPIX@version` Saat menerima nilai kosong untuk atribut ini, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Missing CPIX @version '. Saat menerima permintaan dengan versi yang tidak didukung, deskripsi kesalahan yang dikembalikan oleh penyedia kunci adalah 'CPIX @version Tidak Didukung '.

   `CPIX@version`nilai tidak dapat diganti oleh penyedia kunci.
+ Enkripsi harus menyertakan nilai untuk `ContentKey@commonEncryptionScheme` atribut untuk setiap kunci yang diminta. Saat menerima nilai kosong untuk atribut ini, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Missing ContentKey @ commonEncryptionScheme for `id` KID'.

  Dokumen CPIX unik tidak dapat mencampur beberapa nilai untuk atribut yang berbeda`ContentKey@commonEncryptionScheme`. Saat menerima kombinasi seperti itu, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Non compliant ContentKey @ commonEncryptionScheme combination'.

  Tidak semua `ContentKey@commonEncryptionScheme` nilai kompatibel dengan semua teknologi DRM. Saat menerima kombinasi seperti itu, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'ContentKey@ commonEncryptionScheme tidak kompatibel dengan DRMSystem `id`'.

   `ContentKey@commonEncryptionScheme`nilai tidak dapat diganti oleh penyedia kunci.
+ Saat menerima nilai yang berbeda untuk `DRMSystem@PSSH` dan `<pssh>` elemen `DRMSystem.ContentProtectionData` innerXML di badan respons CPIX, enkripsi akan berhenti dan menimbulkan kesalahan.

**API untuk CPIX**
+ Penyedia kunci harus menyertakan nilai untuk header respons `X-Speke-User-Agent` HTTP.
+ Sebuah enkripsi Speke-compliant bertindak sebagai klien dan mengirimkan operasi POST ke endpoint penyedia kunci.
+ Enkripsi harus menyertakan nilai untuk header permintaan `X-Speke-Version` HTTP, dengan versi SPEKE yang digunakan dengan permintaan, dirumuskan sebagai. MajorVersion MinorVersion, seperti '2.0' untuk SPEKE v2.0. Jika penyedia kunci tidak mendukung versi SPEKE yang digunakan oleh enkripsi untuk permintaan saat ini, penyedia kunci akan mengembalikan kesalahan dengan deskripsi 'Versi SPEKE Tidak Didukung' dan tidak mencoba memproses dokumen CPIX dengan upaya terbaik.

  Nilai `X-Speke-Version` header yang ditentukan oleh enkripsi tidak dapat dimodifikasi oleh penyedia kunci dalam menanggapi permintaan.
+ Saat menerima kesalahan di badan respons, enkripsi akan melempar kesalahan dan tidak mencoba lagi permintaan dengan versi SPEKE v1.0.

  Jika penyedia kunci tidak mengembalikan kesalahan tetapi gagal mengembalikan dokumen CPIX yang menyertakan informasi wajib, enkripsi harus berhenti dan menimbulkan kesalahan.

Tabel berikut merangkum pesan standar yang harus dikembalikan oleh penyedia kunci di badan pesan. Kode respons HTTP dalam kasus kesalahan harus berupa 4XX atau 5XX, tidak pernah 200. Kode kesalahan 422 dapat digunakan untuk semua kesalahan yang terkait dengan SPEKE/CPIX.


| Kasus kesalahan | Pesan kesalahan | 
| --- | --- | 
|  CPIX @contentId tidak ditentukan  |  CPIX @contentId tidak ada  | 
|  CPIX @version tidak ditentukan  |  CPIX @version tidak ada  | 
|  CPIX @version tidak didukung  |  CPIX @version tidak didukung  | 
|  ContentKey@ commonEncryptionScheme tidak didefinisikan  |  Hilang ContentKey @ commonEncryptionScheme untuk KID `id` (di mana `id` sama dengan nilai ContentKey @kid)  | 
|  Beberapa commonEncryptionScheme nilai ContentKey @ yang digunakan dalam satu dokumen CPIX  |  Kombinasi ContentKey @ commonEncryptionScheme yang tidak sesuai  | 
|  ContentKey@ commonEncryptionScheme tidak kompatibel dengan teknologi DRM  |  ContentKey@ commonEncryptionScheme tidak kompatibel dengan DRMSystem `id` (di mana `id` sama dengan nilai DRMSystem @systemId)  | 
|  X-Speke-Version nilai header bukan versi SPEKE yang didukung  |  Versi SPEKE yang tidak didukung  | 
|  Kontrak enkripsi cacat  |  Kontrak enkripsi cacat  | 
|  Kontrak enkripsi bertentangan dengan batasan tingkat keamanan DRM  |  Kontrak enkripsi CPIX yang diminta tidak didukung  | 
|  Kontrak enkripsi tidak termasuk AudioFilter elemen VideoFilter atau  |  Kontrak enkripsi CPIX tidak ada  | 

# SPEKE API v2 - Komponen muatan standar
<a name="standard-payload-components-v2"></a>

Melalui permintaan SPEKE tunggal, enkripsi dapat meminta beberapa kunci konten, bersama dengan pensinyalan manfest yang diperlukan untuk beberapa format kemasan, sesuai dengan kontrak enkripsi yang ditentukan untuk konten tertentu.

Untuk mencakup semua aspek ini, dokumen CPIX standar terdiri dari tiga bagian daftar wajib, ditambah bagian daftar opsional untuk rotasi kunci konten langsung.

**<cpix:CPIX><cpix: ContentKeyList > bagian dan elemen tingkat atas**  
Ini adalah bagian wajib, relevan untuk streaming Langsung dan VOD, menentukan kunci konten berbeda yang perlu digunakan oleh enkripsi. `<cpix:ContentKeyList>`Elemen dapat berisi satu atau beberapa elemen `<cpix:ContentKey>` anak, masing-masing menggambarkan kunci konten yang berbeda.

Sesuai spesifikasi CPIX, nilai `ContentKey@commonEncryptionScheme` atribut yang mungkin didefinisikan dalam enkripsi umum dalam spesifikasi file format file media dasar ISO (ISO/IEC 23001-7:2016):
+ 'cenc': Mode AES-CTR sampel lengkap dan enkripsi Subsample NAL video
+ 'cbc1': Contoh lengkap mode AES-CBC dan enkripsi Subsample NAL video
+ 'cens': Enkripsi pola NAL video parsi mode AES-CTR
+ 'cbcs': Enkripsi pola NAL video parsi mode AES-CBC

Contoh berikut menunjukkan dokumen CPIX dengan kunci konten tunggal yang tidak terenkripsi:

```
<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>
```

Secara default, kunci konten tidak dienkripsi, seperti pada contoh di bawah ini. Tetapi enkripsi kunci konten dapat diminta oleh enkripsi melalui penyertaan elemen<cpix : >. DeliveryDataList Silakan merujuk ke bagian Enkripsi Kunci Konten untuk lebih jelasnya.


| Elemen didukung oleh SPEKE | Atribut wajib | Atribut opsional | Elemen anak wajib | Elemen anak opsional | 
| --- | --- | --- | --- | --- | 
|  <cpix:CPIX>  |  ContentID, versi, xmlns:cpix, xmlns:pskc  |  nama, xmlns:enc  |  satu <cpix: ContentKeyList >, satu<cpix : Daftar>, satu <cpix: DRMSystem > ContentKeyUsageRuleList  |  satu <cpix: DeliveryDataList >, satu <cpix : >ContentKeyPeriodList  | 
|  <cpix : >ContentKeyList  |  -  |  id  |  setidaknya satu <cpix : >ContentKey  |  -  | 
|  <cpix : >ContentKey  |  anak, commonEncryptionScheme, Data  |  id, Algoritma, ExplicitiV  |  satu <pskc:Secret>  |  -  | 
|  <pskc:Secret>  |  PlainValue atau EncryptedValue  |  ValueMac  |  -  |  <enc: EncryptionMethod >, <enc : >CipherData  | 

**<cpix : Daftar>bagian DRMSystem**  
Ini adalah bagian wajib, relevan untuk streaming Langsung dan VOD, mendefinisikan berbagai sistem DRM yang perlu dimanfaatkan bersama dengan kunci konten.

Contoh berikut menunjukkan daftar sistem DRM dengan spesifikasi sistem PlayReady DRM tunggal:

```
<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>
```

Untuk daftar lengkap sistem DRMIDs, silakan merujuk ke [bagian Perlindungan Konten](https://dashif.org/identifiers/content_protection/) dari repositori DASH-IF Identifiers.


| Elemen didukung oleh SPEKE | Atribut wajib | Atribut opsional | Elemen anak wajib | Elemen anak opsional | 
| --- | --- | --- | --- | --- | 
|  <cpix : Daftar>DRMSystem  |  -  |  id  |  setidaknya satu <cpix : >DRMSystem  |  -  | 
|  <cpix : >DRMSystem  |  anak, SystemID  |  id, nama, PSSH  |  -  |  ContentProtectionData, SmoothStreamingProtectionHeaderData, dua <cpix: HLSSignaling Data> elemen dengan nilai atribut daftar putar yang berbeda  | 

 `DRMSystem@PSSH`wajib jika enkapsulasi ISO-BMFF diterapkan pada segmen media. `DRMSystem.ContentProtectionData``<pssh>`Elemen innerXML dimanfaatkan oleh enkripsi hanya untuk tujuan pensinyalan manifes.

Jika `DRMSystem@PSSH` hadir dan `DRMSystem.ContentProtectionData` berisi `<pssh>` elemen innerXML, kedua nilai harus identik.

Jika `DRMSystem` pensinyalan harus dilakukan dalam manifes HLS, `<cpix:HLSSignalingData playlist="master">` elemen a `<cpix:HLSSignalingData playlist="media">` dan a harus dimasukkan dalam permintaan dan respons CPIX.

**<cpix : >bagian ContentKeyPeriodList**  
Ini adalah bagian opsional, hanya relevan untuk Streaming langsung, yang menentukan periode kripto yang diterapkan pada konten.

`<cpix:ContentKeyPeriodList>`Elemen tersebut dapat berisi satu atau beberapa elemen `<cpix:ContentKeyPeriod>` anak, masing-masing menggambarkan periode kripto yang berbeda dalam timeline langsung. Menggunakan UUIDs sebagai bagian dari nilai atribut id adalah pendekatan yang umum digunakan.

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


| Elemen didukung oleh SPEKE | Atribut wajib | Atribut opsional | Elemen anak wajib | Elemen anak opsional | 
| --- | --- | --- | --- | --- | 
|  <cpix : >ContentKeyPeriodList  |  -  |  id  |  setidaknya satu <cpix : >ContentKeyPeriod  |  -  | 
|  <cpix : >ContentKeyPeriod  |  id, indeks  |  -  |  -  |  -  | 

Jika periode kripto digunakan, kunci enkripsi juga harus dilampirkan ke salah satu periode kripto dalam dokumen CPIX, seperti yang ditunjukkan pada bagian di bawah ini.

**<cpix : >bagian ContentKeyUsageRuleList**  
Ini adalah bagian wajib, relevan untuk streaming Langsung dan VOD, yang menentukan bagaimana kunci konten yang berbeda akan melindungi trek di dalam streamset dan di seluruh periode kripto.

Elemen <cpix: ContentKeyUsageRuleList > dapat berisi satu atau beberapa <cpix: ContentKeyUsageRule > elemen anak, masing-masing menggambarkan trek yang diterapkan kunci konten tertentu oleh enkripsi, berpotensi selama periode kripto tertentu. Setidaknya satu <cpix: AudioFilter > atau satu <cpix: VideoFilter > elemen diperlukan untuk hadir dalam elemen<cpix : >. ContentKeyUsageRule

Contoh berikut menunjukkan daftar sederhana dengan hanya satu aturan yang menerapkan satu kunci konten ke semua trek audio dan video selama periode kripto tertentu.

```
<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>
```


| Elemen didukung oleh SPEKE | Atribut wajib | Atribut opsional | Elemen anak wajib | Elemen anak opsional | 
| --- | --- | --- | --- | --- | 
|  <cpix : >ContentKeyUsageRuleList  |  -  |  id  |  setidaknya satu <cpix : >ContentKeyUsageRule  |  -  | 
|  <cpix : >ContentKeyUsageRule  |  anak, intendedTrackType  |  -  |  setidaknya satu <cpix: AudioFilter > atau satu <cpix : >(\$1) VideoFilter  |  <cpix : >KeyPeriodFilter  | 
|  <cpix : >KeyPeriodFilter  |  periodID  |  -  |  -  |  -  | 
|  <cpix : >AudioFilter  |  -  |  MinChannels, MaxChannels  |  -  |  -  | 
|  <cpix : >VideoFilter  |  -  |  minPixels, MaxPixels, hdr, minFP, MaxFP  |  -  |  -  | 

 *(\$1) Untuk penjelasan rinci tentang penggunaan satu atau beberapa kunci konten untuk melindungi satu atau beberapa trek dalam streamset, silakan merujuk ke bagian dokumentasi [Kontrak Enkripsi](encryption-contract-v2.md). *\$1 

# SPEKE API v2 - Kontrak enkripsi
<a name="encryption-contract-v2"></a>

Kontrak enkripsi menentukan kunci konten mana yang melindungi trek mana di dalam streamset tertentu, berdasarkan karakteristik trek.

Menggunakan beberapa tombol konten untuk trek yang berbeda dalam streamset, meskipun merupakan praktik terbaik industri yang direkomendasikan, tidak wajib, tetapi direkomendasikan - setidaknya dua tombol konten yang berbeda, satu untuk trek audio dan satu untuk trek video. Menggunakan kunci konten tunggal untuk mengenkripsi beberapa trek dimungkinkan tetapi perlu secara eksplisit ditandai dalam dokumen CPIX yang dikirim oleh enkripsi ke penyedia kunci. Secara umum, enkripsi selalu menjelaskan dengan tepat berapa banyak kunci konten yang diperlukan dan bagaimana mereka dimanfaatkan untuk mengenkripsi berbagai trek media.

**Prinsip**  
Kontrak enkripsi terletak di `<cpix:ContentKeyUsageRuleList>` bagian dokumen CPIX. Pada bagian ini, setiap kunci konten yang didefinisikan dalam `<cpix:ContentKeyList>` bagian sesuai dengan `<cpix:ContentKeyUsageRule>` elemen tertentu, yang harus mencakup:
+ `ContentKeyUsageRule@intendedTrackType`atribut yang dapat mereferensikan satu atau lebih sub-komponen, dipisahkan oleh tanda '\$1' jika beberapa sub-komponen digunakan. Nilai `ContentKeyUsageRule@intendedTrackType` harus unik dalam kontrak enkripsi, dan tidak dapat digunakan dalam beberapa `ContentKeyUsageRule` elemen.
+ satu atau lebih `<cpix:AudioFilter>` atau elemen `<cpix:VideoFilter>` anak, tergantung pada nilai `ContentKeyUsageRule@intendedTrackType` atribut.

Aturan yang mengatur hubungan ini adalah sebagai berikut:
+ Ketika semua trek audio dan video streamset perlu dilindungi dengan kunci konten yang unik, string `'ALL'` harus digunakan sebagai nilai `ContentKeyUsageRule@intendedTrackType` atribut. Contoh 1 menunjukkan kasus penggunaan seperti itu. Dalam situasi ini, elemen a `<cpix:AudioFilter />` dan `<cpix:VideoFilter />` anak tanpa atribut apa pun harus disertakan. Kombinasi `<cpix:AudioFilter>` and/or `<cpix:VideoFilter>` elemen lainnya tidak valid dalam konteks khusus ini.
+ Untuk semua kasus penggunaan lainnya, nilai `ContentKeyUsageRule@intendedTrackType` atribut dapat didefinisikan secara bebas, dan jumlah `<cpix:AudioFilter />` dan elemen `<cpix:VideoFilter />` anak harus sesuai dengan jumlah sub-komponen yang dikumpulkan melalui tanda '\$1'. Contoh 2/3/4/5/6/7/9/10 menggambarkan persyaratan ini, ketika satu sub-komponen hadir dalam nilai atribut. `ContentKeyUsageRule@intendedTrackType` Contoh 8 mengilustrasikannya ketika beberapa sub-komponen `ContentKeyUsageRule@intendedTrackType="SD+HD"` digunakan: dijelaskan oleh dua elemen `<cpix:VideoFilter>` anak yang berbeda dengan nilai atribut yang berbeda, dan `ContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD"` dijelaskan oleh tiga elemen `<cpix:VideoFilter>` anak yang berbeda dengan nilai atribut yang berbeda.

**Penyaring**  
CPIX mendefinisikan beberapa elemen penyaringan dan atribut, tetapi SPEKE hanya mendukung sebagian dari itu. Tabel berikut merangkum perbedaan-perbedaan ini:


| Jenis filter CPIX | Dukungan SPEKE secara keseluruhan | Filter atribut yang didukung oleh SPEKE | Atribut filter tidak didukung oleh SPEKE | 
| --- | --- | --- | --- | 
|  <cpix : >VideoFilter  |  Ya  |  minPixels, MaxPixels, hdr, minFP, MaxFPS (atribut opsional)  |  wcg  | 
|  <cpix : >AudioFilter  |  Ya  |  minChannels, maxChannels (atribut opsional)  |  | 
|  <cpix : >KeyPeriodFilter  |  Ya  |  periodID (atribut wajib)  |  | 
|  <cpix : >BitrateFilter  |  Tidak  |  N/A  |  N/A  | 
|  <cpix : >LabelFilter  |  Tidak  |  N/A  |  N/A  | 

Sesuai spesifikasi CPIX untuk VideoFilter, [minPixels, MaxPixels] adalah rentang semua inklusif di kedua dimensi, sedangkan (minFP, MaxFP] hanya inklusif untuk dimensi MaxFPS. Untuk AudioFilter, [minChannels, maxChannels] adalah rentang inklusif di kedua dimensi.

**Situasi bermasalah**  
Ada situasi di mana informasi yang diberikan dalam kontrak enkripsi mungkin sebagian, ambigu atau salah. Dalam kasus ini, penting bahwa enkripsi dan penyedia kunci berperilaku dengan tepat dan menjamin perlindungan konten yang tepat. Tabel berikut menyajikan perilaku yang direkomendasikan dalam situasi ini:


| Dalam situasi ini | Enkripsi should/shall ... | Penyedia kunci should/shall ... | 
| --- | --- | --- | 
|  Tidak ada aturan yang berlaku untuk satu atau beberapa trek di streamset (lihat contoh 3 di bawah)  |  Enkripsi harus melihat konfigurasinya (di luar muatan CPIX) dan memverifikasi bahwa trek yang bersangkutan tidak memerlukan enkripsi. Jika bukan harapan, enkripsi harus melempar kesalahan dan menghentikan pemrosesan.  |   *Tidak relevan: penyedia kunci tidak memiliki pengetahuan tentang struktur streamset.*   | 
|  Beberapa aturan tumpang tindih dan menyarankan beberapa kunci konten untuk mengenkripsi trek tertentu  |  Enkripsi harus menerapkan yang terakhir ContentKeyUsageRule berhasil dievaluasi dalam urutan dokumen.  |   *Tidak relevan: penyedia kunci tidak memiliki pengetahuan tentang struktur streamset.*   | 
|  Kontrak enkripsi berubah dalam satu siklus SPEKE request/response   |  Enkripsi harus mengajukan pengecualian dan menghentikan pemrosesan, karena penyedia kunci tidak bertanggung jawab untuk menentukan kontrak enkripsi.  |  Untuk mencegah situasi ini terjadi sejak awal, penyedia kunci tidak boleh memodifikasi kontrak enkripsi yang diterima dalam muatan CPIX dari permintaan SPEKE.  | 
|  Kontrak enkripsi cacat: pengecualian kendala intendedTrackType/Filters kardinalitas, filter atau atribut yang tidak didukung  |  Enkripsi harus mengajukan pengecualian, menghentikan pemrosesan dan tidak mengirim permintaan SPEKE ke penyedia kunci, karena kemungkinan besar akan mengakibatkan perlindungan konten yang salah atau meninggalkan beberapa trek yang tidak terlindungi.  |  Penyedia kunci harus mengajukan pengecualian dan mengembalikan kesalahan 'Kontrak enkripsi yang salah bentuk'.  | 
|  Kontrak enkripsi yang terbentuk dengan baik, tetapi melanggar batasan tingkat keamanan DRM: sebagai contoh, satu kunci konten diminta untuk melindungi trek audio dan trek video UHD  |  Jika enkripsi memiliki pengetahuan tentang kendala tingkat keamanan DRM, itu harus menimbulkan pengecualian, menghentikan pemrosesan dan tidak mengirim permintaan SPEKE ke penyedia kunci, karena kemungkinan besar akan menghasilkan perlindungan konten yang salah.  |  Penyedia kunci harus mengajukan pengecualian dan mengembalikan kesalahan 'Kontrak enkripsi CPIX yang diminta tidak didukung'.  | 
|  Kontrak enkripsi tidak ada  |  Enkripsi tidak akan mengirim dokumen CPIX yang tidak mengandung elemen atau apa pun. VideoFilter AudioFilter   |  Penyedia kunci akan mengajukan pengecualian dan mengembalikan kesalahan 'Kontrak enkripsi CPIX yang hilang'.  | 

**Contoh Kontrak Enkripsi**  
 *Contoh 1: satu kunci konten untuk semua trek audio dan video* 

```
<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>
```

 *Contoh 2: satu kunci konten untuk semua trek video, satu kunci konten untuk semua trek audio* 

```
<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>
```

 *Contoh 3: satu kunci konten untuk semua trek video, trek audio yang tidak terenkripsi* 

```
<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>
```

 *Contoh 4: beberapa tombol konten untuk trek video yang berbeda (SD/HD), satu kunci konten untuk semua trek audio* 

```
<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>
```

 *Contoh 5: beberapa tombol konten untuk trek video yang berbeda (SD/HD/UHD), satu kunci konten untuk semua trek audio* 

```
<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>
```

 *Contoh 6: beberapa tombol konten untuk trek video yang berbeda (SD/HD/UHD1/UHD2), satu kunci konten untuk semua trek audio* 

```
<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>
```

 *Contoh 7: beberapa tombol konten untuk trek video yang berbeda (SD/HD1/HD2/UHD1/UHD2), satu kunci konten untuk semua trek audio* 

```
<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>
```

 *Contoh 8: beberapa tombol konten untuk trek video yang berbeda (berdasarkan beberapa jenis atribut), satu kunci konten untuk semua trek audio* 

```
<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>
```

 *Contoh 9: satu tombol konten untuk semua trek video, beberapa tombol konten untuk trek audio stereo dan multichannel* 

```
<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>
```

 *Contoh 10: satu tombol konten untuk semua trek video, beberapa tombol konten untuk stereo dan dua jenis trek audio multichannel* 

```
<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 - Contoh panggilan metode alur kerja langsung
<a name="live-workflow-methods-v2"></a>

 *Minta Contoh Sintaks* 

URL berikut adalah contoh dan tidak menunjukkan format tetap:

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

 *Permintaan Badan* 

Dokumen CPIX.

 *Permintaan Header* 


| Nama | Tipe | Terjadi | Deskripsi | 
| --- | --- | --- | --- | 
|   `AWS Authorization`   |  String  |  1.. 1  |  Lihat [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Security-Token`   |  String  |  1.. 1  |  Lihat [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Date`   |  String  |  1.. 1  |  Lihat [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `Content-Type`   |  String  |  1.. 1  |  aplikasi/xml  | 
|   `X-Speke-Version`   |  String  |  1.. 1  |  Versi SPEKE API digunakan dengan permintaan, dirumuskan sebagai. MajorVersion MinorVersion, seperti '2.0' untuk SPEKE v2.0  | 

 *Header Respons* 


| Nama | Tipe | Terjadi | Deskripsi | 
| --- | --- | --- | --- | 
|   `X-Speke-User-Agent`   |  String  |  1.. 1  |  String yang mengidentifikasi penyedia kunci  | 
|   `Content-Type`   |  String  |  1.. 1  |  aplikasi/xml  | 
|   `X-Speke-Version`   |  String  |  1.. 1  |  Versi SPEKE API digunakan dengan permintaan, dirumuskan sebagai. MajorVersion MinorVersion, seperti '2.0' untuk SPEKE v2.0  | 

 *Permintaan Respon* 


| KODE HTTP | Nama Muatan | Terjadi | Deskripsi | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1.. 1  |  Respons muatan DASH-CPIX  | 
|   `4XX (Client error)`   |  Pesan kesalahan klien  |  1.. 1  |  Deskripsi kesalahan klien  | 
|   `5XX (Server error)`   |  Pesan kesalahan server  |  1.. 1  |  Deskripsi kesalahan server  | 

**catatan**  
Contoh di bagian ini tidak termasuk enkripsi kunci konten. Untuk informasi tentang cara menambahkan enkripsi kunci konten, lihat [Enkripsi kunci konten](content-key-encryption-v2.md).

 *Contoh Langsung Minta Payload dengan Kunci di Clear* 

Contoh berikut menunjukkan payload permintaan langsung khas dari enkripsi ke penyedia kunci DRM, dengan satu kunci konten untuk semua trek video dan satu kunci konten untuk semua trek audio:

```
<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>
```

 *Muatan Respons Contoh Langsung dengan Kunci di Clear* 

Contoh berikut menunjukkan muatan respons tipikal dari penyedia kunci DRM (nilai yang dikembalikan telah dipersingkat dengan [...] untuk keterbacaan):

```
<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 - contoh panggilan metode alur kerja VOD
<a name="vod-workflow-method-v2"></a>

 *Minta Contoh Sintaks* 

URL berikut adalah contoh dan tidak menunjukkan format tetap.

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

 *Permintaan Badan* 

Dokumen CPIX.

 *Permintaan Header* 


| Nama | Tipe | Terjadi | Deskripsi | 
| --- | --- | --- | --- | 
|   `AWS Authorization`   |  String  |  1.. 1  |  Lihat [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Security-Token`   |  String  |  1.. 1  |  Lihat [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Date`   |  String  |  1.. 1  |  Lihat [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `Content-Type`   |  String  |  1.. 1  |  aplikasi/xml  | 
|   `X-Speke-Version`   |  String  |  1.. 1  |  Versi SPEKE API digunakan dengan permintaan, dirumuskan sebagai. MajorVersion MinorVersion, seperti '2.0' untuk SPEKE v2.0  | 

 *Header Respons* 


| Nama | Tipe | Terjadi | Deskripsi | 
| --- | --- | --- | --- | 
|   `X-Speke-User-Agent`   |  String  |  1.. 1  |  String yang mengidentifikasi penyedia kunci  | 
|   `Content-Type`   |  String  |  1.. 1  |  aplikasi/xml  | 
|   `X-Speke-Version`   |  String  |  1.. 1  |  Versi SPEKE API digunakan dengan permintaan, dirumuskan sebagai. MajorVersion MinorVersion, seperti '2.0' untuk SPEKE v2.0  | 

 *Permintaan Respon* 


| KODE HTTP | Nama Muatan | Terjadi | Deskripsi | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1.. 1  |  Respons muatan DASH-CPIX  | 
|   `4XX (Client error)`   |  Pesan kesalahan klien  |  1.. 1  |  Deskripsi kesalahan klien  | 
|   `5XX (Server error)`   |  Pesan kesalahan server  |  1.. 1  |  Deskripsi kesalahan server  | 

**catatan**  
Contoh di bagian ini tidak termasuk enkripsi kunci konten. Untuk informasi tentang cara menambahkan enkripsi kunci konten, lihat [Enkripsi kunci konten](content-key-encryption-v2.md).

 *Contoh VOD Minta Payload dengan Kunci di Clear* 

Contoh berikut menunjukkan muatan permintaan VOD tipikal dari enkripsi ke penyedia kunci DRM, dengan satu kunci konten untuk semua trek video dan satu kunci konten untuk semua trek audio:

```
<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 Contoh Response Payload dengan Keys di Clear* 

Contoh berikut menunjukkan muatan respons tipikal dari penyedia kunci DRM (nilai yang dikembalikan telah dipersingkat dengan [...] untuk keterbacaan):

```
<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 - Enkripsi kunci konten
<a name="content-key-encryption-v2"></a>

Anda dapat menambahkan enkripsi kunci konten secara opsional ke implementasi SPEKE Anda. Enkripsi kunci konten menjamin end-to-end perlindungan penuh dengan mengenkripsi kunci konten untuk transit, selain mengenkripsi konten itu sendiri. Jika Anda tidak menerapkan ini untuk penyedia kunci Anda, Anda mengandalkan enkripsi lapisan transport ditambah otentikasi yang kuat untuk keamanan.

Untuk menggunakan enkripsi kunci konten untuk enkripsi yang berjalan di AWS Cloud, pelanggan mengimpor sertifikat ke AWS Certificate Manager dan kemudian menggunakan sertifikat yang dihasilkan ARNs untuk aktivitas enkripsi mereka. Enkripsi menggunakan sertifikat ARNs dan layanan ACM untuk menyediakan kunci konten terenkripsi ke penyedia kunci DRM.

**Pembatasan**  
SPEKE mendukung enkripsi kunci konten sebagaimana ditentukan dalam spesifikasi DASH-IF CPIX dengan batasan berikut:
+ SPEKE tidak mendukung verifikasi tanda tangan digital (XMLDSIG) untuk muatan permintaan atau respons.
+ SPEKE membutuhkan 2048 sertifikat berbasis RSA.

Pembatasan ini juga tercantum dalam [Kustomisasi dan kendala](speke-constraints-v2.md) untuk spesifikasi DASH-IF.

**Menerapkan enkripsi kunci konten**  
Untuk menyediakan enkripsi kunci konten, sertakan yang berikut ini dalam implementasi penyedia kunci DRM Anda:
+ Menangani elemen `<cpix:DeliveryDataList>` dalam permintaan dan respon payloads.
+ Berikan nilai terenkripsi dalam `<cpix:ContentKeyList>` muatan respons.

Untuk informasi lebih lanjut tentang elemen-elemen ini, lihat spesifikasi [DASH-IF CPIX 2.3](https://dashif.org/docs/CPIX2.3/Cpix.html).

 *Contoh Elemen Enkripsi Kunci Konten ` <cpix:DeliveryDataList> ` di Muatan Permintaan* 

```
<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>
```

 *Contoh Elemen Enkripsi Kunci Konten ` <cpix:DeliveryDataList> ` di Payload Respons* 

```
<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>
```

 *Contoh Elemen Enkripsi Kunci Konten ` <cpix:ContentKeyList> ` di Payload Respons* 

Contoh berikut menunjukkan penanganan kunci konten terenkripsi dalam `<cpix:ContentKeyList>` elemen payload respons. Ini menggunakan `<pskc:EncryptedValue>` elemen:

```
<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>
```

Sebagai perbandingan, contoh berikut menunjukkan muatan respons serupa dengan kunci konten yang dikirimkan tanpa enkripsi, sebagai kunci yang jelas. Ini menggunakan `<pskc:PlainValue>` elemen:

```
<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 - Mengganti pengenal kunci
<a name="kid-override-v2"></a>

Enkripsi membuat pengenal kunci baru (KID) setiap kali memutar kunci. Ini meneruskan KID ke penyedia kunci DRM dalam permintaannya. Hampir selalu, penyedia kunci merespons menggunakan KID yang sama, tetapi dapat memberikan nilai yang berbeda untuk KID dalam tanggapannya.

Berikut ini adalah contoh permintaan dengan 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>
```

Tanggapan berikut mengesampingkan KID ke: `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>
```