View a markdown version of this page

SPEKE API v2.0 - Personalizzazioni e vincoli alle specifiche DASH-IF - Specifica API Elemental Secure Packager and Encoder Key Exchange

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

SPEKE API v2.0 - Personalizzazioni e vincoli alle specifiche DASH-IF

La specifica https://dashif.org/docs/CPIX2.3/Cpix.html CPIX 2.3 del DASH Industry Forum supporta una serie di casi d'uso e topologie. La specifica SPEKE API v2.0 definisce sia un profilo CPIX che un'API per CPIX. Per raggiungere questi due obiettivi, aderisce alle specifiche CPIX con le seguenti personalizzazioni e vincoli:

Profilo CPIX
  • SPEKE segue il flusso di lavoro di Encryptor Consumer.

  • Per le chiavi di contenuto crittografate, SPEKE applica le seguenti restrizioni:

    • SPEKE non supporta la verifica della firma digitale (XMLDSIG) per i payload di richieste o risposte.

    • SPEKE richiede 2048 certificati. RSA-based

  • SPEKE sfrutta solo un sottoinsieme delle funzionalità CPIX:

    • SPEKE UpdateHistoryItemList omette la funzionalità. Se l'elenco è presente nella risposta, SPEKE lo ignora.

    • SPEKE omette la funzionalità chiave. root/leaf Se l'ContentKey@dependsOnKeyattributo è presente nella risposta, SPEKE lo ignora.

    • SPEKE omette l'BitrateFilterelemento e l'attributo. VideoFilter@wcg Se questi elementi o attributi sono presenti nel payload CPIX, SPEKE lo ignora.

  • Solo gli elementi o gli attributi indicati come «Supportati» nella pagina dei componenti del payload standard o nella pagina del contratto di crittografia possono essere utilizzati nei documenti CPIX scambiati con SPEKE v2.

  • Se inclusi in una richiesta CPIX da parte dell'encoptor, tutti gli elementi e gli attributi devono riportare un valore valido nella risposta CPIX del fornitore di chiavi. In caso contrario, il criptatore si interromperà e genererà un errore.

  • SPEKE supporta la rotazione delle chiavi con elementi. KeyPeriodFilter SPEKE utilizza solo il ContentKeyPeriod@index per tracciare il periodo chiave.

  • Per la segnalazione HLS, è necessario utilizzare più DRMSystem.HLSSignalingData elementi: uno con un valore di DRMSystem.HLSSignalingData@playlist attributo «media» e un altro con un valore di DRMSystem.HLSSignalingData@playlist attributo «master».

  • Al momento di richiedere le chiavi, il componente di crittografia potrebbe utilizzare l'attributo facoltativo @explicitIV dell'elemento ContentKey. Il provider di chiavi è in grado di rispondere con un IV utilizzando @explicitIV, anche se l'attributo non è incluso nella richiesta.

  • Il componente di crittografia crea l'identificatore chiave (KID), che rimane uguale per un determinato periodo di chiavi e ID di contenuti. Il provider di chiavi include KID nella risposta al documento di richiesta.

  • Il criptatore deve includere un valore per l'attributo. CPIX@contentId Quando riceve un valore vuoto per questo attributo, il fornitore della chiave deve restituire un errore con la descrizione «Missing CPIX @contentId». CPIX@contentIdil valore non può essere sovrascritto dal fornitore della chiave.

    CPIX@idil valore, se non è nullo, deve essere ignorato dal fornitore della chiave.

  • Il criptatore deve includere un valore per l'attributo. CPIX@version Quando riceve un valore vuoto per questo attributo, il fornitore della chiave deve restituire un errore con la descrizione «Missing CPIX @version». Quando si riceve una richiesta con una versione non supportata, la descrizione dell'errore restituita dal fornitore della chiave deve essere «CPIX @version non supportato».

    CPIX@versionil valore non può essere sovrascritto dal fornitore della chiave.

  • Il criptatore deve includere un valore per l'ContentKey@commonEncryptionSchemeattributo per ogni chiave richiesta. Quando riceve un valore vuoto per questo attributo, il fornitore della chiave deve restituire un errore con la descrizione «Missing ContentKey @common EncryptionScheme for KID». id

    Un documento CPIX univoco non può combinare più valori per attributi diversi. ContentKey@commonEncryptionScheme Quando riceve una tale combinazione, il fornitore della chiave deve restituire un errore con la descrizione «Combinazione non conforme ContentKey a @common». EncryptionScheme

    Non tutti i ContentKey@commonEncryptionScheme valori sono compatibili con tutte le tecnologie DRM. Quando riceve una tale combinazione, il fornitore della chiave restituirà un errore con la descrizione "ContentKey@common EncryptionScheme non compatibile con il sistema DRMid».

    ContentKey@commonEncryptionSchemeil valore non può essere sovrascritto dal fornitore della chiave.

  • Quando riceve valori diversi per DRMSystem@PSSH un <pssh> elemento DRMSystem.ContentProtectionData innerXML nel corpo della risposta CPIX, l'encoptor si interrompe e genera un errore.

API per CPIX
  • Il fornitore della chiave deve includere un valore per l'intestazione della risposta X-Speke-User-Agent HTTP.

  • Un SPEKE-compliant crittografo funge da client e invia le operazioni POST all'endpoint del fornitore di chiavi.

  • Il criptatore deve includere un valore per l'intestazione della richiesta X-Speke-Version HTTP, con la versione SPEKE utilizzata con la richiesta, formulata come MajorVersion.MinorVersion «2.0» per SPEKE v2.0. Se il fornitore della chiave non supporta la versione SPEKE utilizzata dal criptatore per la richiesta corrente, restituirà un errore con la descrizione «Versione SPEKE non supportata» e non tenterà di elaborare il documento CPIX nel migliore dei modi.

    Il valore dell'X-Speke-Versionintestazione definito dal crittografo non può essere modificato dal fornitore della chiave nella risposta alla richiesta.

  • Quando riceve errori nel corpo della risposta, l'encoptor genera un errore e non riprova la richiesta con una versione SPEKE v1.0.

    Se il fornitore della chiave non restituisce un errore ma non restituisce un documento CPIX che include le informazioni obbligatorie, l'encoptor dovrebbe fermarsi e generare un errore.

La tabella seguente riassume i messaggi standard che devono essere restituiti dal fornitore della chiave nel corpo del messaggio. Il codice di risposta HTTP in caso di errore deve essere un 4XX o un 5XX, mai un 200. Il codice di errore 422 può essere utilizzato per tutti gli errori relativi a. SPEKE/CPIX

Caso di errore Messaggio di errore

CPIX @contentId non è definito

CPIX @contentId mancante

CPIX @version non è definito

CPIX @version mancante

CPIX @version non è supportato

CPIX @version non supportato

ContentKey@common EncryptionScheme non è definito

ContentKey@common mancante EncryptionScheme per KID id (dove id è uguale al valore ContentKey @kid)

Più EncryptionScheme valori ContentKey @common utilizzati in un singolo documento CPIX

Combinazione @common non conforme ContentKey EncryptionScheme

ContentKey@common non EncryptionScheme è compatibile con la tecnologia DRM

ContentKey@common EncryptionScheme non compatibile con DRMSystem id (dove è id uguale al valore DRMSystem @systemId)

X-Speke-Version il valore dell'intestazione non è una versione SPEKE supportata

Versione SPEKE non supportata

Il contratto di crittografia non è valido

Contratto di crittografia non valido

Il contratto di crittografia contraddice i vincoli relativi ai livelli di sicurezza del DRM

Il contratto di crittografia CPIX richiesto non è supportato

Il contratto di crittografia non include alcun elemento VideoFilter AudioFilter

Contratto di crittografia CPIX mancante