Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
1. Introduzione
Questa specifica si applica a qualsiasi prodotto finale creato con PlayReady Server SDK, PlayReady Device Porting Kit, Windows, Xbox, Windows Phone e Silverlight.
1.1. Cronologia delle modifiche
| Versione | Cambiamento |
|---|---|
| 8 settembre 2021 | Aggiungere l'attributo LICENSEREQUESTED facoltativo al nodo PROTECTINFO. |
| 1 novembre 2017 | Aggiungere la sezione Requisiti di sintassi. Correzione di più esempi con ordine di attributi non corretto (gli attributi devono essere in ordine alfabetico) |
| 12 luglio 2017 | Aggiungere la sezione Intestazione PlayReady 4.3.0.0, supportata a partire da PlayReady versione 4. Aggiungere il requisito di sintassi che richiede che tutti i nodi XML siano chiusi in modo esplicito con un tag di chiusura. |
| 10 aprile 2015 | Aggiungi la sezione Intestazione PlayReady 4.2.0.0, supportata a partire dalla versione 3 di PlayReady. |
| Settembre 2011 | Aggiungi la sezione Intestazione PlayReady 4.1.0.0, supportata a partire dalla versione 2 di PlayReady. |
| Agosto 2008 | Versione iniziale che documenta il PlayReady Header 4.0.0.0 supportato dalla versione 1 di PlayReady |
2. Oggetto PlayReady (PRO)
L'oggetto PlayReady (PRO) contiene i campi seguenti.
| Nome del campo | Tipo di campo | Dimensioni (bit) | Descrizione |
|---|---|---|---|
| Durata | DWORD | 32 | Lunghezza dell'oggetto PlayReady in byte. Questo valore non deve superare i 15 kilobyte (KB). |
| Conteggio record oggetto PlayReady | PAROLA | 16 | Specifica il numero di record dell'oggetto PlayReady nell'oggetto PlayReady. |
| Oggetti di Record PlayReady | Matrice BYTE | Variabile | Contiene un numero variabile di record che contengono informazioni relative alle licenze e all'acquisizione di licenze. |
Record degli oggetti PlayReady
L'oggetto PlayReady è costituito da sotto-oggetti aggiuntivi denominati Record oggetto PlayReady. I record oggetto PlayReady contengono i campi seguenti.
| Nome del campo | Tipo di campo | Dimensioni (bit) | Descrizione |
|---|---|---|---|
| Tipo di record | PAROLA | 16 | Specifica il tipo di dati archiviati nel valore record. |
| Lunghezza record | PAROLA | 16 | Specifica le dimensioni in byte del valore record. |
| Valore del record | Matrice BYTE | Variabile | Il contenuto dell'oggetto dipende dal valore di Tipo di record. |
Il campo Tipo di record ha uno dei valori seguenti.
| Tipo di valore | Descrizione |
|---|---|
| 0x0001 | Indica che il record contiene un'intestazione PlayReady (PRH). |
| 0x0002 | Riservato. |
| 0x0003 | Indica un archivio di licenze incorporato (ELS). |
2.2. Esempi di oggetti PlayReady
La figura seguente mostra un file MP4 segmentato con un oggetto PlayReady che contiene un'intestazione PlayReady:
La figura seguente mostra la visualizzazione HEX di questo file MP4:
3. Intestazione PlayReady (PRH)
L'intestazione PlayReady (PRH) viene usata da un client per individuare o acquisire una licenza per la parte di contenuto in cui è archiviata. Viene codificato con UTF-16.
3.1 Tabella di supporto per le versioni
| Intestazione PlayReady v4.3.0.0 | Intestazione PlayReady v4.2.0.0 | Intestazione PlayReady v4.1.0.0 | Intestazione PlayReady v4.0.0.0 | |
|---|---|---|---|---|
|
Clienti basati su SDK PlayReady 4.0 (vedere la nota 1) |
✓ | ✓ | ✓ | ✓ |
|
Clienti basati su PlayReady 3.0 SDK (vedere la nota 2) |
✓ | ✓ | ✓ | |
|
Clienti basati su PlayReady 2.x SDK (vedere la nota 3) |
✓ | ✓ | ||
|
Client SDK che utilizzano PlayReady 1.x (vedere la nota 4) |
✓ |
Note:
- Xbox One versione 1709 o successiva è un client PlayReady 4.X.
- Windows 10 (tutte le versioni) e Xbox One versione 1703 o successiva sono Client PlayReady 3.X. I dispositivi non Windows più recenti (ad esempio, Smart TV) rilasciati dopo il 2017 sono i client PlayReady 3.X.
- Silverlight e Windows 8, 8.1 sono client PlayReady 2.X. La maggior parte dei dispositivi non Windows (ad esempio, Smart TV) rilasciati tra il 2011 e il 2017 sono i client PlayReady 2.X.
- La maggior parte dei dispositivi non Windows (ad esempio, Smart TV) rilasciati tra il 2008 e il 2011 sono i client PlayReady 1.X.
3.2. Requisiti di sintassi
3.2.1. Canonizzato
Il codice XML deve essere canonizzato.
3.2.2. Tutti i nomi di nodi e attributi fanno distinzione tra maiuscole e minuscole
Sostenuto
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
Non supportato
<KID value="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<kid VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </kid>
3.2.3. I tag di chiusura devono essere espliciti
Tutti i nodi XML devono essere chiusi in modo esplicito da un tag di chiusura, inclusi quelli all'interno del nodo CUSTOMATTRIBUTES.
Sostenuto
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo"> </MyNode> </CUSTOMATTRIBUTES>
Non supportato
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> <CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo"> </CUSTOMATTRIBUTES>
3.2.4. Attributi dello spazio dei nomi
Tutti gli attributi dello spazio dei nomi devono essere posizionati prima degli attributi che non appartengono a spazi dei nomi.
Sostenuto
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
Non supportato
<WRMHEADER version="4.3.0.0" xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader>
3.2.5. Ordine alfabetico
Tutti gli attributi devono essere in ordine alfabetico, inclusi quelli inclusi nei nodi all'interno del nodo CUSTOMATTRIBUTES.
Sostenuto
<KID ALGID="AESCBC" VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<CUSTOMATTRIBUTES> <MyNode BarAttribute="Bar" FooAttribute="Foo"> </MyNode> </CUSTOMATTRIBUTES>
Non supportato
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg==" ALGID="AESCBC"> </KID>
<CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo" BarAttribute="Bar"> </MyNode> </CUSTOMATTRIBUTES>
3.3. v4.3.0.0
L'intestazione PlayReady v4.3.0.0 è stata introdotta con la versione 4.0 di PlayReady nel settembre 2017 per supportare le chiavi AESCBC. Questo supporto consente la crittografia del contenuto in modalità CBC, in particolare per le modalità di crittografia comune "cbcs". Aumenta anche l'interoperabilità dei client PlayReady con altri sistemi DRM, nonché il contenuto esistente.
3.3.1. Differenze con altre versioni
A partire dalla versione 4.0, gli SDK e i client PlayReady sono in grado di elaborare le versioni di intestazione PlayReady 4.0, 4.1, 4.2 e 4.3. Gli SDK PlayReady precedenti alla versione 4.0 restituiranno un errore di "versione non supportata" quando vengono fornite con intestazioni v4.3.
Il formato dell'intestazione PlayReady v.4.3.0.0 presenta le modifiche seguenti rispetto alla versione 4.2.0.0:
- L'attributo version dell'elemento WRMHEADER è impostato sulla stringa "4.3.0.0".
- L'attributo ALGID che si trova all'interno dell'elemento KID potrebbe non essere presente in una richiesta di acquisizione della licenza. Microsoft consiglia che l'attributo ALGID abbia un valore valido nell'intestazione inclusa nel contenuto.
- Quando l'attributo ALGID è presente in qualsiasi elemento KID ed è presente più di un elemento KID nell'elemento KIDS , tutti gli elementi KID devono includere l'attributo ALGID e i valori dell'attributo devono essere uguali.
- L'attributo ALGID che si trova all'interno dell'elemento KID può ora avere il valore "AESCBC", oltre a "AESCTR", a condizione che:
- Quando l'attributo ALGID è impostato su "AESCBC", l'attributo CHECKSUM non deve essere incluso.
3.3.2. Esempi
Di seguito è riportato un esempio di intestazione PlayReady 4.3.0.0 con chiavi AESCBC:
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
<DATA>
<PROTECTINFO>
<KIDS>
<KID ALGID="AESCBC" VALUE="PV1LM/VEVk+kEOB8qqcWDg=="></KID>
<KID ALGID="AESCBC" VALUE="tuhDoKUN7EyxDPtMRNmhyA=="></KID>
</KIDS>
</PROTECTINFO>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
<DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
</DATA>
</WRMHEADER>
Di seguito è riportato un esempio di intestazione PlayReady 4.3.0.0 con un ALGID mancante:
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
<DATA>
<PROTECTINFO>
<KIDS>
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="></KID>
</KIDS>
</PROTECTINFO>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
<DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
<DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
</DATA>
</WRMHEADER>
3.3.3. Formato
L'intestazione PlayReady v4.3.0.0 ha la sintassi seguente:
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
<DATA>
<PROTECTINFO LICENSEREQUESTED="true">
<KIDS>
<KID ALGID="value" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
<KID ALGID="value" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
<KID ALGID="value" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
</KIDS>
</PROTECTINFO>
<LA_URL> URL for license acquisition </LA_URL>
<LUI_URL>
URL for Non-silent license acquisition web page
</LUI_URL>
<DS_ID> base64-encoded guid </DS_ID>
<CUSTOMATTRIBUTES xmlns="">
<mm:Publisher xmlns:mm="urn:schema-musicmogul-com">
<mm:Author>
Elvis Presley
</mm:Author>
<mm:CreationDate>
2007/08/21:12:00:00
</mm:CreationDate>
</mm:Publisher>
</CUSTOMATTRIBUTES>
<DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
</DATA>
</WRMHEADER>
I tag sono descritti di seguito.
| Nome tag | Obbligatorio | Descrizione |
|---|---|---|
| WRMHEADER | Sì | Elemento più esterno dell'oggetto di intestazione. Può contenere un elemento DATA e deve contenere un attributo version. La versione dell'intestazione è "4.3.0.0". Ogni volta che Microsoft definisce nuovi tag o attributi obbligatori, un nuovo numero di versione è associato a tali tag o attributi. Se la versione è maggiore di quella per cui è stato scritto il codice client, il codice client deve avere esito negativo, perché implica che l'intestazione contiene tag obbligatori che il client non riconosce. Se la versione è minore o uguale a quella per cui è stato scritto il codice client, il codice client può ignorare in modo sicuro eventuali tag o attributi che non comprende. |
| DATI | NO | Elemento contenitore per i dati dell'intestazione, inclusi i tag di terze parti. Non è possibile includere più di un elemento DATA nell'elemento WRMHEADER . |
| PROTECTINFO | NO | Specifica zero o un elemento KIDS . Non è possibile includere più di un elemento PROTECTINFO nell'elemento DATA . Facoltativamente, include l'attributo LICENSEREQUESTED. |
| Licenza Richiesta | NO | Specifica se l'acquisizione della licenza richiede almeno una licenza o meno. Deve essere impostato su "true" o "false" se presente e si presuppone che sia impostato su "true" se non presente. Questo attributo viene ignorato dalle versioni playready precedenti alla 4.5. L'applicazione PlayReady Server SDK è gratuita per ignorare questo attributo; è solo informativo. |
| BAMBINI | NO | Specifica uno o più elementi KID che possono essere utilizzati per creare oggetti decrittori per il contenuto associato. Uno o zero elementi KIDS possono esistere nel nodo PROTECTINFO . |
| CAPRETTO | NO | Contiene tutti i dati chiave per una determinata licenza. Se il nodo KIDS è presente, nel nodo KIDS deve esistere uno o più elementi KID. L'elemento KID contiene gli attributi seguenti. ALGID: facoltativo. Specifica l'algoritmo di crittografia. Può essere impostato su: "AESCTR", "AESCBC" o "COCKTAIL". CHECKSUM: facoltativo. Solo per le chiavi AES-CTR. Contiene un checksum calcolato usando l'attributo KID VALUE e la chiave di contenuto. Per informazioni dettagliate, vedere la sezione Key Checksum Algorithm (Algoritmo checksum chiave ) di questo documento. Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati deve essere vuoto. VALUE: obbligatorio. Contiene un valore GUID dell'ID chiave codificato in base64. Si noti che questo VALORE GUID (DWORD, WORD, WORD, matrice a 8 BYTE) deve essere un ordine di byte endian minimo. |
| LA_URL | NO | Contiene l'URL per il servizio Web di acquisizione delle licenze. Sono consentiti solo gli URL assoluti. Non più di un elemento LA_URL può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| LUI_URL | NO | Contiene l'URL per una pagina Web di acquisizione di licenze non invisibile all'utente. Sono consentiti solo gli URL assoluti. Non più di un elemento LUI_URL può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| DS_ID | NO | ID del servizio di dominio. Solo un elemento DS_ID può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| CUSTOMATTRIBUTES | NO | L'autore del contenuto può aggiungere codice XML personalizzato all'interno di questo elemento. Il codice Microsoft non agisce su dati contenuti in questo elemento. Non è possibile includere più di un elemento CUSTOMATTRIBUTES nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| DECRYPTORSETUP | NO | Questo tag può contenere solo il valore "ONDEMAND". Quando questo tag è presente nel nodo DATA e il relativo valore è impostato su "ONDEMAND", indica a un'applicazione che non deve aspettarsi che la catena di licenze completa per il contenuto sia disponibile per l'acquisizione o già presente nel computer client, prima di configurare il grafico multimediale. Se questo tag non è impostato, indica che un'applicazione può applicare la licenza da acquisire o già presente nel computer client, prima di configurare il grafico multimediale. Non è possibile includere più di un elemento DECRYPTORSETUP nell'elemento DATA . |
3.4. v4.2.0.0
L'intestazione PlayReady v4.2.0.0 è stata introdotta con PlayReady versione 3.0 nell'aprile 2015 per consentire più KID in una singola intestazione. Ciò significa che è possibile usare più chiavi per crittografare un singolo asset, ad esempio quando le tracce audio devono essere crittografate con una chiave diversa rispetto alle tracce video.
3.4.1. Differenze con altre versioni
Gli SDK PlayReady 3.0 e i client successivi sono in grado di elaborare le versioni v4.0, v4.1 e v4.2 PlayReady Header. Gli SDK PlayReady precedenti restituiscono un errore di "versione non supportata" quando vengono fornite intestazioni v4.2. Quando si usa l'intestazione v4.2, il client deve sapere quale versione del server usa tramite un meccanismo personalizzato specifico dell'app. Gli SDK PlayReady non offrono un modo nativo per ottenere queste informazioni sulla versione.
Il formato dell'intestazione PlayReady v.4.2.0.0 presenta le modifiche seguenti rispetto alla versione 4.1.0.0:
- L'attributo version dell'elemento WRMHEADER è impostato sulla stringa "4.2.0.0".
- L'elemento KID che si trova all'interno dell'elemento PROTECTINFO è stato rinominato in KIDS ed è ancora facoltativo.
- Più elementi KID si trovano all'interno dell'elemento KIDS .
3.4.2. Esempio
Intestazione PlayReady 4.2.0.0 con due chiavi AES CTR:
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.2.0.0">
<DATA>
<PROTECTINFO>
<KIDS>
<KID ALGID="AESCTR" CHECKSUM="xNvWVxoWk04=" VALUE="0IbHou/5s0yzM80yOkKEpQ=="></KID>
<KID ALGID="AESCTR" CHECKSUM="GnKaQIRacPU=" VALUE="/qgG2xbs4k2SKCxx6bhWqw=="></KID>
</KIDS>
</PROTECTINFO>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
<DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
</DATA>
</WRMHEADER>
3.4.3. Formato
L'intestazione PlayReady v4.2.0.0 ha la sintassi seguente:
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.2.0.0">
<DATA>
<PROTECTINFO>
<KIDS>
<KID ALGID="AESCTR" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
<KID ALGID="AESCTR" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
<KID ALGID="AESCTR" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
</KIDS>
</PROTECTINFO>
<LA_URL> URL for license acquisition </LA_URL>
<LUI_URL>
URL for Non-silent license acquisition web page
</LUI_URL>
<DS_ID> base64-encoded guid </DS_ID>
<CUSTOMATTRIBUTES xmlns="">
<mm:Publisher xmlns:mm="urn:schema-musicmogul-com">
<mm:Author>
Elvis Presley
</mm:Author>
<mm:CreationDate>
2007/08/21:12:00:00
</mm:CreationDate>
</mm:Publisher>
</CUSTOMATTRIBUTES>
<DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
</DATA>
</WRMHEADER>
I tag sono descritti di seguito.
| Nome tag | Obbligatorio | Descrizione |
|---|---|---|
| WRMHEADER | Sì | Elemento più esterno dell'oggetto di intestazione. Può contenere un elemento DATA e deve contenere un attributo version. La versione per l'intestazione è "4.2.0.0". Ogni volta che Microsoft definisce nuovi tag o attributi obbligatori, un nuovo numero di versione è associato a tali tag o attributi. Se la versione è maggiore di quella per cui è stato scritto il codice client, il codice client deve avere esito negativo, perché implica che l'intestazione contiene tag obbligatori che il client non riconosce. Se la versione è minore o uguale a quella per cui è stato scritto il codice client, il codice client può ignorare in modo sicuro eventuali tag o attributi che non comprende. |
| DATI | NO | Elemento contenitore per i dati dell'intestazione, inclusi i tag di terze parti. Solo un elemento DATA può essere incluso nell'elemento WRMHEADER . |
| PROTECTINFO | NO | Specifica zero o un elemento KIDS . Non è possibile includere più di un elemento PROTECTINFO nell'elemento DATA . |
| BAMBINI | NO | Specifica uno o più elementi KID che possono essere utilizzati per creare oggetti decrittori per il contenuto associato. Uno o zero elementi KIDS possono esistere nel nodo PROTECTINFO . |
| CAPRETTO | NO | Contiene tutti i dati chiave per una determinata licenza. Se il nodo KIDS è presente, uno o più elementi KID devono esistere nel nodo KIDS . L'elemento KID contiene gli attributi seguenti. ALGID: obbligatorio. Specifica l'algoritmo di crittografia. Deve essere impostato su: AESCTR o COCKTAIL CHECKSUM: Facoltativo. Contiene un checksum calcolato utilizzando il valore KID e la chiave di contenuto. Per informazioni dettagliate, vedere la sezione Key Checksum Algorithm (Algoritmo checksum chiave ) di questo documento. Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati deve essere vuoto. VALUE: obbligatorio. Contiene un valore GUID con ID chiave con codifica Base64. Si noti che questo VALORE GUID (DWORD, WORD, WORD, matrice a 8 BYTE) deve essere un ordine di byte endian minimo. |
| LA_URL | NO | Contiene l'URL per il servizio Web di acquisizione delle licenze. Sono consentiti solo gli URL assoluti. Non più di un elemento LA_URL può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| LUI_URL | NO | Contiene l'URL per una pagina Web di acquisizione di licenze non invisibile all'utente. Sono consentiti solo gli URL assoluti. Non più di un elemento LUI_URL può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| DS_ID | NO | ID del servizio di dominio. Non più di un elemento DS_ID può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| CUSTOMATTRIBUTES | NO | L'autore del contenuto può aggiungere codice XML arbitrario all'interno di questo elemento. Il codice Microsoft non agisce su dati contenuti in questo elemento. Non è possibile includere più di un elemento CUSTOMATTRIBUTES nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| DECRYPTORSETUP | NO | Questo tag può contenere solo il valore "ONDEMAND". Quando questo tag è presente nel nodo DATA e il relativo valore è impostato su "ONDEMAND", indica a un'applicazione che non deve aspettarsi che la catena di licenze completa per il contenuto sia disponibile per l'acquisizione o già presente nel computer client, prima di configurare il grafico multimediale. Se questo tag non è impostato, indica che un'applicazione può applicare la licenza da acquisire o già presente nel computer client, prima di configurare il grafico multimediale. Non è possibile includere più di un elemento DECRYPTORSETUP nell'elemento DATA . |
3.5. v4.1.0.0
L'intestazione PlayReady v4.1.0.0 è stata introdotta con PlayReady versione 2.0 nel settembre 2011 per supportare flussi lineari live con licenze foglia scalabili incorporate nel flusso. Questo tipo di flusso richiede ai Client di associare una licenza radice scalabile senza conoscere la chiave di crittografia del contenuto che verrà usata nel decrittore.
3.5.1. Differenze con altre versioni
Gli SDK PlayReady 2.0 e i client successivi sono in grado di elaborare sia le versioni v4.0 che v4.1 PlayReady Header. Gli SDK PlayReady precedenti restituiscono un errore di "versione non supportata" quando vengono fornite intestazioni v4.1.
Il formato dell'intestazione PlayReady v.4.1.0.0 presenta le modifiche seguenti rispetto alla versione 4.0.0.0:
- L'attributo version dell'elemento WRMHEADER è impostato sulla stringa "4.1.0.0".
- L'elemento DATA contiene un elemento DECRYPTORSETUP facoltativo.
- L'elemento KID si trova all'interno dell'elemento PROTECTINFO ed è facoltativo anziché obbligatorio.
- L'elemento KID contiene gli attributi ALGID (obbligatorio), CHECKSUM (facoltativo) e VALUE (obbligatorio).
- L'elemento KEYLEN è stato rimosso. L'attributo KEYLEN è stato usato in precedenza per disambiguare le licenze cocktail con chiavi di lunghezza diverse. L'intestazione v4.1 limiterà il supporto esclusivamente alle Cocktail Keys da 8 byte. Se si usano chiavi cocktail che non sono a 8 byte, è necessario usare le intestazioni v4.0.
- Gli elementi ALGID e CHECKSUM sono stati rimossi perché i dati sono contenuti all'interno degli attributi dell'elemento KID .
3.5.2. Formato
L'intestazione PlayReady v4.1.0.0 ha la sintassi seguente:
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.1.0.0">
<DATA>
<PROTECTINFO>
<KID ALGID="AESCTR" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
</PROTECTINFO>
<LA_URL> URL for license acquisition </LA_URL>
<LUI_URL>
URL for Non-silent license acquisition web page
</LUI_URL>
<DS_ID> base64-encoded guid </DS_ID>
<CUSTOMATTRIBUTES xmlns="">
<mm:Publisher xmlns:mm="urn:schema-musicmogul-com">
<mm:Author>
Elvis Presley
</mm:Author>
<mm:CreationDate>
2007/08/21:12:00:00
</mm:CreationDate>
</mm:Publisher>
</CUSTOMATTRIBUTES>
<DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
</DATA>
</WRMHEADER>
I tag sono descritti di seguito.
| Nome tag | Obbligatorio | Descrizione |
|---|---|---|
| WRMHEADER | Sì | Elemento più esterno dell'oggetto di intestazione. Può contenere un elemento DATA e deve contenere un attributo version. La versione dell'intestazione è "4.1.0.0". Ogni volta che Microsoft definisce nuovi tag o attributi obbligatori, un nuovo numero di versione è associato a tali tag o attributi. Se la versione è maggiore di quella per cui è stato scritto il codice client, il codice client deve avere esito negativo, perché implica che l'intestazione contiene tag obbligatori che il client non riconosce. Se la versione è minore o uguale a quella per cui è stato scritto il codice client, il codice client può ignorare in modo sicuro eventuali tag o attributi che non comprende. |
| DATI | NO | Elemento contenitore per i dati dell'intestazione, inclusi i tag di terze parti. Non è possibile includere più di un elemento DATA nell'elemento WRMHEADER . |
| PROTECTINFO | NO | Specifica zero o uno elementi KID che possono essere utilizzati per la creazione di oggetti di decodifica per il contenuto associato. Non è possibile includere più di un elemento PROTECTINFO nell'elemento DATA . |
| CAPRETTO | NO | Contiene tutti i dati chiave per una determinata licenza. Uno o zero elementi KID possono esistere nel nodo PROTECTINFO . L'elemento KID contiene gli attributi seguenti. VALUE: obbligatorio. Contiene un valore GUID con ID chiave con codifica Base64. Si noti che questo valore GUID (DWORD, WORD, WORD, matrice a 8 BYTE) deve essere in formato little-endian. ALGID: obbligatorio. Specifica l'algoritmo di crittografia. Deve essere impostato su: "AESCTR" o "COCKTAIL" CHECKSUM: Facoltativo. Contiene un checksum calcolato utilizzando il valore KID e la chiave di contenuto. Per informazioni dettagliate, vedere la sezione Key Checksum Algorithm (Algoritmo checksum chiave ) di questo documento. Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati deve essere vuoto. |
| LA_URL | NO | Contiene l'URL per il servizio Web di acquisizione delle licenze. Sono consentiti solo gli URL assoluti. Non più di un elemento LA_URL può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| LUI_URL | NO | Contiene l'URL per una pagina Web di acquisizione di licenze non invisibile all'utente. Sono consentiti solo gli URL assoluti. Non più di un elemento LUI_URL può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| DS_ID | NO | ID del servizio di dominio. Non più di un elemento DS_ID può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| CUSTOMATTRIBUTES | NO | L'autore del contenuto può aggiungere codice XML arbitrario all'interno di questo elemento. Il codice Microsoft non agisce su dati contenuti in questo elemento. Solo un elemento CUSTOMATTRIBUTES può essere incluso nell'elemento DATA . Se il nodo esiste nel codice XML WRMHeader, il relativo valore di dati non deve essere vuoto. |
| DECRYPTORSETUP | NO | Questo tag può contenere solo il valore "ONDEMAND". Quando questo tag presente nel nodo DATA e il relativo valore è impostato su "ONDEMAND", indica a un'applicazione che non deve aspettarsi che la catena di licenze completa per il contenuto sia disponibile per l'acquisizione o già presente nel computer client, prima di configurare il grafico multimediale. Se questo tag non è impostato, indica che un'applicazione può applicare la licenza da acquisire o già presente nel computer client, prima di configurare il grafico multimediale. Solo un elemento DECRYPTORSETUP può essere incluso nell'elemento DATA . |
Note per v4.1:
- Tutti i tag XML e gli attributi nell'intestazione PlayReady sono definiti da Microsoft. L'unica eccezione è il contenuto dell'elemento CUSTOMATTRIBUTES . Gli sviluppatori di applicazioni PER PC PlayReady non devono aggiungere tag personalizzati all'esterno dell'elemento CUSTOMATTRIBUTES .
- L'intestazione PlayReady deve rispettare le specifiche W3C Canonical XML v1.1.
- L'intestazione PlayReady non contiene un tag di primo livello
?XMLnecessario in XML ben formato. - È consigliabile che le dimensioni di questo campo non superino 1 KB.
3.6. v4.0.0.0
L'intestazione PlayReady v4.0.0.0 è stata introdotta con PlayReady versione 1.0 nel 2008 e consente a una singola chiave AESCTR di supportare il contenuto crittografato AES o una chiave COCKTAIL per supportare il contenuto crittografato WMDRM.
3.6.1. Esempi
Intestazione PlayReady 4.0.0.0
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0">
<DATA>
<PROTECTINFO>
<ALGID>AESCTR</ALGID>
<KEYLEN>16</KEYLEN>
</PROTECTINFO>
<KID>q5HgCTj40kGeNVhTH9Gexw==</KID>
<CHECKSUM>w+OZVr8vzrQ=</CHECKSUM>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
<CUSTOMATTRIBUTES>
<IIS_DRM_VERSION>8.0.1705.19</IIS_DRM_VERSION>
</CUSTOMATTRIBUTES>
</DATA>
</WRMHEADER>
Oggetto PlayReady con codifica Base64 contenente un'intestazione PlayReady 4.0.0.0
XAMAAAEAAQBSAzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AcQA1AEgAZwBDAFQAagA0ADAAawBHAGUATgBWAGgAVABIADkARwBlAHgAdwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgB3ACsATwBaAFYAcgA4AHYAegByAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAHIAbwBmAGYAaQBjAGkAYQBsAHMAaQB0AGUALgBrAGUAeQBkAGUAbABpAHYAZQByAHkALgBtAGUAZABpAGEAcwBlAHIAdgBpAGMAZQBzAC4AdwBpAG4AZABvAHcAcwAuAG4AZQB0AC8AUABsAGEAeQBSAGUAYQBkAHkALwA8AC8ATABBAF8AVQBSAEwAPgA8AEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AEkASQBTAF8ARABSAE0AXwBWAEUAUgBTAEkATwBOAD4AOAAuADAALgAxADcAMAA1AC4AMQA5ADwALwBJAEkAUwBfAEQAUgBNAF8AVgBFAFIAUwBJAE8ATgA+ADwALwBDAFUAUwBUAE8ATQBBAFQAVABSAEkAQgBVAFQARQBTAD4APAAvAEQAQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAEEARABFAFIAPgA=
3.6.2. Formato
L'intestazione PlayReady v4.0.0.0 ha la sintassi seguente:
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0">
<DATA>
<PROTECTINFO>
<ALGID>AESCTR</ALGID>
<KEYLEN>16</KEYLEN>
</PROTECTINFO>
<LA_URL> URL for license acquisition </LA_URL>
<LUI_URL>
URL for Non-silent license acquisition web page
</LUI_URL>
<DS_ID>base64-encoded guid</DS_ID>
<KID>base64-encoded kid</KID>
<CUSTOMATTRIBUTES xmlns="">
<mm:Publisher xmlns:mm="urn:schema-musicmogul-com">
<mm:Author>
Elvis Presley
</mm:Author>
<mm:CreationDate>
2007/08/21:12:00:00
</mm:CreationDate>
</mm:Publisher>
</CUSTOMATTRIBUTES>
<CHECKSUM>
checksum of the content key for verification
</CHECKSUM>
</DATA>
</WRMHEADER>
Nella tabella seguente vengono descritti i diversi tag.
| Nome tag | Obbligatorio | Descrizione |
|---|---|---|
| WRMHEADER | Sì | Elemento più esterno dell'oggetto di intestazione. Può contenere un elemento DATA e un attributo version. La versione dell'intestazione è "4.0.0.0". Semantica per packager: ogni volta che Microsoft definisce nuovi tag o attributi obbligatori, un nuovo numero di versione è associato a tali tag o attributi. La versione dell'intestazione PlayReady deve essere impostata sulla versione più alta dei tag e degli attributi obbligatori presenti nell'intestazione. Semantica per client: se la versione è maggiore di quella per cui è stato scritto il codice client, il codice client deve avere esito negativo perché implica che l'intestazione contiene tag obbligatori che il client non riconosce. Se la versione è minore o uguale a quella per cui è stato scritto il codice client, il codice client può ignorare in modo sicuro eventuali tag o attributi che non riconosce. |
| DATI | Sì | Elemento contenitore per i dati dell'intestazione, inclusi i tag di terze parti. |
| PROTECTINFO | Sì | Specifica il tipo di crittografia utilizzando gli elementi figlio KEYLEN e ALGID . |
| KEYLEN | Sì | Specifica la dimensione della chiave di contenuto. Deve essere impostato su 16 se ALGID è impostato su "AESCTR" e 7 se ALGID è impostato su "COCKTAIL". |
| ALGIDO | Sì | Specifica l'algoritmo di crittografia. Deve essere impostato sul valore seguente: AESCTR: corrisponde all'algoritmo AES in modalità contatore. COCKTAIL: corrisponde all'algoritmo Cocktail. |
| CAPRETTO | Sì | Contiene un valore GUID con ID chiave con codifica Base64. Si noti che questo VALORE GUID (DWORD, WORD, WORD, matrice a 8 BYTE) deve essere un ordine di byte endian minimo. |
| Checksum | NO | Contiene il checksum calcolato utilizzando il VALORE KID e la chiave di contenuto. Per informazioni dettagliate, vedere la sezione Key Checksum Algorithm. Le versioni precedenti di PlayReady considerano questo campo come richiesto, quindi deve essere incluso in qualsiasi intestazione che verrà utilizzata da una versione precedente di PlayReady. |
| LA_URL | NO | Contiene l'URL per il servizio Web di acquisizione delle licenze. Sono consentiti solo gli URL assoluti. |
| LUI_URL | NO | Contiene l'URL per una pagina Web di acquisizione di licenze non invisibile all'utente. Sono consentiti solo gli URL assoluti. |
| DS_ID | NO | ID del servizio di dominio. |
| CUSTOMATTRIBUTES | NO | L'autore del contenuto può aggiungere codice XML arbitrario all'interno di questo elemento. Il codice Microsoft non agisce su dati contenuti in questo elemento. |
Note per la versione 4.0:
- Tutti i tag XML e gli attributi nell'intestazione PlayReady sono definiti da Microsoft. L'unica eccezione è il contenuto dell'elemento CUSTOMATTRIBUTES . Gli sviluppatori di applicazioni PER PC PlayReady non devono aggiungere tag personalizzati all'esterno dell'elemento CUSTOMATTRIBUTES , in quanto ciò potrebbe scontrarsi con i tag futuri definiti da Microsoft.
- L'ordine degli elementi figlio all'interno di un elemento contenitore non ha importanza.
- Si noti che l'intestazione PlayReady non contiene un tag di primo livello
?XMLobbligatorio nel formato XML corretto. - È consigliabile che le dimensioni di questo campo non superino 1 KB.
- CHECKSUM è richiesto da PlayReady Server SDK fino alla versione 1.2. Dalla versione 1.5, PlayReady Server SDK considera CHECKSUM come facoltativo. PlayReady Porting Kit 1.2 di serie richiede il CHECKSUM. PlayReady Porting Kit 2.0 considera CHECKSUM come facoltativo.
4. Archivio licenze incorporate (ELS)
È consigliabile aggiungere un archivio licenze incorporato vuoto all'oggetto PlayReady nelle condizioni seguenti:
- L'oggetto PlayReady deve essere inserito in un file di contenuto.
- Il contenuto può essere usato in un contesto di domini PlayReady con licenze incorporate.
Ciò consente a un client PlayReady di incorporare ulteriormente una licenza associata a dominio nell'oggetto PlayReady semplicemente popolando l'archivio licenze embedded esistente e salva lo sforzo di dover ri-intestazione l'intero file con un nuovo oggetto PlayReady di dimensioni maggiori rispetto a quello iniziale.
Annotazioni
Non includere un archivio licenze incorporato vuoto in un oggetto PlayReady, destinato all'inserimento come stringa codificata in base-64 in un manifesto del client Smooth Streaming.
Annotazioni
La dimensione consigliata è 10 KB.
5. L'algoritmo di checksum della chiave
L'algoritmo checksum nell'intestazione PlayReady è progettato per proteggersi da chiavi non corrispondenti. Nei primi giorni della TECNOLOGIA DRM, i brani sono stati crittografati con chiavi etichettate in modo non corretto. Questo ha causato la riproduzione di rumore bianco quando le canzoni erano decrittografate. E se le canzoni fossero riprodotte a volume abbastanza alto, l'apparecchiatura di riproduzione sarebbe distrutta. Con il checksum, la chiave del contenuto può essere verificata come quella utilizzata per crittografare il file. L'algoritmo funziona come segue:
Per un valore ALGID impostato su "AESCBC", non è definito alcun algoritmo key checksum. L'attributo CHECKSUM deve essere omesso.
Per un valore ALGID impostato su "AESCTR", l'ID chiave a 16 byte viene crittografato con una chiave di contenuto AES a 16 byte utilizzando la modalità ECB. I primi 8 byte del buffer vengono estratti e codificati in base64.
Per un valore ALGID impostato su "COCKTAIL", seguire questa procedura:
Viene creato un buffer a 21 byte.
La chiave del contenuto viene inserita nel buffer e il resto del buffer viene riempito con zeri.
Per cinque iterazioni:
a) buffer = SHA-1 (buffer).
I primi 7 byte del buffer vengono estratti e codificati in base64.
Dopo aver eseguito questi passaggi, i byte con codifica base64 vengono usati come checksum.
6. CUSTOMATTRIBUTES
Un provider di servizi può aggiungere codice XML proprietario all'interno dell'elemento CUSTOMATTRIBUTES dell'intestazione PlayReady. Tutti i tag usati all'interno dell'elemento CUSTOMATTRIBUTES non sono in conflitto con i tag futuri definiti da Microsoft.
Il codice Microsoft non agisce su alcun codice XML all'interno di questo elemento. Il back-end del provider di servizi o il relativo codice lato client sono gli unici che in genere interpretano il valore di questo elemento. Si supponga, ad esempio, che un servizio etichetta bianca rappresenti i servizi front-end AAA, BBB, CCC. Un servizio di questo tipo può crittografare la raccolta contenuto una sola volta (poiché si tratta di un'operazione costosa), ma quando gestisce il contenuto a un utente finale, può impostare CUSTOMATTRIBUTES sul nome del servizio front-end specifico a cui l'utente finale sottoscrive. Quando l'utente finale richiede una licenza per tale contenuto, consente al servizio etichetta bianca di determinare il servizio front-end a cui l'utente finale sottoscrive, in modo che possa rilasciare una licenza diversa.
Le dimensioni di questo campo non devono superare 1 kilobyte (KB).