Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
1. Introducción
Esta especificación se aplica a cualquier producto final creado con el SDK de PlayReady Server, playReady Device Porting Kit, Windows, Xbox, Windows Phone y Silverlight.
1.1. Historial de cambios
| Versión | Cambio |
|---|---|
| 8 de septiembre de 2021 | Agregue el atributo OPCIONAL LICENSEREQUESTED al nodo PROTECTINFO. |
| 1 de noviembre de 2017 | Agregue la sección Requisitos de sintaxis. Corrección de varios ejemplos con un orden de atributo incorrecto (los atributos deben estar en orden alfabético) |
| 12 de julio de 2017 | Agregue la sección PlayReady Header 4.3.0.0, compatible a partir de PlayReady versión 4. Se ha agregado un requisito de sintaxis que todos los nodos XML deben cerrarse explícitamente mediante una etiqueta de cierre. |
| 10 de abril de 2015 | Agregue la sección PlayReady Header 4.2.0.0, compatible a partir de PlayReady versión 3. |
| Septiembre de 2011 | Agregue la sección PlayReady Header 4.1.0.0, compatible a partir de PlayReady versión 2. |
| Agosto de 2008 | Versión inicial que documenta el encabezado de PlayReady 4.0.0.0 compatible con PlayReady versión 1 |
2. Objeto PlayReady (PRO)
El objeto PlayReady (PRO) contiene los siguientes campos.
| Nombre del campo | Tipo Field | Tamaño (bits) | Descripción |
|---|---|---|---|
| Largura | DWORD | 32 | Longitud del objeto PlayReady en bytes. Este valor no debe superar los 15 kilobytes (KB). |
| Recuento de registros de objetos PlayReady | PALABRA | 16 | Especifica el número de registros de objetos PlayReady en el objeto PlayReady. |
| Registros de objetos PlayReady | Matriz BYTE | Varía | Contiene un número variable de registros que contienen información relacionada con licencias y adquisición de licencias. |
2.1 Registros de objetos PlayReady
El objeto PlayReady consta de subobjetos adicionales denominados Registros de objetos PlayReady. Los registros de objeto PlayReady contienen los campos siguientes.
| Nombre del campo | Tipo Field | Tamaño (bits) | Descripción |
|---|---|---|---|
| Tipo de registro | PALABRA | 16 | Especifica el tipo de datos almacenados en el valor de registro. |
| Longitud del registro | PALABRA | 16 | Especifica el tamaño en bytes del valor de registro. |
| Valor de registro | Matriz BYTE | Varía | El contenido del objeto depende del valor de Tipo de registro. |
El campo Tipo de registro tiene uno de los siguientes valores.
| Tipo de valor | Descripción |
|---|---|
| 0x0001 | Indica que el registro contiene un encabezado PlayReady (PRH). |
| 0x0002 | Reservado. |
| 0x0003 | Indica un almacén de licencias incrustado (ELS). |
2.2. Ejemplos de objetos PlayReady
En la ilustración siguiente se muestra un archivo MP4 segmentado con un objeto PlayReady que contiene un encabezado playReady:

En la ilustración siguiente se muestra la vista HEX de este archivo MP4:

3. Encabezado de PlayReady (PRH)
Un cliente usa el encabezado PlayReady (PRH) para buscar o adquirir una licencia para el fragmento de contenido en el que se almacena. Se codifica mediante UTF-16.
Matriz de compatibilidad de versiones 3.1
| Encabezado de PlayReady v4.3.0.0 | Encabezado de PlayReady v4.2.0.0 | Encabezado de PlayReady v4.1.0.0 | Encabezado de PlayReady v4.0.0.0 | |
|---|---|---|---|---|
| Clientes basados en sdk de PlayReady 4.0 (consulte la nota 1) |
✓ | ✓ | ✓ | ✓ |
| Clientes basados en sdk de PlayReady 3.0 (consulte la nota 2) |
✓ | ✓ | ✓ | |
| Clientes basados en sdk de PlayReady 2.x (consulte la nota 3) |
✓ | ✓ | ||
| Clientes basados en SDK de PlayReady 1.x (consulte la nota 4) |
✓ |
Notas:
- La versión 1709 o posterior de Xbox One es cliente de PlayReady 4.X.
- Windows 10 (todas las versiones) y Xbox One versión 1703 o inferior son clientes de PlayReady 3.X. Los dispositivos no Windows más recientes (por ejemplo, televisores inteligentes) publicados después de 2017 son los clientes de PlayReady 3.X.
- Silverlight y Windows 8, 8.1 son clientes de PlayReady 2.X. La mayoría de los dispositivos que no son Windows (por ejemplo, televisores inteligentes) publicados entre 2011 y 2017 son los clientes de PlayReady 2.X.
- La mayoría de los dispositivos que no son Windows (por ejemplo, televisores inteligentes) publicados entre 2008 y 2011 son clientes playReady 1.X.
3.2. Requisitos de sintaxis
3.2.1. Con formato canónico
El XML debe ser canónico.
3.2.2. Todos los nombres de nodos y atributos distinguen entre mayúsculas y minúsculas.
Compatible
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
No está soportado
<KID value="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<kid VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </kid>
3.2.3. Las etiquetas de cierre deben ser explícitas
Todos los nodos XML deben cerrarse explícitamente mediante una etiqueta de cierre, incluidas las de los nodos dentro del nodo CUSTOMATTRIBUTES.
Compatible
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo"> </MyNode> </CUSTOMATTRIBUTES>
No está soportado
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> <CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo"> </CUSTOMATTRIBUTES>
3.2.4. Atributos de espacio de nombres
Todos los atributos de espacio de nombres deben aparecer antes que los atributos que no son de espacio de nombres.
Compatible
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
No está soportado
<WRMHEADER version="4.3.0.0" xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader>
3.2.5. Orden alfabético
Todos los atributos deben estar en orden alfabético, incluidos los de los nodos dentro del nodo CUSTOMATTRIBUTES.
Compatible
<KID ALGID="AESCBC" VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<CUSTOMATTRIBUTES> <MyNode BarAttribute="Bar" FooAttribute="Foo"> </MyNode> </CUSTOMATTRIBUTES>
No está soportado
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg==" ALGID="AESCBC"> </KID>
<CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo" BarAttribute="Bar"> </MyNode> </CUSTOMATTRIBUTES>
3.3. v4.3.0.0
PlayReady Header v4.3.0.0 se introdujo con PlayReady versión 4.0 en septiembre de 2017 para admitir claves AESCBC en un encabezado. Esta compatibilidad permite el cifrado de contenido en modo CBC, en particular para los modos de cifrado común "cbcs". También aumenta la interoperabilidad de los clientes playReady con otros sistemas DRM, así como el contenido existente.
3.3.1. Diferencias con otras versiones
A partir de la versión 4.0, el SDK y los clientes de PlayReady pueden procesar las versiones de encabezado de PlayReady 4.0, 4.1, 4.2 y 4.3. Los SDK de PlayReady anteriores a la versión 4.0 devolverán un error de "versión no compatible" cuando se proporcionen encabezados v4.3.
El formato de encabezado playReady v.4.3.0.0 tiene los siguientes cambios en comparación con v4.2.0.0:
- El atributo de versión del elemento WRMHEADER se establece en la cadena "4.3.0.0".
- Es posible que falte el atributo ALGID ubicado dentro del elemento KID en una solicitud de adquisición de licencias. Microsoft recomienda que el atributo ALGID tenga un valor válido en el encabezado incluido en el contenido.
- Cuando el atributo ALGID está presente en cualquier elemento KID y hay más de un elemento KID en el elemento KIDS , todos los elementos KID deben incluir el atributo ALGID y los valores de atributo deben ser los mismos.
- El atributo ALGID ubicado dentro del elemento KID ahora puede tener el valor "AESCBC", además de "AESCTR", siempre que:
- Cuando el atributo ALGID se establece en "AESCBC", no se debe incluir el atributo CHECKSUM .
3.3.2. Ejemplos
A continuación se muestra un ejemplo de un encabezado de PlayReady 4.3.0.0 con claves 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>
A continuación se muestra un ejemplo de un encabezado PlayReady 4.3.0.0 con un ALGID que falta:
<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
PlayReady Header v4.3.0.0 tiene la siguiente sintaxis:
<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>
Las etiquetas se describen a continuación.
| Nombre de etiqueta | Obligatorio | Descripción |
|---|---|---|
| WRMHEADER | Sí | Elemento más externo del objeto de encabezado. Puede contener un elemento DATA y debe contener un atributo de versión. La versión del encabezado es "4.3.0.0". Cada vez que Microsoft define nuevas etiquetas o atributos obligatorios, se asocia un nuevo número de versión a esas etiquetas o atributos. Si la versión es mayor que la para la que se escribió el código de cliente, el código de cliente debe producir un error, ya que implica que el encabezado contiene etiquetas obligatorias que el cliente no entiende. Si la versión es menor o igual que para la que se escribió el código de cliente, el código de cliente puede omitir de forma segura cualquier etiqueta o atributo que no comprenda. |
| DATOS | No | Elemento contenedor para los datos de encabezado, incluidas las etiquetas de terceros. No se puede incluir más de un elemento DATA en el elemento WRMHEADER . |
| PROTECTINFO | No | Especifica cero o un elemento KIDS . No se puede incluir más de un elemento PROTECTINFO en el elemento DATA . Opcionalmente, incluye el atributo LICENSEREQUESTED. |
| LICENCIA SOLICITADA | No | Especifica si la adquisición de licencias solicita al menos una licencia o no. Debe establecerse en "true" o "false" si está presente y se supone que se establece en "true" si no está presente. Las versiones de PlayReady omiten este atributo antes de la versión 4.5. La aplicación playReady Server SDK es gratuita para omitir este atributo; solo es informativo. |
| NIÑOS | No | Especifica uno o varios elementos KID que se pueden usar para crear objetos de descifrador para el contenido asociado. Puede existir uno o cero elementos KIDS en el nodo PROTECTINFO . |
| CABRITO | No | Contiene todos los datos clave de una licencia determinada. Si el nodo KIDS está presente, uno o varios elementos KID deben existir en el nodo KIDS . El elemento KID contiene los atributos siguientes. ALGID: opcional. Especifica el algoritmo de cifrado. Puede establecerse en: "AESCTR", "AESCBC" o "COCKTAIL". CHECKSUM: opcional. Solo para claves de cifrado AESCTR. Contiene una suma de comprobación calculada mediante el atributo KID VALUE y la clave de contenido. Consulte la sección Algoritmo de suma de comprobación de clave de este documento para obtener más información. Si este nodo existe en el XML WRMHeader, su valor de datos debe estar vacío. VALOR: obligatorio. Contiene un valor GUID de identificador de clave codificado en base64. Tenga en cuenta que este GUID (DWORD, WORD, WORD, matriz de 8 bytes) debe estar en orden de bytes little endian. |
| LA_URL | No | Contiene la dirección URL del servicio web de adquisición de licencias. Solo se permiten direcciones URL absolutas. No se puede incluir más de un elemento LA_URL en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| LUI_URL | No | Contiene la dirección URL de una página web de adquisición de licencias no silenciosa. Solo se permiten direcciones URL absolutas. No se puede incluir más de un elemento LUI_URL en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| DS_ID | No | Id. de servicio para el servicio de dominio. Solo se puede incluir hasta un elemento DS_ID en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| CUSTOMATTRIBUTES | No | El autor del contenido puede agregar XML personalizado dentro de este elemento. El código de Microsoft no actúa en ningún dato contenido dentro de este elemento. No se puede incluir más de un elemento CUSTOMATTRIBUTES en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| Configuración del Descifrador | No | Esta etiqueta solo puede contener el valor "ONDEMAND". Cuando esta etiqueta está presente en el nodo DATA y su valor se establece en "ONDEMAND", entonces indica a una aplicación que no debe esperar que la cadena de licencias completa para el contenido esté disponible para la adquisición, o ya presente en el equipo cliente, antes de configurar el grafo multimedia. Si no se establece esta etiqueta, indica que una aplicación puede exigir que se adquiera la licencia, o que ya esté presente en el equipo cliente, antes de configurar el gráfico multimedia. No se puede incluir más de un elemento DECRYPTORSETUP en el elemento DATA . |
3.4. v4.2.0.0
PlayReady Header v4.2.0.0 se introdujo con PlayReady versión 3.0 en abril de 2015 para permitir varios KID en un único encabezado. Esto significa que se pueden usar varias claves para cifrar un único recurso, por ejemplo, cuando las pistas de audio deben cifrarse con una clave diferente a las pistas de vídeo.
3.4.1. Diferencias con otras versiones
Los SDK y clientes de PlayReady 3.0 y posteriores son capaces de procesar las versiones de encabezado PlayReady v4.0, v4.1 y v4.2. Los SDK anteriores de PlayReady devuelven un error de "versión no compatible" cuando se proporcionan encabezados v4.2. Al usar el encabezado v4.2, el cliente debe saber qué versión del servidor usa a través de un mecanismo personalizado específico de la aplicación. Los SDK de PlayReady no proporcionan ninguna manera nativa de obtener esta información de versión.
El formato de encabezado playReady v.4.2.0.0 tiene los siguientes cambios en comparación con v4.1.0.0:
- El atributo de versión del elemento WRMHEADER se establece en la cadena "4.2.0.0".
- El elemento KID ubicado dentro del elemento PROTECTINFO se ha cambiado de nombre a KIDS y sigue siendo opcional.
- Varios elementos KID se encuentran dentro del elemento KIDS .
3.4.2. Ejemplo
Encabezado de PlayReady 4.2.0.0 con dos claves AESCTR:
<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
PlayReady Header v4.2.0.0 tiene la siguiente sintaxis:
<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>
Las etiquetas se describen a continuación.
| Nombre de etiqueta | Obligatorio | Descripción |
|---|---|---|
| WRMHEADER | Sí | Elemento más externo del objeto de encabezado. Puede contener un elemento DATA y debe contener un atributo de versión. La versión del encabezado es "4.2.0.0". Cada vez que Microsoft define nuevas etiquetas o atributos obligatorios, se asocia un nuevo número de versión a esas etiquetas o atributos. Si la versión es mayor que la para la que se escribió el código de cliente, el código de cliente debe producir un error, ya que implica que el encabezado contiene etiquetas obligatorias que el cliente no entiende. Si la versión es menor o igual que para la que se escribió el código de cliente, el código de cliente puede omitir de forma segura cualquier etiqueta o atributo que no comprenda. |
| DATOS | No | Elemento contenedor para los datos de encabezado, incluidas las etiquetas de terceros. Solo se puede incluir hasta un elemento DATA en el elemento WRMHEADER . |
| PROTECTINFO | No | Especifica cero o un elemento KIDS . No se puede incluir más de un elemento PROTECTINFO en el elemento DATA . |
| NIÑOS | No | Especifica uno o varios elementos KID que se pueden usar para crear objetos de descifrador para el contenido asociado. Puede existir uno o cero elementos KIDS en el nodo PROTECTINFO . |
| CABRITO | No | Contiene todos los datos clave de una licencia determinada. Si el nodo KIDS está presente, uno o varios elementos KID deben existir en el nodo KIDS . El elemento KID contiene los atributos siguientes. ALGID: Obligatorio. Especifica el algoritmo de cifrado. Debe establecerse en: AESCTR o COCKTAIL CHECKSUM: Opcional. Contiene una suma de comprobación calculada mediante el valor KID y la clave de contenido. Consulte la sección Algoritmo de suma de comprobación de clave de este documento para obtener más información. Si este nodo existe en el XML WRMHeader, su valor de datos debe estar vacío. VALOR: obligatorio. Contiene un valor GUID de identificador de clave codificado en base64. Tenga en cuenta que este GUID (DWORD, WORD, WORD, matriz de 8 bytes) debe estar en orden de bytes little endian. |
| LA_URL | No | Contiene la dirección URL del servicio web de adquisición de licencias. Solo se permiten direcciones URL absolutas. No se puede incluir más de un elemento LA_URL en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| LUI_URL | No | Contiene la dirección URL de una página web de adquisición de licencias no silenciosa. Solo se permiten direcciones URL absolutas. No se puede incluir más de un elemento LUI_URL en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| DS_ID | No | Id. de servicio para el servicio de dominio. No se puede incluir más de un elemento DS_ID en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| CUSTOMATTRIBUTES | No | El autor del contenido puede agregar XML arbitrario dentro de este elemento. El código de Microsoft no actúa en ningún dato contenido dentro de este elemento. No se puede incluir más de un elemento CUSTOMATTRIBUTES en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| Configuración del Descifrador | No | Esta etiqueta solo puede contener el valor "ONDEMAND". Cuando esta etiqueta está presente en el nodo DATA y su valor se establece en "ONDEMAND", entonces indica a una aplicación que no debe esperar que la cadena de licencias completa para el contenido esté disponible para la adquisición, o ya presente en el equipo cliente, antes de configurar el grafo multimedia. Si no se establece esta etiqueta, indica que una aplicación puede exigir que se adquiera la licencia, o que ya esté presente en el equipo cliente, antes de configurar el gráfico multimedia. No se puede incluir más de un elemento DECRYPTORSETUP en el elemento DATA . |
3.5. v4.1.0.0
El encabezado de PlayReady v4.1.0.0 se introdujo con PlayReady versión 2.0 en septiembre de 2011 para admitir secuencias lineales en vivo con licencias de hojas escalables incrustadas en la secuencia. Este tipo de secuencia requiere que los clientes enlacen una licencia raíz escalable sin tener conocimiento de la clave de cifrado de contenido que se usará en el descifrador.
3.5.1. Diferencias con otras versiones
Los SDK de PlayReady 2.0 y los clientes posteriores pueden procesar las versiones de encabezado de PlayReady v4.0 y v4.1. Los SDK anteriores de PlayReady devuelven un error de "versión no compatible" cuando se proporcionan encabezados v4.1.
El formato de encabezado playReady v.4.1.0.0 tiene los siguientes cambios en comparación con v4.0.0.0:
- El atributo de versión del elemento WRMHEADER se establece en la cadena "4.1.0.0".
- El elemento DATA contiene un elemento DECRYPTORSETUP opcional.
- El elemento KID se encuentra dentro del elemento PROTECTINFO y es opcional en lugar de necesario.
- El elemento KID contiene los atributos ALGID (obligatorio), CHECKSUM (opcional) y VALUE (obligatorio).
- Se ha quitado el elemento KEYLEN . El atributo KEYLEN se usó anteriormente para desambiguar las licencias de cócteles con claves de longitud diferentes. El encabezado v4.1 impedirá la capacidad de admitir cualquier elemento que no sean claves de cóctel de 8 bytes. Si utiliza claves de cóctel que no sean de 8 bytes, debe usar encabezados v4.0.
- Los elementos ALGID y CHECKSUM se han quitado desde que sus datos se encuentran dentro de los atributos del elemento KID .
3.5.2. Formato
PlayReady Header v4.1.0.0 tiene la sintaxis siguiente:
<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>
Las etiquetas se describen a continuación.
| Nombre de etiqueta | Obligatorio | Descripción |
|---|---|---|
| WRMHEADER | Sí | Elemento más externo del objeto de encabezado. Puede contener un elemento DATA y debe contener un atributo de versión. La versión del encabezado es "4.1.0.0". Cada vez que Microsoft define nuevas etiquetas o atributos obligatorios, se asocia un nuevo número de versión a esas etiquetas o atributos. Si la versión es mayor que la para la que se escribió el código de cliente, el código de cliente debe producir un error, ya que implica que el encabezado contiene etiquetas obligatorias que el cliente no entiende. Si la versión es menor o igual que para la que se escribió el código de cliente, el código de cliente puede omitir de forma segura cualquier etiqueta o atributo que no comprenda. |
| DATOS | No | Elemento contenedor para los datos de encabezado, incluidas las etiquetas de terceros. No se puede incluir más de un elemento DATA en el elemento WRMHEADER . |
| PROTECTINFO | No | Especifica cero o uno de los elementos KID que se pueden usar para crear objetos de descifrador para el contenido asociado. No se puede incluir más de un elemento PROTECTINFO en el elemento DATA . |
| CABRITO | No | Contiene todos los datos clave de una licencia determinada. Puede existir uno o cero elementos KID en el nodo PROTECTINFO . El elemento KID contiene los atributos siguientes. VALOR: obligatorio. Contiene un valor GUID de identificador de clave codificado en base64. Tenga en cuenta que este GUID (DWORD, WORD, WORD, matriz de 8 bytes) debe ser un orden de bytes little endian. ALGID: Obligatorio. Especifica el algoritmo de cifrado. Debe establecerse en: "AESCTR" o "COCKTAIL" CHECKSUM: Opcional. Contiene una suma de comprobación calculada mediante el valor KID y la clave de contenido. Consulte la sección Algoritmo de suma de comprobación de clave de este documento para obtener más información. Si este nodo existe en el XML WRMHeader, su valor de datos debe estar vacío. |
| LA_URL | No | Contiene la dirección URL del servicio web de adquisición de licencias. Solo se permiten direcciones URL absolutas. No se puede incluir más de un elemento LA_URL en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| LUI_URL | No | Contiene la dirección URL de una página web de adquisición de licencias no silenciosa. Solo se permiten direcciones URL absolutas. No se puede incluir más de un elemento LUI_URL en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| DS_ID | No | Id. de servicio para el servicio de dominio. No se puede incluir más de un elemento DS_ID en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| CUSTOMATTRIBUTES | No | El autor del contenido puede agregar XML arbitrario dentro de este elemento. El código de Microsoft no actúa en ningún dato contenido dentro de este elemento. Solo se puede incluir hasta un elemento CUSTOMATTRIBUTES en el elemento DATA . Si este nodo existe en el XML WRMHeader, su valor de datos no debe estar vacío. |
| Configuración del Descifrador | No | Esta etiqueta solo puede contener el valor "ONDEMAND". Cuando esta etiqueta presente en el nodo DATA y su valor se establece en "ONDEMAND", indica a una aplicación que no debe esperar que la cadena de licencias completa del contenido esté disponible para la adquisición, o ya esté presente en el equipo cliente, antes de configurar el gráfico multimedia. Si no se establece esta etiqueta, indica que una aplicación puede exigir que se adquiera la licencia, o que ya esté presente en el equipo cliente, antes de configurar el gráfico multimedia. Solo se puede incluir hasta un elemento DECRYPTORSETUP en el elemento DATA . |
Notas de v4.1:
- Microsoft define todas las etiquetas y atributos XML del encabezado PlayReady. La única excepción es el contenido del elemento CUSTOMATTRIBUTES . Los desarrolladores de aplicaciones de PC playReady no deben agregar etiquetas personalizadas fuera del elemento CUSTOMATTRIBUTES .
- El encabezado PlayReady debe cumplir las especificaciones W3C Canonical XML v1.1.
- El encabezado PlayReady no contiene una etiqueta de nivel
?XMLsuperior necesaria en XML con formato correcto. - Se recomienda que el tamaño de este campo no supere los 1 KB.
3.6. v4.0.0.0
PlayReady Header v4.0.0.0 se introdujo con PlayReady versión 1.0 en 2008 y permite que una sola clave AESCTR admita contenido cifrado AES o una clave COCKTAIL para admitir contenido cifrado WMDRM.
3.6.1. Ejemplos
Encabezado de 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>
Objeto PlayReady codificado en Base64 que contiene un encabezado playReady 4.0.0.0
XAMAAAEAAQBSAzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AcQA1AEgAZwBDAFQAagA0ADAAawBHAGUATgBWAGgAVABIADkARwBlAHgAdwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgB3ACsATwBaAFYAcgA4AHYAegByAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAHIAbwBmAGYAaQBjAGkAYQBsAHMAaQB0AGUALgBrAGUAeQBkAGUAbABpAHYAZQByAHkALgBtAGUAZABpAGEAcwBlAHIAdgBpAGMAZQBzAC4AdwBpAG4AZABvAHcAcwAuAG4AZQB0AC8AUABsAGEAeQBSAGUAYQBkAHkALwA8AC8ATABBAF8AVQBSAEwAPgA8AEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AEkASQBTAF8ARABSAE0AXwBWAEUAUgBTAEkATwBOAD4AOAAuADAALgAxADcAMAA1AC4AMQA5ADwALwBJAEkAUwBfAEQAUgBNAF8AVgBFAFIAUwBJAE8ATgA+ADwALwBDAFUAUwBUAE8ATQBBAFQAVABSAEkAQgBVAFQARQBTAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=
3.6.2. Formato
PlayReady Header v4.0.0.0 tiene la siguiente sintaxis:
<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>
En la tabla siguiente se describen las distintas etiquetas.
| Nombre de etiqueta | Obligatorio | Descripción |
|---|---|---|
| WRMHEADER | Sí | Elemento más externo del objeto de encabezado. Puede contener un elemento DATA y un atributo de versión. La versión del encabezado es "4.0.0.0". Semántica para packager: Cada vez que Microsoft define nuevas etiquetas o atributos obligatorios, se asocia un nuevo número de versión a esas etiquetas o atributos. La versión del encabezado PlayReady debe establecerse en el máximo de las versiones de las etiquetas y atributos obligatorios presentes en el encabezado. Semántica para Client: si la versión es mayor que la para la que se escribió el código de cliente, el código de cliente debe producir un error porque implica que el encabezado contiene etiquetas obligatorias que el cliente no entiende. Si la versión es menor o igual que para la que se escribió el código de cliente, el código de cliente puede omitir de forma segura las etiquetas o atributos que no entiende. |
| DATOS | Sí | Elemento contenedor para los datos de encabezado, incluidas las etiquetas de terceros. |
| PROTECTINFO | Sí | Especifica el tipo de cifrado mediante los elementos secundarios KEYLEN y ALGID . |
| KEYLEN | Sí | Especifica el tamaño de la clave de contenido. Debe establecerse en 16 si ALGID está establecido en "AESCTR" y 7 si ALGID está establecido en "COCKTAIL". |
| ALGID | Sí | Especifica el algoritmo de cifrado. Debe establecerse en el siguiente valor: AESCTR: corresponde al algoritmo AES en modo contador. COCKTAIL: corresponde al algoritmo de cóctel. |
| CABRITO | Sí | Contiene un valor GUID de identificador de clave codificado en base64. Tenga en cuenta que este GUID (DWORD, WORD, WORD, matriz de 8 bytes) debe estar en orden de bytes little endian. |
| CHECKSUM | No | Contiene la suma de comprobación calculada mediante el valor KID y la clave de contenido. Consulte la sección Algoritmo de suma de comprobación de claves para obtener más información. Las versiones anteriores de PlayReady trataron este campo según sea necesario, por lo que debe incluirse en cualquier encabezado que vaya a consumir una versión anterior de PlayReady. |
| LA_URL | No | Contiene la dirección URL del servicio web de adquisición de licencias. Solo se permiten direcciones URL absolutas. |
| LUI_URL | No | Contiene la dirección URL de una página web de adquisición de licencias no silenciosa. Solo se permiten direcciones URL absolutas. |
| DS_ID | No | Id. de servicio para el servicio de dominio. |
| CUSTOMATTRIBUTES | No | El autor del contenido puede agregar XML arbitrario dentro de este elemento. El código de Microsoft no actúa en ningún dato contenido dentro de este elemento. |
Notas de v4.0:
- Microsoft define todas las etiquetas y atributos XML del encabezado PlayReady. La única excepción es el contenido del elemento CUSTOMATTRIBUTES . Los desarrolladores de aplicaciones de PC playReady no deben agregar etiquetas personalizadas fuera del elemento CUSTOMATTRIBUTES , ya que esto puede entrar en conflicto con etiquetas futuras que Microsoft define.
- El orden de los elementos secundarios dentro de un elemento contenedor no importa.
- Tenga en cuenta que el encabezado PlayReady no contiene una etiqueta de nivel
?XMLsuperior necesaria en XML con formato correcto. - Se recomienda que el tamaño de este campo no supere los 1 KB.
- EL SDK del servidor playReady requiere CHECKSUM hasta la versión 1.2. Desde la versión 1.5, el SDK de PlayReady Server trata checksUM como opcional. El kit de portabilidad de PlayReady 1.2 listo para usar requiere CHECKSUM. PlayReady Porting Kit 2.0 trata checksUM como opcional.
4. Tienda de licencias incorporada (ELS)
Se recomienda agregar un almacén de licencias incrustado vacío al objeto PlayReady en las condiciones siguientes:
- El objeto PlayReady se va a insertar en un archivo de contenido.
- El contenido se puede usar en un contexto de dominios de PlayReady con licencias incrustadas.
Esto permite que un cliente de PlayReady inserte aún más una licencia enlazada a un dominio en el objeto PlayReady simplemente rellenando el almacén de licencias incrustado existente y ahorra el esfuerzo de tener que volver a encabezado todo el archivo con un nuevo objeto PlayReady de un tamaño mayor que el del inicial.
Nota:
No incluya un almacén de licencias incrustado vacío en un objeto PlayReady, destinado a insertarse como una cadena base-64 en un manifiesto de cliente de Smooth Streaming.
Nota:
El tamaño recomendado es de 10 KB.
5. Algoritmo de suma de comprobación principal
El algoritmo de suma de comprobación del encabezado de PlayReady está diseñado para protegerse frente a claves no coincidentes. En los primeros días de DRM, las canciones se cifraron con claves etiquetadas incorrectamente. El resultado era que se reproducía ruido blanco al descifrar las canciones. Y si las canciones se reproducían lo suficientemente alto, se destruía el equipo de reproducción. Con la suma de comprobación, se puede verificar que la clave de contenido es la utilizada para cifrar el archivo. El algoritmo funciona de la siguiente manera:
Para un valor ALGID establecido en "AESCBC", no hay ningún algoritmo de verificación de suma de clave definido. Se debe omitir el atributo CHECKSUM .
Para un valor ALGID establecido en "AESCTR", el identificador de clave de 16 bytes se cifra con una clave de contenido AES de 16 bytes mediante el modo ECB. Los primeros 8 bytes del búfer se extraen y se codifican en base64.
Para un valor ALGID establecido en "COCKTAIL", realice los pasos siguientes:
Se crea un búfer de 21 bytes.
La clave de contenido se coloca en el búfer y el resto del búfer se rellena con ceros.
Para cinco iteraciones:
a) búfer = SHA-1 (búfer).
Los primeros 7 bytes del búfer se extraen y se codifican en base64.
Una vez realizados estos pasos, los bytes codificados en base64 se usan como suma de comprobación.
6. CUSTOMATTRIBUTES
Un proveedor de servicios puede agregar XML propietario dentro del elemento CUSTOMATTRIBUTES del encabezado PlayReady. Se garantiza que las etiquetas usadas dentro del elemento CUSTOMATTRIBUTES no entren en conflicto con las etiquetas futuras definidas por Microsoft.
El código de Microsoft no actúa en ningún XML dentro de este elemento. El back-end del proveedor de servicios o su código del lado cliente son los únicos que normalmente interpretan el valor de este elemento. Por ejemplo, supongamos que un servicio de etiqueta blanca representa los servicios front-end AAA, BBB, CCC. Este servicio puede cifrar su biblioteca de contenido solo una vez (ya que es una operación costosa), pero cuando sirve contenido a un usuario final, puede establecer CUSTOMATTRIBUTES en el nombre del servicio front-end específico al que se suscribe el usuario final. Cuando el usuario final solicita una licencia para ese contenido, esto permite al servicio de etiqueta blanca determinar a qué servicio front-end se suscribe el usuario final, de modo que pueda emitir una licencia diferente.
El tamaño de este campo no debe superar los 1 kilobytes (KB).