

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Il s'agit de l'API REST pour le Secure Packager and Encoder Key Exchange (SPEKE) v2. Utilisez cette spécification pour fournir une protection des droits d'auteur DRM aux clients qui utilisent le chiffrement. Pour être compatible avec Speke, votre fournisseur de clés DRM doit exposer l'API REST décrite dans cette spécification. Le chiffreur effectue des appels d'API vers votre fournisseur de clés.

**Note**  
Les exemples de code présentés dans cette spécification sont fournis à des fins d'illustration uniquement. Vous ne pouvez pas exécuter les exemples, car ils ne font pas partie d'une implémentation SPEKE complète.

SPEKE utilise la définition de structure de données du format DASH Industry Forum Content Protection Information Exchange Format (DASH-IF-CPIX) pour l'échange de clés, avec certaines restrictions. DASH-IF-CPIXdéfinit un schéma pour fournir un échange multiDRM extensible entre la plate-forme DRM et le crypteur. Ainsi, le chiffrement de contenu est possible pour tous les formats d'emballage en vitesse de transmission adaptative au moment de la compression et de l'emballage du contenu. Les formats d'emballage en vitesse de transmission adaptative sont les suivants : HLS, DASH et MSS.

À partir de sa version 2.0, SPEKE est aligné sur une version CPIX spécifique :

Du côté SPEKE, cela est appliqué par l'utilisation de l'en-tête `X-Speke-Version` HTTP, et du côté CPIX par l'utilisation de l'attribut. `CPIX@version` L'absence de ces éléments dans les demandes est typique des anciens flux de travail SPEKE v1. Dans les flux de travail SPEKE v2, le fournisseur principal est censé traiter les documents CPIX uniquement s'il prend en charge les deux paramètres de version.

Pour des informations détaillées sur le format d'échange, consultez la spécification [CPIX 2.3](https://dashif.org/docs/CPIX2.3/Cpix.html) du DASH Industry Forum.

Dans l'ensemble, SPEKE v2.0 apporte les évolutions suivantes par rapport à SPEKE v1.0 :
+ Toutes les balises de l'espace de noms XML SPEKE sont déconseillées au profit de balises équivalentes dans l'espace de noms XML CPIX
+  `SPEKE:ProtectionHeader`est obsolète et remplacé par `CPIX:DRMSystem.SmoothStreamingProtectionHeaderData` 
+  `CPIX:URIExtXKey`, `SPEKE:KeyFormat` et `SPEKE:KeyFormatVersions` sont obsolètes et remplacés par `CPIX:DRMSystem.HLSSignalingData` 
+  `CPIX@id`est remplacé par `CPIX@contentId` 
+ Nouveaux attributs CPIX obligatoires :, `CPIX@version` `ContentKey@commonEncryptionScheme` 
+ Nouvel élément CPIX optionnel : `DRMSystem.ContentProtectionData` 
+ Support pour plusieurs clés de contenu
+ Mécanisme de versionnement croisé entre SPEKE et CPIX
+ Évolution des en-têtes HTTP : nouvel `X-Speke-Version` en-tête, `Speke-User-Agent` en-tête renommé en `X-Speke-User-Agent` 
+ Obsolète de l'API Heartbeat

Comme la spécification SPEKE v1.0 reste inchangée, il n'est pas nécessaire de modifier les implémentations existantes pour continuer à prendre en charge les flux de travail SPEKE v1.0.

**Topics**
+ [SPEKE API v2 - Personnalisations et contraintes liées à la spécification DASH-IF](speke-constraints-v2.md)
+ [SPEKE API v2 - Composants de charge utile standard](standard-payload-components-v2.md)
+ [SPEKE API v2 - Contrat de chiffrement](encryption-contract-v2.md)
+ [SPEKE API v2 - Exemples d'appels de méthodes de flux de travail en direct](live-workflow-methods-v2.md)
+ [SPEKE API v2 - Exemples d'appels à une méthode de flux de travail VOD](vod-workflow-method-v2.md)
+ [SPEKE API v2 - Chiffrement des clés de contenu](content-key-encryption-v2.md)
+ [SPEKE API v2 - Remplacer l'identifiant de clé](kid-override-v2.md)

# SPEKE API v2 - Personnalisations et contraintes liées à la spécification DASH-IF
<a name="speke-constraints-v2"></a>

La [spécification CPIX 2.3](https://dashif.org/docs/CPIX2.3/Cpix.html) du DASH Industry Forum prend en charge un certain nombre de cas d'utilisation et de topologies. La spécification SPEKE API v2.0 définit à la fois un profil CPIX et une API pour CPIX. Afin d'atteindre ces deux objectifs, il adhère à la spécification CPIX avec les personnalisations et contraintes suivantes :

**Profil CPIX**
+ SPEKE suit le flux de travail d'Encryptor Consumer.
+ Pour les clés de contenu chiffrées, SPEKE applique les restrictions suivantes :
  + SPEKE ne prend pas en charge la vérification de signature numérique (XMLDSIG) pour les charges utiles de demande ou de réponse.
  + SPEKE nécessite 2048 certificats basés sur la norme RSA.
+ SPEKE n'exploite qu'un sous-ensemble des fonctionnalités du CPIX :
  + SPEKE omet cette fonctionnalité. `UpdateHistoryItemList` Si la liste est présente dans la réponse, SPEKE l'ignore.
  + SPEKE omet la fonctionnalité root/leaf clé. Si l'`ContentKey@dependsOnKey`attribut est présent dans la réponse, SPEKE l'ignore.
  + SPEKE omet l'`BitrateFilter`élément et l'`VideoFilter@wcg`attribut. Si ces éléments ou attributs sont présents dans la charge utile du CPIX, SPEKE les ignore.
+ Seuls les éléments ou attributs référencés comme « pris en charge » sur la page des [composants de charge utile standard ou sur la page](standard-payload-components-v2.md) du [contrat de chiffrement](encryption-contract-v2.md) peuvent être utilisés dans les documents CPIX échangés avec SPEKE v2.
+ Lorsqu'ils sont inclus dans une demande CPIX par le crypteur, tous les éléments et attributs doivent porter une valeur valide dans la réponse CPIX du fournisseur de clés. Dans le cas contraire, le crypteur doit s'arrêter et générer une erreur.
+ SPEKE permet la rotation des touches avec des `KeyPeriodFilter` éléments. SPEKE utilise uniquement le `ContentKeyPeriod@index` pour suivre la période clé.
+ Pour la signalisation HLS, plusieurs `DRMSystem.HLSSignalingData` éléments doivent être utilisés : un avec une valeur d'`DRMSystem.HLSSignalingData@playlist`attribut « media » et un autre avec une valeur d'`DRMSystem.HLSSignalingData@playlist`attribut « master ».
+ Lors de la demande de clés, le chiffreur peut utiliser l'attribut facultatif `@explicitIV` sur l'élément `ContentKey`. Le fournisseur de clés peut répondre avec un vecteur d'initialisation à l'aide de `@explicitIV`, même si l'attribut n'est pas inclus dans la requête.
+ Le chiffreur crée l'identifiant de clé (`KID`), qui reste le même quels que soient l'ID de contenu et la durée d'utilisation des clés. Le fournisseur de clés inclut `KID` dans sa réponse au document de demande.
+ Le crypteur doit inclure une valeur pour l'`CPIX@contentId`attribut. Lorsqu'il reçoit une valeur vide pour cet attribut, le fournisseur de clés renvoie une erreur avec la description « Missing CPIX @contentId ». `CPIX@contentId`la valeur ne peut pas être remplacée par le fournisseur de clés.

   `CPIX@id`la valeur, si elle n'est pas nulle, doit être ignorée par le fournisseur de clés.
+ Le crypteur doit inclure une valeur pour l'`CPIX@version`attribut. Lorsqu'il reçoit une valeur vide pour cet attribut, le fournisseur de clés renvoie une erreur avec la description « Missing CPIX @version ». Lors de la réception d'une demande avec une version non prise en charge, la description de l'erreur renvoyée par le fournisseur de clés doit être « Unsupported CPIX @version ».

   `CPIX@version`la valeur ne peut pas être remplacée par le fournisseur de clés.
+ Le crypteur doit inclure une valeur pour l'`ContentKey@commonEncryptionScheme`attribut pour chaque clé demandée. Lorsqu'il reçoit une valeur vide pour cet attribut, le fournisseur de clés renvoie une erreur avec la description « Missing ContentKey @ commonEncryptionScheme for KID `id` ».

  Un document CPIX unique ne peut pas mélanger plusieurs valeurs pour différents attributs. `ContentKey@commonEncryptionScheme` À la réception d'une telle combinaison, le fournisseur de clés renvoie une erreur avec la description « commonEncryptionScheme  Combinaison ContentKey @ non conforme ».

  Les `ContentKey@commonEncryptionScheme` valeurs ne sont pas toutes compatibles avec toutes les technologies DRM. À la réception d'une telle combinaison, le fournisseur de clés doit renvoyer une erreur avec la description « ContentKey @ commonEncryptionScheme non compatible avec DRMSystem `id` ».

   `ContentKey@commonEncryptionScheme`la valeur ne peut pas être remplacée par le fournisseur de clés.
+ Lors de la réception de valeurs différentes pour `DRMSystem@PSSH` `<pssh>` un élément `DRMSystem.ContentProtectionData` innerXML dans le corps de réponse CPIX, le crypteur doit s'arrêter et générer une erreur.

**API pour CPIX**
+ Le fournisseur de clés doit inclure une valeur pour l'en-tête de réponse `X-Speke-User-Agent` HTTP.
+ Un crypteur compatible Speke agit en tant que client et envoie les opérations POST au point de terminaison du fournisseur de clés.
+ Le crypteur doit inclure une valeur pour l'en-tête de la requête `X-Speke-Version` HTTP, avec la version SPEKE utilisée avec la demande, formulée comme suit. MajorVersion MinorVersion, comme '2.0' pour SPEKE v2.0. Si le fournisseur de clés ne prend pas en charge la version SPEKE utilisée par le crypteur pour la demande en cours, le fournisseur de clés doit renvoyer une erreur avec la description « Version SPEKE non prise en charge » et ne pas essayer de traiter le document CPIX de son mieux.

  La valeur `X-Speke-Version` d'en-tête définie par le crypteur ne peut pas être modifiée par le fournisseur de clés en réponse à la demande.
+ Lorsqu'il reçoit des erreurs dans le corps de la réponse, le crypteur doit générer une erreur et ne pas réessayer la demande avec un versionnage SPEKE v1.0.

  Si le fournisseur de clés ne renvoie pas d'erreur mais ne renvoie pas de document CPIX contenant les informations obligatoires, le crypteur doit s'arrêter et générer une erreur.

Le tableau suivant récapitule les messages standard qui doivent être renvoyés par le fournisseur de clés dans le corps du message. Le code de réponse HTTP en cas d'erreur doit être un 4XX ou un 5XX, jamais un 200. Le code d'erreur 422 peut être utilisé pour toutes les erreurs liées à SPEKE/CPIX.


| Cas d'erreur | Message d’erreur | 
| --- | --- | 
|  CPIX @contentId n'est pas défini  |  CPIX @contentId manquant  | 
|  CPIX @version n'est pas défini  |  CPIX @version manquant  | 
|  CPIX @version n'est pas pris en charge  |  CPIX @version non pris en charge  | 
|  ContentKey@ n'commonEncryptionScheme est pas défini  |   ContentKey@ manquant commonEncryptionScheme pour KID `id` (où `id` est égal à la valeur ContentKey @kid)  | 
|  Plusieurs commonEncryptionScheme valeurs ContentKey @ utilisées dans un seul document CPIX  |  commonEncryptionScheme Combinaison ContentKey @ non conforme  | 
|  ContentKey@ n'commonEncryptionScheme est pas compatible avec la technologie DRM  |  ContentKey@ commonEncryptionScheme n'est pas compatible avec DRMSystem `id` (où `id` est égal à la valeur DRMSystem @systemId)  | 
|  X-Speke-Version la valeur d'en-tête n'est pas une version de SPEKE prise en charge  |  Version SPEKE non prise en charge  | 
|  Le contrat de cryptage est mal formé  |  Contrat de chiffrement mal formé  | 
|  Le contrat de chiffrement contredit les contraintes liées aux niveaux de sécurité DRM  |  Le contrat de chiffrement CPIX demandé n'est pas pris en charge  | 
|  Le contrat de chiffrement n'inclut VideoFilter aucun AudioFilter élément  |  Contrat de cryptage CPIX manquant  | 

# SPEKE API v2 - Composants de charge utile standard
<a name="standard-payload-components-v2"></a>

Par le biais d'une seule demande SPEKE, le crypteur peut demander plusieurs clés de contenu, ainsi que la signalisation manifeste nécessaire pour plusieurs formats d'emballage, conformément au contrat de chiffrement défini pour un contenu donné.

Afin de couvrir tous ces aspects, un document CPIX standard est composé de trois sections de liste obligatoires, plus une section de liste facultative pour la rotation des clés de contenu en direct.

**<cpix:CPIX><cpix : ContentKeyList > section et élément de niveau supérieur**  
Il s'agit d'une section obligatoire, pertinente à la fois pour le streaming en direct et pour le streaming VOD, qui définit les différentes clés de contenu qui doivent être utilisées par le crypteur. L'`<cpix:ContentKeyList>`élément peut contenir un ou plusieurs éléments `<cpix:ContentKey>` enfants, chacun d'eux décrivant une clé de contenu distincte.

Conformément à la spécification CPIX, les valeurs possibles de l'`ContentKey@commonEncryptionScheme`attribut sont définies dans la spécification du chiffrement commun dans les fichiers au format de fichier multimédia de base ISO (ISO/IEC 23001-7:2016) :
+ 'cenc' : échantillon complet en mode AES-CTR et chiffrement du sous-échantillon vidéo NAL
+ 'cbc1' : échantillonnage complet en mode AES-CBC et chiffrement du sous-échantillon vidéo NAL
+ 'cens' : chiffrement partiel du modèle vidéo NAL en mode AES-CTR
+ « cbcs » : chiffrement partiel du modèle vidéo NAL en mode AES-CBC

L'exemple suivant montre un document CPIX avec une seule clé de contenu non chiffrée :

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

Par défaut, les clés de contenu ne sont pas chiffrées, comme dans l'exemple ci-dessous. Mais le chiffrement des clés de contenu peut être demandé par le crypteur en incluant l'élément<cpix : >. DeliveryDataList Reportez-vous à la section Chiffrement de la clé de contenu pour plus de détails.


| Élément supporté par SPEKE | Attributs obligatoires | Attributs facultatifs | Éléments obligatoires pour les enfants | Éléments enfants facultatifs | 
| --- | --- | --- | --- | --- | 
|  <cpix:CPIX>  |  ID du contenu, version, xmlns : cpix, xmlns : pskc  |  nom, xmlns:enc  |  un <cpix : ContentKeyList >, un<cpix : List>, un <cpix : DRMSystem > ContentKeyUsageRuleList  |  un <cpix : DeliveryDataList >, un <cpix : >ContentKeyPeriodList  | 
|  <pixels : >ContentKeyList  |  -  |  id  |  au moins un <cpix : >ContentKey  |  -  | 
|  <pixels : >ContentKey  |  enfant commonEncryptionScheme, Données  |  id, Algorithme, ExplicItiv  |  un <pskc:Secret>  |  -  | 
|  <pskc:Secret>  |  PlainValue ou EncryptedValue  |  Value Mac  |  -  |  <enc : EncryptionMethod >, <enc : >CipherData  | 

**<cpix : section Liste>DRMSystem**  
Il s'agit d'une section obligatoire, pertinente à la fois pour le streaming en direct et pour le streaming VOD, qui définit les différents systèmes DRM à exploiter avec les clés de contenu.

L'exemple suivant montre une liste de systèmes DRM avec une seule spécification de système PlayReady 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>
```

Pour une liste complète des systèmes DRMIDs, reportez-vous à la [section Protection du contenu](https://dashif.org/identifiers/content_protection/) du référentiel DASH-IF Identifiers.


| Élément supporté par SPEKE | Attributs obligatoires | Attributs facultatifs | Éléments obligatoires pour les enfants | Éléments enfants facultatifs | 
| --- | --- | --- | --- | --- | 
|  <cpix : Liste>DRMSystem  |  -  |  id  |  au moins un <cpix : >DRMSystem  |  -  | 
|  <pixels : >DRMSystem  |  enfant, ID du système  |  identifiant, nom, PSSH  |  -  |  ContentProtectionData SmoothStreamingProtectionHeaderData, deux éléments <cpix : HLSSignaling Data> avec une valeur d'attribut de playlist différente  | 

 `DRMSystem@PSSH`est obligatoire si l'encapsulation ISO-BMFF est appliquée aux segments multimédia. `DRMSystem.ContentProtectionData``<pssh>`L'élément innerXML est utilisé par le crypteur uniquement à des fins de signalisation du manifeste.

S'il `DRMSystem@PSSH` est présent et `DRMSystem.ContentProtectionData` contient un `<pssh>` élément InnerXML, les deux valeurs doivent être identiques.

Si `DRMSystem` la signalisation doit être transportée dans des manifestes HLS, les `<cpix:HLSSignalingData playlist="master">` éléments a `<cpix:HLSSignalingData playlist="media">` et a doivent être inclus dans la demande et la réponse CPIX.

**<cpix : >section ContentKeyPeriodList**  
Il s'agit d'une section facultative, pertinente uniquement pour la diffusion en direct, qui définit les périodes cryptographiques appliquées au contenu.

L'`<cpix:ContentKeyPeriodList>`élément peut contenir un ou plusieurs éléments `<cpix:ContentKeyPeriod>` enfants, chacun d'eux décrivant une période cryptographique distincte dans la chronologie en temps réel. L'utilisation dans le UUIDs cadre de la valeur de l'attribut id est une approche couramment utilisée.

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


| Élément supporté par SPEKE | Attributs obligatoires | Attributs facultatifs | Éléments obligatoires pour les enfants | Éléments enfants facultatifs | 
| --- | --- | --- | --- | --- | 
|  <pixels : >ContentKeyPeriodList  |  -  |  id  |  au moins un <cpix : >ContentKeyPeriod  |  -  | 
|  <pixels : >ContentKeyPeriod  |  identifiant, index  |  -  |  -  |  -  | 

Si des périodes cryptographiques sont utilisées, les clés de chiffrement doivent également être attachées à l'une des périodes cryptographiques du document CPIX, comme indiqué dans la section ci-dessous.

**<cpix : >section ContentKeyUsageRuleList**  
Il s'agit d'une section obligatoire, pertinente à la fois pour le streaming en direct et pour le streaming VOD, qui définit la manière dont les différentes clés de contenu protégeront les pistes au sein du streamset et pendant les périodes de cryptage.

L'élément <cpix : ContentKeyUsageRuleList > peut contenir un ou plusieurs éléments enfants <cpix : ContentKeyUsageRule >, chacun d'eux décrivant les pistes auxquelles une clé de contenu donnée est appliquée par le crypteur, potentiellement pendant une période cryptographique spécifique. Au moins un élément <cpix : AudioFilter > ou un élément <cpix : VideoFilter > doit être présent dans un élément<cpix : >. ContentKeyUsageRule

L'exemple suivant montre une liste simple avec une seule règle appliquant une seule clé de contenu à toutes les pistes audio et vidéo pendant une période de chiffrement spécifique.

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


| Élément supporté par SPEKE | Attributs obligatoires | Attributs facultatifs | Éléments obligatoires pour les enfants | Éléments enfants facultatifs | 
| --- | --- | --- | --- | --- | 
|  <pixels : >ContentKeyUsageRuleList  |  -  |  id  |  au moins un <cpix : >ContentKeyUsageRule  |  -  | 
|  <pixels : >ContentKeyUsageRule  |  enfant, intendedTrackType  |  -  |  au moins un <cpix : AudioFilter > ou un <cpix : >(\$1) VideoFilter  |  <pixels : >KeyPeriodFilter  | 
|  <pixels : >KeyPeriodFilter  |  ID de période  |  -  |  -  |  -  | 
|  <pixels : >AudioFilter  |  -  |  Canaux min. et max.  |  -  |  -  | 
|  <pixels : >VideoFilter  |  -  |  Nombre minimal de pixels, nombre maximal de pixels, HDR, nombre d'images par seconde minimum, maximum d'images par seconde  |  -  |  -  | 

 *(\$1) Pour une explication détaillée de l'utilisation d'une ou de plusieurs clés de contenu pour protéger une ou plusieurs pistes d'un streamset, reportez-vous à la section de documentation du [contrat de chiffrement](encryption-contract-v2.md). *\$1 

# SPEKE API v2 - Contrat de chiffrement
<a name="encryption-contract-v2"></a>

Le contrat de chiffrement définit les clés de contenu qui protègent les pistes d'un ensemble de flux donné, en fonction des caractéristiques des pistes.

Bien qu'il s'agisse d'une bonne pratique recommandée par le secteur, l'utilisation de plusieurs clés de contenu pour les différentes pistes d'un stream n'est pas obligatoire, mais recommandée : au moins deux clés de contenu différentes, une pour les pistes audio et l'autre pour les pistes vidéo. Il est possible d'utiliser une clé de contenu unique pour chiffrer plusieurs pistes, mais cela doit être explicitement indiqué dans le document CPIX envoyé par le crypteur au fournisseur de clés. D'une manière générale, le crypteur décrit toujours précisément le nombre de clés de contenu requises et la manière dont elles sont utilisées pour chiffrer les différentes pistes multimédias.

**Principes**  
Le contrat de chiffrement se trouve dans la `<cpix:ContentKeyUsageRuleList>` section du document CPIX. Dans cette section, chaque clé de contenu définie dans la `<cpix:ContentKeyList>` section correspond à un `<cpix:ContentKeyUsageRule>` élément spécifique, qui doit inclure :
+ un `ContentKeyUsageRule@intendedTrackType` attribut qui peut référencer un ou plusieurs sous-composants, séparés par le signe « \$1 » si plusieurs sous-composants sont utilisés. La valeur de `ContentKeyUsageRule@intendedTrackType` doit être unique dans un contrat de chiffrement et ne peut pas être utilisée dans plusieurs `ContentKeyUsageRule` éléments.
+ un ou plusieurs éléments `<cpix:AudioFilter>` ou éléments `<cpix:VideoFilter>` enfants, selon la valeur de `ContentKeyUsageRule@intendedTrackType` l'attribut.

Les règles régissant cette relation sont les suivantes :
+ Lorsque toutes les pistes audio et vidéo du streamset doivent être protégées par une clé de contenu unique, la chaîne `'ALL'` doit être utilisée comme valeur d'`ContentKeyUsageRule@intendedTrackType`attribut. L'exemple 1 illustre un tel cas d'utilisation. Dans ce cas, les éléments a `<cpix:AudioFilter />` `<cpix:VideoFilter />` et a sans attribut doivent être inclus. Toute autre combinaison d'`<cpix:AudioFilter>` and/or `<cpix:VideoFilter>`éléments n'est pas valide dans ce contexte particulier.
+ Pour tous les autres cas d'utilisation, la valeur de l'`ContentKeyUsageRule@intendedTrackType`attribut peut être définie librement, et le nombre d'éléments `<cpix:AudioFilter />` et un élément `<cpix:VideoFilter />` enfant doivent correspondre au nombre de sous-composants agrégés par le signe « \$1 ». Les exemples 2/3/4/5/6/7/9/10 illustrent cette exigence lorsqu'un seul sous-composant est présent dans la valeur de l'attribut. `ContentKeyUsageRule@intendedTrackType` L'exemple 8 l'illustre lorsque plusieurs sous-composants sont utilisés : il `ContentKeyUsageRule@intendedTrackType="SD+HD"` est décrit par deux éléments `<cpix:VideoFilter>` enfants distincts avec des valeurs d'attributs différentes, et `ContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD"` est décrit par trois éléments `<cpix:VideoFilter>` enfants distincts avec des valeurs d'attributs différentes.

**Filtres**  
Le CPIX définit plusieurs éléments et attributs de filtrage, mais SPEKE n'en prend en charge qu'un sous-ensemble. Le tableau suivant récapitule ces différences :


| Type de filtre CPIX | Support global de SPEKE | Attributs de filtre pris en charge par SPEKE | Attributs de filtre non pris en charge par SPEKE | 
| --- | --- | --- | --- | 
|  <pixels : >VideoFilter  |  Oui  |  MinPixels, MaxPixels, hdr, MinFPS, MaxFPS (attributs facultatifs)  |  wcg  | 
|  <pixels : >AudioFilter  |  Oui  |  MinChannels, MaxChannels (attributs facultatifs)  |  | 
|  <pixels : >KeyPeriodFilter  |  Oui  |  PerioDid (attribut obligatoire)  |  | 
|  <pixels : >BitrateFilter  |  Non  |  N/A  |  N/A  | 
|  <pixels : >LabelFilter  |  Non  |  N/A  |  N/A  | 

Conformément à la spécification CPIX pour VideoFilter, [MinPixels, MaxPixels] est une plage complète dans les deux dimensions, tandis que (MinFps, MaxFPS] n'inclut que la dimension MaxFPS. Car AudioFilter [MinChannels, MaxChannels] est une plage inclusive dans les deux dimensions.

**Situations problématiques**  
Dans certains cas, les informations fournies dans le contrat de chiffrement peuvent être partielles, ambiguës ou erronées. Dans ces cas, il est important que le crypteur et le fournisseur de clés se comportent de manière appropriée et garantissent une protection adéquate du contenu. Le tableau suivant présente le comportement recommandé dans ces situations :


| Dans cette situation | Le crypteur... should/shall  | Le principal fournisseur should/shall ... | 
| --- | --- | --- | 
|  Aucune règle ne s'applique à une ou plusieurs pistes du streamset (voir exemple 3 ci-dessous)  |  Le crypteur doit examiner sa configuration (externe à la charge utile CPIX) et vérifier que les pistes concernées ne nécessitent pas de cryptage. Si ce n'est pas le cas, le crypteur devrait générer une erreur et arrêter le traitement.  |   *Non pertinent : le fournisseur principal ne connaît pas la structure du stream set.*   | 
|  Plusieurs règles se chevauchent et suggèrent plusieurs clés de contenu pour chiffrer une piste spécifique  |  Le crypteur doit appliquer la dernière valeur évaluée ContentKeyUsageRule avec succès dans l'ordre du document.  |   *Non pertinent : le fournisseur principal ne connaît pas la structure du stream set.*   | 
|  Le contrat de chiffrement change en un seul cycle SPEKE request/response   |  Le crypteur doit déclencher une exception et arrêter le traitement, car le fournisseur de clés n'est pas responsable de la définition du contrat de chiffrement.  |  Pour éviter que cette situation ne se produise en premier lieu, le fournisseur de clés ne doit pas modifier un contrat de chiffrement reçu dans la charge utile CPIX de la demande SPEKE.  | 
|  Contrat de chiffrement mal formé : exception à une contrainte de intendedTrackType/Filters cardinalité, filtres ou attributs non pris en charge  |  Le crypteur doit déclencher une exception, arrêter le traitement et ne pas envoyer la demande SPEKE au fournisseur de clés, car cela entraînerait très probablement une protection du contenu erronée ou laisserait certaines traces non protégées.  |  Le fournisseur de clés doit déclencher une exception et renvoyer une erreur « Contrat de chiffrement mal formé ».  | 
|  Contrat de chiffrement bien conçu, mais en violation des contraintes liées aux niveaux de sécurité DRM : par exemple, une clé de contenu unique est demandée pour protéger à la fois les pistes audio et les pistes vidéo UHD  |  Si le crypteur a connaissance des contraintes liées aux niveaux de sécurité DRM, il doit déclencher une exception, arrêter le traitement et ne pas envoyer la demande SPEKE au fournisseur de clés, car cela entraînerait très probablement une protection du contenu erronée.  |  Le fournisseur de clés doit déclencher une exception et renvoyer le message d'erreur « Contrat de chiffrement CPIX demandé non pris en charge ».  | 
|  Contrat de chiffrement manquant  |  Le crypteur ne doit pas envoyer de documents CPIX qui ne contiennent aucun VideoFilter élément ou élément. AudioFilter   |  Le fournisseur de clés doit déclencher une exception et renvoyer une erreur « Contrat de chiffrement CPIX manquant ».  | 

**Exemples de contrats de chiffrement**  
 *Exemple 1 : une clé de contenu pour toutes les pistes audio et vidéo* 

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

 *Exemple 2 : une clé de contenu pour toutes les pistes vidéo, une clé de contenu pour toutes les pistes 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>
```

 *Exemple 3 : une clé de contenu pour toutes les pistes vidéo, pistes audio non cryptées* 

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

 *Exemple 4 : plusieurs clés de contenu pour différentes pistes vidéo (SD/HD), une clé de contenu pour toutes les pistes 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>
```

 *Exemple 5 : plusieurs clés de contenu pour différentes pistes vidéo (SD/HD/UHD), une clé de contenu pour toutes les pistes 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>
```

 *Exemple 6 : plusieurs clés de contenu pour différentes pistes vidéo (SD/HD/UHD1/UHD2), une clé de contenu pour toutes les pistes 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>
```

 *Exemple 7 : plusieurs clés de contenu pour différentes pistes vidéo (SD/HD1/HD2/UHD1/UHD2), une clé de contenu pour toutes les pistes 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>
```

 *Exemple 8 : plusieurs clés de contenu pour différentes pistes vidéo (basées sur plusieurs types d'attributs), une clé de contenu pour toutes les pistes 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>
```

 *Exemple 9 : une touche de contenu pour toutes les pistes vidéo, plusieurs touches de contenu pour les pistes audio stéréo et multicanaux* 

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

 *Exemple 10 : une touche de contenu pour toutes les pistes vidéo, plusieurs touches de contenu pour la stéréo et deux types de pistes audio multicanaux* 

```
<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 - Exemples d'appels de méthodes de flux de travail en direct
<a name="live-workflow-methods-v2"></a>

 *Exemple de syntaxe de la requête* 

L'URL suivante est un exemple et n'indique pas de format fixe :

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

 *Corps de la demande* 

Un document CPIX.

 *En-têtes de requête* 


| Name | Type | Se produit | Description | 
| --- | --- | --- | --- | 
|   `AWS Authorization`   |  String  |  1..1  |  Consultez [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Security-Token`   |  String  |  1..1  |  Consultez [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Date`   |  String  |  1..1  |  Consultez [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  |  Version de l'API SPEKE utilisée avec la demande, formulée sous MajorVersion la forme. MinorVersion, comme '2.0' pour SPEKE v2.0  | 

 *En-têtes de réponse* 


| Name | Type | Se produit | Description | 
| --- | --- | --- | --- | 
|   `X-Speke-User-Agent`   |  String  |  1..1  |  Chaîne qui identifie le fournisseur de clés  | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 
|   `X-Speke-Version`   |  String  |  1..1  |  Version de l'API SPEKE utilisée avec la demande, formulée sous MajorVersion la forme. MinorVersion, comme '2.0' pour SPEKE v2.0  | 

 *Réponse à la requête* 


| CODE HTTP | Nom de la charge utile | Se produit | Description | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1..1  |  Réponse à la charge utile DASH-CPIX  | 
|   `4XX (Client error)`   |  Message d'erreur client  |  1..1  |  Description de l'erreur client  | 
|   `5XX (Server error)`   |  Message d'erreur serveur  |  1..1  |  Description de l'erreur serveur  | 

**Note**  
Les exemples de cette section n'incluent pas le chiffrement de clé de contenu. Pour plus d'informations sur la façon d'ajouter le chiffrement par clé de contenu, consultez la section [Chiffrement par clé de contenu](content-key-encryption-v2.md).

 *Exemple de charge utile de requête en direct avec des clés* 

L'exemple suivant montre une charge utile typique d'une demande en direct envoyée par le crypteur au fournisseur de clés DRM, avec une clé de contenu pour toutes les pistes vidéo et une clé de contenu pour toutes les pistes 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>
```

 *Exemple de charge utile de réponse en direct avec des clés* 

L'exemple suivant montre une charge utile de réponse typique du fournisseur de clés DRM (les valeurs renvoyées ont été raccourcies avec [...] pour des raisons de lisibilité) :

```
<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 - Exemples d'appels à une méthode de flux de travail VOD
<a name="vod-workflow-method-v2"></a>

 *Exemple de syntaxe de la requête* 

L'URL suivante est un exemple et n'indique pas de format fixe.

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

 *Corps de la demande* 

Un document CPIX.

 *En-têtes de requête* 


| Name | Type | Se produit | Description | 
| --- | --- | --- | --- | 
|   `AWS Authorization`   |  String  |  1..1  |  Consultez [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Security-Token`   |  String  |  1..1  |  Consultez [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Date`   |  String  |  1..1  |  Consultez [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  |  Version de l'API SPEKE utilisée avec la demande, formulée sous MajorVersion la forme. MinorVersion, comme '2.0' pour SPEKE v2.0  | 

 *En-têtes de réponse* 


| Name | Type | Se produit | Description | 
| --- | --- | --- | --- | 
|   `X-Speke-User-Agent`   |  String  |  1..1  |  Chaîne qui identifie le fournisseur de clés  | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 
|   `X-Speke-Version`   |  String  |  1..1  |  Version de l'API SPEKE utilisée avec la demande, formulée sous MajorVersion la forme. MinorVersion, comme '2.0' pour SPEKE v2.0  | 

 *Réponse à la requête* 


| CODE HTTP | Nom de la charge utile | Se produit | Description | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1..1  |  Réponse à la charge utile DASH-CPIX  | 
|   `4XX (Client error)`   |  Message d'erreur client  |  1..1  |  Description de l'erreur client  | 
|   `5XX (Server error)`   |  Message d'erreur serveur  |  1..1  |  Description de l'erreur serveur  | 

**Note**  
Les exemples de cette section n'incluent pas le chiffrement de clé de contenu. Pour plus d'informations sur la façon d'ajouter le chiffrement par clé de contenu, consultez la section [Chiffrement par clé de contenu](content-key-encryption-v2.md).

 *Exemple de charge utile de requête VOD avec des clés* 

L'exemple suivant montre une charge utile typique d'une demande VOD envoyée par le crypteur au fournisseur de clés DRM, avec une clé de contenu pour toutes les pistes vidéo et une clé de contenu pour toutes les pistes 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>
```

 *Exemple de charge utile de réponse VOD avec des clés* 

L'exemple suivant montre une charge utile de réponse typique du fournisseur de clés DRM (les valeurs renvoyées ont été raccourcies avec [...] pour des raisons de lisibilité) :

```
<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 - Chiffrement des clés de contenu
<a name="content-key-encryption-v2"></a>

Vous pouvez éventuellement ajouter le chiffrement par clé de contenu à votre implémentation SPEKE. Le chiffrement des clés de contenu garantit end-to-end une protection complète en chiffrant les clés de contenu pour le transit, en plus du chiffrement du contenu lui-même. Si vous ne l'implémentez pas pour votre fournisseur de clés, vous comptez sur le chiffrement de la couche de transport associé à une authentification forte pour des raisons de sécurité.

Pour utiliser le chiffrement par clé de contenu pour les chiffreurs exécutés dans le cloud AWS, les clients importent des certificats dans AWS Certificate Manager, puis utilisent le certificat obtenu ARNs pour leurs activités de chiffrement. Le crypteur utilise le certificat ARNs et le service ACM pour fournir des clés de contenu chiffrées au fournisseur de clés DRM.

**Restrictions**  
SPEKE prend en charge le chiffrement des clés de contenu tel que spécifié dans la spécification DASH-IF CPIX avec les restrictions suivantes :
+ SPEKE ne prend pas en charge la vérification de signature numérique (XMLDSIG) pour les charges utiles de demande ou de réponse.
+ SPEKE nécessite 2048 certificats basés sur la norme RSA.

Ces restrictions sont également répertoriées dans [Personnalisations et contraintes relatives à la spécification DASH-IF](speke-constraints-v2.md).

**Implémentation du chiffrement de clé de contenu**  
Pour fournir un chiffrement de clé de contenu, incluez les éléments suivants dans vos implémentations de fournisseur de clés DRM :
+ Traitez l'élément `<cpix:DeliveryDataList>` dans les charges utiles de demande et de réponse.
+ Fournissez des valeurs chiffrées dans l'élément `<cpix:ContentKeyList>` des charges utiles de réponse.

Pour plus d'informations sur ces éléments, consultez la spécification [DASH-IF CPIX 2.3](https://dashif.org/docs/CPIX2.3/Cpix.html).

 *Exemple d'élément de chiffrement de clé de contenu ` <cpix:DeliveryDataList> ` dans la charge utile de requête* 

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

 *Exemple d'élément de chiffrement de clé de contenu ` <cpix:DeliveryDataList> ` dans la charge utile de réponse* 

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

 *Exemple d'élément de chiffrement de clé de contenu ` <cpix:ContentKeyList> ` dans la charge utile de réponse* 

L'exemple suivant illustre le traitement de la clé de contenu chiffrée dans l'élément `<cpix:ContentKeyList>` de la charge utile de réponse. Elle utilise l'élément `<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>
```

En comparaison, l'exemple suivant affiche une charge utile de réponse similaire avec la clé de contenu non chiffrée, comme une clé en clair. Elle utilise l'élément `<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 - Remplacer l'identifiant de clé
<a name="kid-override-v2"></a>

Le chiffreur crée un nouvel identifiant de clé (KID) chaque fois qu'il effectue une rotation des clés. Il transmet le KID au fournisseur de clés DRM dans ses demandes. Le fournisseur de clés répond presque toujours à l'aide du même KID, mais il peut fournir une autre valeur pour le KID dans la réponse.

Voici un exemple de demande avec le 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>
```

La réponse suivante remplace le KID par `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>
```