Novedades de PlayReady, versión 4.5

Esta página contiene información general de los cambios más significativos entre la versión 4.4 de PlayReady y la versión 4.5 de PlayReady.

Cambios generales en PlayReady versión 4.5

Desafío del cifrado con el certificado de implementación del servidor PlayReady

En versiones anteriores de PlayReady, la adquisición de licencias y otros desafíos de cliente siempre se cifran con una clave pública fija. A partir de PlayReady 4.5, un cliente que está codificado para comunicarse solo con un servidor auxiliar puede, en su lugar, cifrar los desafíos de privacidad con el certificado de implementación del servidor playReady emitido por Microsoft. Después, el SDK de PlayReady Server descifra el desafío con la clave privada correspondiente, que la aplicación sdk de PlayReady Server pasa a él, en lugar de una clave privada fija.

Hora del servidor de licencias

En versiones anteriores de PlayReady, el uso de la característica De tiempo seguro normalmente requería que la aplicación cliente hablara con un servidor de tiempo seguro independiente para obtener la hora utilizada para establecer su reloj local. A partir de PlayReady 4.5, un cliente que está codificado para comunicarse solo con un servidor auxiliar puede usar en su lugar una hora proporcionada por el SDK de PlayReady Server durante la adquisición de licencias. Para obtener más información, consulte Relojes de confianza de PlayReady.

Intercambio de claves

Con el protocolo de adquisición de licencias, un cliente y servidor de PlayReady ahora pueden intercambiar claves arbitrarias que se pueden usar para cifrar, descifrar, firmar y comprobar datos arbitrarios proporcionados por la aplicación en los que las claves están protegidas mediante PlayReady. Cuando el cliente es SL3000, las claves están protegidas por el entorno de ejecución de confianza. Para obtener más información, consulte PlayReady Key Exchange.

Directiva de marca de agua

Se ha agregado funcionalidad para simplificar el uso de la restricción explícita de salida de vídeo digital de señalización de marca de agua, tal como se define en las reglas de cumplimiento de PlayReady.

Cambios en la versión 4.5 del SDK de PlayReady Server

Cambios generales en el servidor

Las licencias de Exchange clave se pueden usar para proporcionar claves arbitrarias a un cliente durante la adquisición de licencias.

Si lo proporciona el cliente, las tecnologías de marca de agua admitidas se exponen a la aplicación del SDK de PlayReady Server. Esto simplifica el uso de la restricción de salida explícita de vídeo digital de señalización de marca de agua, tal como se define en las reglas de cumplimiento de PlayReady.

Cambios en la documentación de la API de servidor

Se ha creado y publicado la nueva documentación de la API de servidor para la versión de .NET Standard del SDK de PlayReady Server. Microsoft recomienda migrar al SDK de .NET Standard.

La documentación de la API de servidor en el archivo PlayReady.chm incluido en el paquete de documentación de PlayReady solo se aplica a la versión heredada de .NET Framework del SDK de PlayReady Server. Esta documentación ahora se considera en desuso, no se ha actualizado desde PlayReady 4.0 y no recibirá actualizaciones futuras.

La mayoría de las API de los dos SDK son idénticas, por lo que la documentación de .NET Standard debe ser suficiente para la mayoría de los propósitos. Sin embargo, hay algunas diferencias significativas en las que las clases, las interfaces y los métodos difieren.

Estas son las diferencias generales entre los dos SDK.

  1. El SDK de .NET Standard usa interfaces en muchos lugares donde el SDK de .NET Framework usa clases.

  2. Las interfaces de controlador del SDK de .NET Standard implementadas por la aplicación usan métodos asincrónicos donde el SDK de .NET Framework usa métodos sincrónicos. Por lo tanto, los nombres de api de interfaz de controlador del SDK de .Net Standard terminan con la palabra "Async" y devuelven una clase> Task<en lugar de simplemente clase (donde la clase es específica del método de interfaz de controlador).

  3. El SDK de .NET Standard es independiente del transporte. Por lo tanto, no se proporciona ningún contexto HTTP directamente a la aplicación. Al usar ASP.NET Core, consulte la documentación de ASP.NET Core, especialmente la interfaz IHttpContextAccessor.

  4. El SDK de .NET Standard no admite el protocolo de contenido de empaquetado (por ejemplo, IPackagingDataAcquisitionHandler no existe). Esta funcionalidad se restaurará en PlayReady 4.6.

Esta es una lista completa de las diferencias específicas a partir de PlayReady 4.5. Esta lista no incluye la funcionalidad que solo existe en el SDK de .NET Standard ni enumera todas las clases de empaquetado quitadas que se restaurarán.

 

Clase o interfaz de .NET Framework Equivalente de .NET Standard Diferencias
Clase ProtocolChallengeContext Interfaz IProtocolChallengeContext La propiedad Solicitud HttpRequest solo existe en el SDK de .NET Framework, como se ha descrito anteriormente.
Clase ProtocolChallenge Interfaz IProtocolChallenge Ninguno.
Interfaz IDeleteLicenseHandler Iguales ProcessDeleteLicenseDataAsync es sincrónico en el SDK de .NET Framework, como se ha descrito anteriormente.
Clase DeleteLicenseDataChallenge Interfaz IDeleteLicenseDataChallenge Ninguno.
Interfaz IDomainHandler Iguales HandleJoinDomainAsync y HandleLeaveDomainAsync son sincrónicos en el SDK de .NET Framework, como se explicó anteriormente.
JoinDomainChallenge (clase) Interfaces IDomainChallenge e IJoinDomainChallenge El método estático JoinDomainChallenge.GenerateDomainKeyPair no existe en el SDK de .NET Standard. La pérdida de esta funcionalidad es un error que se corregirá en PlayReady 4.6 agregándolo como un método estático a DomainCertificateBuilder.
Clase LeaveDomainChallenge Interfaz ILeaveDomainChallenge Ninguno.
Interfaz ILicenseAcknowledgementHandler Iguales HandleLicenseAcknowledgementAsync es sincrónico en el SDK de .NET Framework, como se ha descrito anteriormente.
LicenseAcknowledgementChallenge (clase) Interfaz ILicenseAcknowledgementChallenge Ninguno.
Interfaz ILicenseAcquisitionHandler Iguales HandleLicenseAcquisitionAsync es sincrónico en el SDK de .NET Framework, como se ha descrito anteriormente.
LicenseChallenge (clase) Interfaz ILicenseChallenge Ninguno.
Interfaz IMeteringHandler Iguales GetMeteringCertificateAsync y ProcessMeteringDataAsync son sincrónicos en el SDK de .NET Framework, como se explicó anteriormente.
Clase MeteringCertificateChallenge Interfaz IMeteringCertificateChallenge Ninguno.
Clase ProcessMeteringDataChallenge Interfaz IProcessMeteringDataChallenge Ninguno.
Interfaz ISecureStopHandler Iguales ProcessSecureStopDataAsync es sincrónico en el SDK de .NET Framework, como se ha descrito anteriormente.
Clase SecureStopDataChallenge Interfaz ISecureStopDataChallenge La sobrecarga del método GetSecureStopData que toma un ISecureStop2Handler solo existe en el SDK de .NET Framework. En su lugar, el SDK de .NET Standard carga este controlador como cualquier otro.
Interfaz ISecureStopHandler2 Iguales GetSecureStop2AESKeyAsync es sincrónico en el SDK de .NET Framework, como se ha descrito anteriormente.
Clase PlayReadyServerAuthorization Iguales Los métodos de la clase son estáticos en el SDK de .NET Framework y en la instancia del SDK de .NET Standard.

Cambios en la API de servidor

Esto es simplemente una introducción. Consulte la documentación de server API para obtener más información.

El método LicenseResponse.GetLicenses ahora devuelve una matriz vacía en lugar de null cuando no se han agregado licencias.

Se agregaron las siguientes clases y enumeraciones.

  • Clase AdvancedLicense (abstracta, hereda de License): un subconjunto de propiedades y métodos existentes de MediaLicense se movieron a esta clase y MediaLicense hereda ahora de AbstractLicense. No se requiere ningún cambio en la aplicación para usar MediaLicense.
  • Clase KeyExchangeLicense (hereda de AdvancedLicense): se usa para crear licencias que proporcionan claves arbitrarias a un cliente durante la adquisición de licencias.
  • Clase KeyExchangeRight (hereda de Right): se usa para especificar la clave y su uso permitido en una licencia de KeyExchange.
  • Enumeración KeyExchangeAlgorithm: se usa para especificar el uso permitido de una clave en una licencia de KeyExchange.
  • Clase WatermarkVendor: se usa para exponer las tecnologías de marca de agua admitidas del cliente a la aplicación.
  • Clase LicenseServerTimeCertificate: se usa para contener el certificado para firmar la hora del servidor de licencias devuelta en la respuesta de adquisición de licencias.

A continuación se agregaron a clases individuales.

  • La clase PlayReadyHeader expone si el encabezado indica compatibilidad con claves por secuencia y si solicita explícitamente una licencia o no.
  • La enumeración ContentKeyType agrega el valor KeyExchange.
  • La clase Certificate agrega propiedades de matriz de bytes que exponen el resumen del certificado y la clave pública del emisor.
  • La clase License agrega una propiedad guid que expone el identificador único de la licencia y una propiedad Right> IEnumerable<para devolver los derechos que se agregaron a la licencia.
  • La enumeración LicenseChallengeTeeAPIs agrega valores para todas las nuevas API de TEE de PK 4.5.
  • La enumeración LicenseChallengeReeFeatures agrega valores para LicenseServerTime y KeyExchange.
  • La clase LicenseChallenge agrega la lista de keyExchangeAlgorithms que admite el cliente, watermarkVendors que admite el cliente, las versiones PK del TEE y REE del cliente (que pueden o no ser iguales) y si el cliente requiere el objeto LicenseServerTime actual.
  • La clase LicenseResponse agrega una propiedad LicenseServerTimeCertificate para establecer el certificado usado para firmar la hora del servidor de licencias devuelta en la respuesta de adquisición de licencias.
  • La clase ExplicitOutputRestrictionsConstants agrega constantes para Watermark y InternalScreenOnly. Consulte las reglas de cumplimiento de PlayReady para obtener más información sobre estos guids.

Cambios en playReady Device Porting Kit versión 4.5

Cambios generales del kit de portabilidad de dispositivos

  • Todo el Kit de portabilidad de dispositivos PlayReady se ha actualizado a Microsoft Source-code Annotation Language (SAL) 2.0.
  • Algunas rutas de código no admitidas que solo se usan en las implementaciones internas de Microsoft se quitaron para eliminar la confusión y reducir los tiempos de compilación y los tamaños binarios. Se espera que se incluyan mejoras adicionales en esta área en futuras versiones.
  • Cuando sea compatible con la arquitectura subyacente del compilador y de la máquina, los tipos enteros nativos de 128 bits ahora se pueden usar para acelerar la implementación predeterminada de ECC256.
  • Se agregó una implementación predeterminada del algoritmo HMAC SHA256.

Cambios en la API del Kit de portabilidad de dispositivos

Esto es simplemente una introducción. Consulte la documentación de api proporcionada en los comentarios de código asociados en el Kit de portabilidad de dispositivos PlayReady para obtener más información.

ahora se permite llamar a DRM_CDMI_SetServercertificate con un certificado de implementación de Servidor PlayReady para la adquisición de licencias de cifrado de privacidad y otros desafíos de cliente. La función reenvía a Drm_AppContext_SetProperty en este escenario. El uso existente permanece tal cual.

Se agregaron las siguientes funciones públicas:

  • Drm_AppContext_SetProperty
  • Drm_KeyExchange_Prepare
  • Drm_KeyExchange_Perform
  • Drm_KeyExchange_Close

Se agregaron las siguientes estructuras:

  • DRM_DGP_REE_FEATURE_LIST_4_5
  • DRM_DGP_TEE_API_LIST_4_5

Se agregaron las siguientes API de TEE:

  • DRM_TEE_BASE_GetSystemTime2
  • DRM_TEE_LICPREP_PackageKey2
  • DRM_TEE_LICENSESERVERTIME_ProcessResponseData
  • DRM_TEE_DECRYPT_PrepareToDecrypt2
  • DRM_TEE_LICGEN_CompleteLicense2
  • DRM_TEE_KEYEXCHANGE_Prepare
  • DRM_TEE_KEYEXCHANGE_Perform

Se agregaron las siguientes API de TEE de OEM:

  • OEM_TEE_BASE_ECC256_SetKey
  • OEM_TEE_CRYPTO_SHA256_HMAC_VerifyMAC
  • OEM_TEE_CRYPTO_SHA256_HMAC_CreateMAC
  • OEM_TEE_PERSISTENTSTORAGE_Read
  • OEM_TEE_PERSISTENTSTORAGE_Write
  • OEM_TEE_GetSupportedWatermarkVendors

Se cambió el nombre de las siguientes API de TEE de OEM sin cambios funcionales:

Nombre anterior Nombre nuevo
OEM_TEE_DECRYPT_UnshuffleScalableContentKeys OEM_TEE_BASE_UnshuffleScalableContentKeys
OEM_TEE_DECRYPT_CalculateContentKeyPrimeWithAES128Key OEM_TEE_BASE_CalculateContentKeyPrimeWithAES128Key
OEM_TEE_DECRYPT_DeriveScalableKeyWithAES128Key OEM_TEE_BASE_DeriveScalableKeyWithAES128Key
OEM_TEE_DECRYPT_InitUplinkXKey OEM_TEE_BASE_InitUplinkXKey
OEM_TEE_DECRYPT_UpdateUplinkXKey OEM_TEE_BASE_UpdateUplinkXKey
OEM_TEE_DECRYPT_DecryptContentKeysWithDerivedKeys OEM_TEE_BASE_DecryptContentKeysWithDerivedKeys
OEM_TEE_DECRYPT_EnforcePolicy OEM_TEE_POLICY_Enforce