

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# SPEKE API v2 — Anpassungen und Einschränkungen der DASH-IF-Spezifikation
<a name="speke-constraints-v2"></a>

Die [CPIX 2.3-Spezifikation](https://dashif.org/docs/CPIX2.3/Cpix.html) des DASH Industry Forum unterstützt eine Reihe von Anwendungsfällen und Topologien. Die SPEKE API v2.0-Spezifikation definiert sowohl ein CPIX-Profil als auch eine API für CPIX. Um diese beiden Ziele zu erreichen, hält sie sich an die CPIX-Spezifikation mit den folgenden Anpassungen und Einschränkungen:

**CPIX-Profil**
+ SPEKE folgt dem Encryptor Consumer-Workflow.
+ Für verschlüsselte Inhaltsschlüssel wendet SPEKE die folgenden Einschränkungen an:
  + SPEKE unterstützt keine Überprüfung digitaler Signaturen (XMLDSIG) für Payloads von Anfragen oder Antworten.
  + SPEKE benötigt 2048 RSA-basierte Zertifikate.
+ SPEKE nutzt nur einen Teil der CPIX-Funktionen:
  + SPEKE lässt die Funktionalität weg. `UpdateHistoryItemList` Wenn die Liste in der Antwort vorhanden ist, ignoriert SPEKE sie.
  + SPEKE lässt die wichtigsten Funktionen aus. root/leaf Wenn das `ContentKey@dependsOnKey` Attribut in der Antwort vorhanden ist, ignoriert SPEKE es.
  + SPEKE lässt das `BitrateFilter` Element und das Attribut weg. `VideoFilter@wcg` Wenn diese Elemente oder Attribute in der CPIX-Nutzlast vorhanden sind, ignoriert SPEKE sie.
+ Nur die Elemente oder Attribute, auf die auf der Seite [Standard-Payload-Komponenten oder der Seite](standard-payload-components-v2.md) mit dem [Verschlüsselungsvertrag](encryption-contract-v2.md) als „Unterstützt“ verwiesen wird, können in CPIX-Dokumenten verwendet werden, die mit SPEKE v2 ausgetauscht werden.
+ Wenn sie vom Verschlüsseler in einer CPIX-Anfrage enthalten sind, müssen alle Elemente und Attribute in der CPIX-Antwort des Schlüsselanbieters einen gültigen Wert enthalten. Wenn nicht, stoppt der Verschlüsseler und gibt einen Fehler aus.
+ SPEKE unterstützt die Schlüsselrotation mit `KeyPeriodFilter` Elementen. SPEKE verwendet nur die`ContentKeyPeriod@index`, um den Schlüsselzeitraum zu verfolgen.
+ Für die HLS-Signalisierung müssen mehrere `DRMSystem.HLSSignalingData` Elemente verwendet werden: eines mit dem `DRMSystem.HLSSignalingData@playlist` Attributwert „media“ und eines mit dem `DRMSystem.HLSSignalingData@playlist` Attributwert „master“.
+ Beim Anfordern von Schlüsseln verwendet der Verschlüsseler möglicherweise das optionale Attribut `@explicitIV` des Elements `ContentKey`. Der Schlüsselanbieter kann mit einem IV unter Verwendung von `@explicitIV` antworten, auch wenn das Attribut nicht in der Anforderung enthalten ist.
+ Die Verschlüsseler erstellt die Schlüssel-ID (`KID`), die für alle Inhalts-IDs und Schlüsselzeiträume gleich bleibt. Der Schlüsselanbieter schließt `KID` in seiner Antwort auf das Anforderungsdokument ein.
+ Der Verschlüsseler muss einen Wert für das Attribut enthalten. `CPIX@contentId` Wenn der Schlüsselanbieter einen leeren Wert für dieses Attribut erhält, gibt er einen Fehler mit der Beschreibung „Missing CPIX @contentId“ zurück. `CPIX@contentId`Der Wert kann vom Schlüsselanbieter nicht überschrieben werden.

   `CPIX@id`Wert, falls nicht Null, muss vom Schlüsselanbieter ignoriert werden.
+ Der Verschlüsseler muss einen Wert für das `CPIX@version` Attribut enthalten. Wenn der Schlüsselanbieter einen leeren Wert für dieses Attribut erhält, gibt er einen Fehler mit der Beschreibung „Missing CPIX @version“ zurück. Wenn eine Anfrage mit einer nicht unterstützten Version empfangen wird, muss die vom Schlüsselanbieter zurückgegebene Fehlerbeschreibung „Unsupported CPIX @version“ lauten.

   `CPIX@version`Der Wert kann vom Schlüsselanbieter nicht überschrieben werden.
+ Der Verschlüsseler muss für jeden angeforderten Schlüssel einen Wert für das `ContentKey@commonEncryptionScheme` Attribut angeben. Wenn der Schlüsselanbieter einen leeren Wert für dieses Attribut erhält, gibt er einen Fehler mit der Beschreibung „Missing ContentKey @ commonEncryptionScheme for KID`id`“ zurück.

  Ein einzelnes CPIX-Dokument kann nicht mehrere Werte für verschiedene Attribute kombinieren. `ContentKey@commonEncryptionScheme` Beim Empfang einer solchen Kombination gibt der Schlüsselanbieter einen Fehler mit der Beschreibung „Nicht konforme ContentKey @-Kombination“ zurück. commonEncryptionScheme 

  Nicht alle `ContentKey@commonEncryptionScheme` Werte sind mit allen DRM-Technologien kompatibel. Beim Empfang einer solchen Kombination gibt der Schlüsselanbieter einen Fehler mit der Beschreibung „ContentKey@ commonEncryptionScheme nicht kompatibel mit DRMSystem `id`“ zurück.

   `ContentKey@commonEncryptionScheme`Der Wert kann vom Schlüsselanbieter nicht überschrieben werden.
+ Beim Empfang verschiedener Werte für ein `DRMSystem.ContentProtectionData` `<pssh>` InnerXML-Element im CPIX-Antworttext stoppt der Verschlüsseler `DRMSystem@PSSH` und gibt einen Fehler aus.

**API für CPIX**
+ Der Schlüsselanbieter muss einen Wert für den `X-Speke-User-Agent` HTTP-Antwort-Header angeben.
+ Ein SPEKE-kompatibler Verschlüsseler fungiert als Client und sendet POST-Operationen an den Endpunkt des Schlüsselanbieters.
+ Der Verschlüsseler muss einen Wert für den `X-Speke-Version` HTTP-Anforderungsheader enthalten, wobei die SPEKE-Version, die bei der Anfrage verwendet wurde, formuliert ist als. MajorVersion MinorVersion, wie '2.0' für SPEKE v2.0. Wenn der Schlüsselanbieter die vom Verschlüsseler für die aktuelle Anfrage verwendete SPEKE-Version nicht unterstützt, gibt der Schlüsselanbieter einen Fehler mit der Beschreibung „SPEKE-Version nicht unterstützt“ zurück und versucht nicht, das CPIX-Dokument nach bestem Wissen zu verarbeiten.

  Der vom Verschlüsseler definierte `X-Speke-Version` Header-Wert kann vom Schlüsselanbieter in der Antwort auf die Anfrage nicht geändert werden.
+ Beim Empfang von Fehlern im Antworttext gibt der Verschlüsseler einen Fehler aus und versucht die Anfrage nicht erneut mit einer SPEKE v1.0-Version.

  Wenn der Schlüsselanbieter keinen Fehler zurückgibt, aber kein CPIX-Dokument zurückgibt, das die obligatorischen Informationen enthält, sollte der Verschlüsseler den Vorgang beenden und einen Fehler ausgeben.

In der folgenden Tabelle sind die Standardnachrichten zusammengefasst, die vom Schlüsselanbieter im Hauptteil der Nachricht zurückgegeben werden müssen. Der HTTP-Antwortcode muss in Fehlerfällen ein 4XX oder ein 5XX sein, niemals ein 200. Der 422-Fehlercode kann für alle Fehler im Zusammenhang mit SPEKE/CPIX verwendet werden.


| Fehlerfall | Fehlermeldung | 
| --- | --- | 
|  CPIX @contentId ist nicht definiert  |  CPIX @contentId fehlt  | 
|  CPIX @version ist nicht definiert  |  CPIX @version fehlt  | 
|  CPIX @version wird nicht unterstützt  |  CPIX @version wird nicht unterstützt  | 
|  ContentKey@ commonEncryptionScheme ist nicht definiert  |   ContentKey@ commonEncryptionScheme für KID fehlt `id` (wo dem Wert ContentKey @kid `id` entspricht)  | 
|  In einem einzigen CPIX-Dokument werden mehrere ContentKey commonEncryptionScheme @-Werte verwendet  |  Nicht konforme @-Kombination ContentKey commonEncryptionScheme   | 
|  ContentKey@ commonEncryptionScheme ist nicht mit der DRM-Technologie kompatibel  |  ContentKey@ ist commonEncryptionScheme nicht kompatibel mit DRMSystem `id` (wo dem `id` Wert DRMSystem @systemId entspricht)  | 
|  X-Speke-Version Der Header-Wert ist keine unterstützte SPEKE-Version  |  SPEKE-Version wird nicht unterstützt  | 
|  Der Verschlüsselungsvertrag ist falsch formatiert  |  Fehlerhafter Verschlüsselungsvertrag  | 
|  Der Verschlüsselungsvertrag widerspricht den Einschränkungen der DRM-Sicherheitsstufen  |  Der angeforderte CPIX-Verschlüsselungsvertrag wird nicht unterstützt  | 
|  Der Verschlüsselungsvertrag enthält keine OE-Elemente VideoFilter AudioFilter   |  Fehlender CPIX-Verschlüsselungsvertrag  | 