Partilhar via


Como determinar quais recursos um cliente suporta

A partir do PlayReady Device Porting Kit Versão 4.4, o cliente envia informações sobre quais recursos ele suporta para o Servidor de Licenças como parte de seu desafio de aquisição de licença. Isso inclui os recursos Rich Execution Environment (REE) e os recursos Trusted Execution Environment (TEE).

A partir do PlayReady Server SDK 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 categorias diferentes: Propriedades TEE, APIs 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 enums correspondentes a cada recurso ou acessar o XML bruto contendo informações de recursos enviadas dentro do desafio de licença. Os recursos expostos na classe LicenseChallenge a partir da versão 4.4 estão listados abaixo com seus valores enum correspondentes.

TeePropertyList:
SUPORTA_DECODIFICAÇÃO_HARDWARE_HEVC
SUPORTA_PROVISIONAMENTO_REMOTO
SUPPORTS_PRE_PROCESS_ENCRYPTED_DATA
Necessita_de_pre_processamento_de_dados_encriptados_com_frames_completos
REQUER_PROTEÇÃO_DE_AMOSTRA
Suporta_Relógio_Seguro
SUPORTA_PARAGEM_SEGURA
Suporta HDCP Tipo 1 Seguro
REQUER_PREPARAR_INFORMAÇÃO_DE_POLÍTICA
SUPORTA_RASTREAMENTO_DE_DEPURACÃO
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_ObterInformaçãoDeDepuração
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 (Preparar a Chave de Proteção de Amostras)
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:
Assembléia
PersistentStorePrealloc
ECCProfiling
ForceAlign
InlineDwordCopy
Bloqueio de Ficheiros
Multithreading
Native64BitTypes
Pré-computadoECCGlobalTable
Rastreio
PersistentStoreWriteThrough
AddLicenseWriteThrough
Sem Otimizações
DebugBuild
Definição de perfis
Ativação
Relógio Anti-reversão
CDMI
CleanStore
ErrorCodeContract
PKCRT
Recursos do Dispositivo
Domínios
LojaDeLicençasIntegrada
PersistentStore
CacheDeCabeçalhoDeBlocoDoArmazenamentoPersistente
CDMIPersistentStore
Geração de Chave de Conteúdo
GeraçãoLocalDeLicenças
Revogação de Certificado de Medição
Medição
Revogação do Certificado Modelo
InMemoryOnlyLicenças
Desempenho
Reativação
Revogação
SecureDelete
SecureStop
SecureStop2
Tempo Seguro
Serialização Estruturada
Cache de Análise XML
Aquisição de Licença
LegacyXmlCertificates
AESCBCS

Há alguns estados comuns em que a classe LicenseChallenge pode encontrar-se em relação ao conjunto de funcionalidades expostas ao cliente.

  • Se TeePropertyList, TeeApiList e ReeFeatureList estiverem todos vazios, isso significa que o cliente está executando uma versão da PK anterior à 4.4.
  • Se o ReeFeatureList não estiver vazio e o TeePropertyList e o TeeApiList estiverem vazios, isso pode significar uma de duas coisas.
    • Em clientes Windows, o cliente está sendo executado em DRM de software ou o TEE do cliente é mais antigo que PK versão 4.4.
    • Em clientes não-Windows, o REE do cliente está executando PK versão 4.4+, mas o TEE do cliente é mais antigo do que PK versão 4.4.
  • Se TeePropertyList, TeeApiList e ReeFeatureList não estiverem vazios, o cliente está executando PK versão 4.4+ para todos os componentes.
    • Nota: O TeePropertyList e o TeeApiList são fornecidos pelo TEE do cliente e podem ser confiáveis ao seu nível de segurança.