Como determinar quais recursos um cliente dá suporte
A partir do PlayReady Device Porting Kit versão 4.4, o cliente envia informações sobre quais recursos ele dá suporte ao Servidor de Licenças como parte de seu desafio de aquisição de licença. Isso inclui os recursos REE (Rich Execution Environment) e o TEE (Trusted Execution Environment).
A partir do SDK do PlayReady Server versão 4.4, essas informações são disponibilizadas publicamente para um aplicativo por meio da classe LicenseChallenge. (As versões anteriores do SDK do PlayReady Server ignorarão essas informações se estiverem presentes no desafio de aquisição de licença.) Esta página descreve como usar esse recurso para tomar decisões em um aplicativo de servidor com base em qual funcionalidade o cliente implementou.
Os recursos são expostos por meio da classe LicenseChallenge em três catagories diferentes: Propriedades do TEE, APIs do TEE e Recursos REE. Para acessar uma categoria individual de recursos de cliente, você pode usar as propriedades do Desafio de Licença para obter uma lista de enumerações correspondentes a cada recurso ou acessar o XML bruto que contém informações de recurso enviadas dentro do desafio de licença. Os recursos expostos na classe LicenseChallenge a partir da versão 4.4 são listados abaixo com seus valores de enumeração correspondentes.
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:
Assembly
PersistentStorePrealloc
ECCProfiling
ForceAlign
InlineDwordCopy
FileLocking
Multithreading
Native64BitTypes
Pré-compiladoECCGlobalTable
Rastreamento
PersistentStoreWriteThrough
AddLicenseWriteThrough
NoOptimizations
DebugBuild
Criação de perfil
Ativação
AntirollbackClock
CDMI
CleanStore
ErrorCodeContract
PKCRT
DeviceAssets
Domínios
EmbeddedLicenseStore
PersistentStore
PersistentStoreBlockHeaderCache
CDMIPersistentStore
ContentKeyGeneration
LocalLicenseGeneration
MeteringCertificateRevocation
uso
ModelCertificateRevocation
InMemoryOnlyLicenses
Desempenho
Reativação
Revogação
SecureDelete
SecureStop
SecureStop2
SecureTime
StructuredSerialization
XmlParsingCache
LicenseAcquisition
LegacyXmlCertificates
AESCBCS
Há alguns estados comuns em que a classe LicenseChallenge pode estar em relação ao conjunto de recursos do cliente exposto.
- Se o TeePropertyList, TeeApiList e ReeFeatureList estiverem todos vazios, isso significa que o cliente está executando uma versão do PK com mais de 4,4 anos.
- Se o ReeFeatureList não estiver vazio e o TeePropertyList e o TeeApiList estiverem vazios, isso poderá significar uma das duas coisas.
- Em Windows clientes, o cliente está em execução no DRM de Software ou o TEE do cliente é mais antigo que o PK versão 4.4.
- Em clientes não Windows, o REE do cliente está executando o PK versão 4.4+, mas o TEE do cliente é mais antigo que o PK versão 4.4.
- Se o TeePropertyList, TeeApiList e ReeFeatureList não estiverem vazios, o cliente executará o PK versão 4.4+ para todos os componentes.
- Observação: o TeePropertyList e o TeeApiList são fornecidos pelo TEE do cliente e podem ser confiáveis em seu nível de segurança.