Compartir vía


Cómo determinar qué características admite un cliente

A partir de PlayReady Device Porting Kit versión 4.4, el cliente envía información sobre las características que admite al servidor de licencias como parte de su desafío de adquisición de licencias. Esto incluye las características del entorno de ejecución enriquecido (REE) y las características del entorno de ejecución de confianza (TEE).

A partir de la versión 4.4 del SDK de PlayReady Server, esta información está disponible públicamente para una aplicación a través de la clase LicenseChallenge. (Las versiones anteriores del SDK de PlayReady Server omitirán esta información si están presentes en el desafío de adquisición de licencias). En esta página se describe cómo usar esta característica para tomar decisiones en una aplicación de servidor en función de qué funcionalidad ha implementado el cliente.

Las características se exponen a través de la clase LicenseChallenge en tres catagorías diferentes: Propiedades de TEE, API de TEE y características de REE. Para acceder a una categoría individual de características de cliente, puede usar las propiedades del desafío de licencia para obtener una lista de enumeraciones correspondientes a cada característica o acceder al XML sin formato que contiene información de características enviada dentro del desafío de licencia. Las características expuestas en la clase LicenseChallenge a partir de la versión 4.4 se enumeran a continuación con sus valores de enumeración correspondientes.

TeePropertyList:
SUPPORTS_HEVC_HW_DECODING
SUPPORTS_REMOTE_PROVISIONING
SUPPORTS_PRE_PROCESS_ENCRYPTED_DATA
REQUIRES_PRE_PROCESS_ENCRYPTED_DATA_WITH_FULL_FRAMES
REQUIRES_SAMPLE_PROTECTION
SUPPORTS_SECURE_CLOCK
SUPPORTS_SECURE_STOP
SUPPORTS_SECURE_HDCP_TYPE_1
REQUIRES_PREPARE_POLICY_INFO
SUPPORTS_DEBUG_TRACING
REQUIRES_MINIMAL_REVOCATION_DATA
SUPPORTS_OPTIMIZED_CONTENT_KEY2

TeeApiList:
DRM_TEE_BASE_AllocTEEContext
DRM_TEE_BASE_FreeTEEContext
DRM_TEE_BASE_SignDataWithSecureStoreKey
DRM_TEE_BASE_CheckDeviceKeys
DRM_TEE_BASE_GetDebugInformation
DRM_TEE_BASE_GenerateNonce
DRM_TEE_BASE_GetSystemTime
DRM_TEE_LPROV_GenerateDeviceKeys
DRM_TEE_RPROV_GenerateBootstrapChallenge
DRM_TEE_RPROV_ProcessBootstrapResponse
DRM_TEE_RPROV_GenerateProvisioningRequest
DRM_TEE_RPROV_ProcessProvisioningResponse
DRM_TEE_LICPREP_PackageKey
DRM_TEE_SAMPLEPROT_PrepareSampleProtectionKey
DRM_TEE_DECRYPT_PreparePolicyInfo
DRM_TEE_DECRYPT_PrepareToDecrypt
DRM_TEE_DECRYPT_CreateOEMBlobFromCDKB
DRM_TEE_AES128CTR_DecryptContent
DRM_TEE_SIGN_SignHash
DRM_TEE_DOM_PackageKeys
DRM_TEE_RESERVED_20
DRM_TEE_RESERVED_21
DRM_TEE_RESERVED_22
DRM_TEE_RESERVED_23
DRM_TEE_REVOCATION_IngestRevocationInfo
DRM_TEE_LICGEN_CompleteLicense
DRM_TEE_LICGEN_AES128CTR_EncryptContent
DRM_TEE_RESERVED_27
DRM_TEE_RESERVED_28
DRM_TEE_RESERVED_29
DRM_TEE_RESERVED_30
DRM_TEE_RESERVED_31
DRM_TEE_RESERVED_32
DRM_TEE_RESERVED_33
DRM_TEE_H264_PreProcessEncryptedData
DRM_TEE_SECURESTOP_GetGenerationID
DRM_TEE_AES128CTR_DecryptAudioContentMultiple
DRM_TEE_SECURETIME_GenerateChallengeData
DRM_TEE_SECURETIME_ProcessResponseData
DRM_TEE_AES128CTR_DecryptContentMultiple
DRM_TEE_AES128CBC_DecryptContentMultiple
DRM_TEE_SECURESTOP2_GetSigningKeyBlob
DRM_TEE_SECURESTOP2_SignChallenge
DRM_TEE_BASE_GetFeatureInformation

ReeFeatureList:
Ensamblado
PersistentStorePrealloc
ECCProfiling
ForceAlign
InlineDwordCopy
FileLocking
Multithreading
Native64BitTypes
PrecomputedECCGlobalTable
Seguimiento
PersistentStoreWriteThrough
AddLicenseWriteThrough
NoOptimizations
DebugBuild
Generación de perfiles
Activación
AntirollbackClock
CDMI
CleanStore
ErrorCodeContract
PKCRT
DeviceAssets
Dominios
EmbeddedLicenseStore
PersistentStore
PersistentStoreBlockHeaderCache
CDMIPersistentStore
ContentKeyGeneration
LocalLicenseGeneration
MeteringCertificateRevocation
Medición
ModelCertificateRevocation
InMemoryOnlyLicenses
Rendimiento
Reactivación
Revocación
Securedelete
SecureStop
SecureStop2
SecureTime
StructuredSerialization
XmlParsingCache
LicenseAcquisition
LegacyXmlCertificates
AESCBCS

Hay algunos estados comunes en los que la clase LicenseChallenge puede estar en relación con el conjunto de características de cliente expuesto.

  • Si TeePropertyList, TeeApiList y ReeFeatureList están vacíos, significa que el cliente ejecuta una versión de PK anterior a la 4.4.
  • Si ReeFeatureList no está vacío y TeePropertyList y TeeApiList están vacíos, puede significar una de dos cosas.
    • En Windows clientes, el cliente se ejecuta en DRM de software o el TEE del cliente es anterior a la versión 4.4 de PK.
    • En clientes que no son de Windows, el REE del cliente ejecuta la versión 4.4+ de PK, pero el TEE del cliente es anterior a la versión 4.4 de PK.
  • Si TeePropertyList, TeeApiList y ReeFeatureList no están vacíos, el cliente ejecuta PK versión 4.4+ para todos los componentes.
    • Nota: TeePropertyList y TeeApiList son proporcionados por el TEE del cliente y se pueden confiar en su nivel de seguridad.