Come determinare le funzionalità supportate da un client

A partire da PlayReady Device Porting Kit versione 4.4, il client invia informazioni sulle funzionalità supportate dal server licenze come parte della richiesta di acquisizione delle licenze. Sono incluse sia le funzionalità Rich Execution Environment (REE) che le funzionalità tee (Trusted Execution Environment).

A partire da PlayReady Server SDK versione 4.4, queste informazioni vengono rese pubblicamente disponibili per un'applicazione tramite la classe LicenseChallenge. Le versioni precedenti di PlayReady Server SDK ignoreranno queste informazioni se presenti nella richiesta di acquisizione delle licenze. Questa pagina descrive come usare questa funzionalità per prendere decisioni in un'applicazione server in base alle funzionalità implementate dal client.

Le funzionalità vengono esposte tramite la classe LicenseChallenge in tre diverse catagories: proprietà TEE, API TEE e funzionalità REE. Per accedere a una singola categoria di funzionalità client, è possibile usare le proprietà della richiesta di licenza per ottenere un elenco di enumerazioni corrispondenti a ogni funzionalità o accedere al codice XML non elaborato contenente le informazioni sulle funzionalità inviate all'interno della richiesta di licenza. Le funzionalità esposte nella classe LicenseChallenge a partire dalla versione 4.4 sono elencate di seguito con i valori di enumerazione corrispondenti.

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
PrecomputedECCGlobalTable
Traccia
PersistentStoreWriteThrough
AddLicenseWriteThrough
NoOptimizations
DebugBuild
Profilatura
Activation
AntirollbackClock
CDMI
CleanStore
ErrorCodeContract
PKCRT
DeviceAssets
Domains
EmbeddedLicenseStore
PersistentStore
PersistentStoreBlockHeaderCache
CDMIPersistentStore
ContentKeyGeneration
LocalLicenseGeneration
MeteringCertificateRevocation
Metering
ModelCertificateRevocation
InMemoryOnlyLicenses
Prestazioni
Riattivazione
Revoca
SecureDelete
SecureStop
SecureStop2
SecureTime
StrutturataSerializzazione
XmlParsingCache
LicenseAcquisition
LegacyXmlCertificates
AESCBCS

Esistono alcuni stati comuni che la classe LicenseChallenge può essere rispetto al set di funzionalità client esposto.

  • Se teePropertyList, TeeApiList e ReeFeatureList sono tutti vuoti, significa che il client esegue una versione dell'infrastruttura PK precedente a 4.4.
  • Se ReeFeatureList non è vuoto e TeePropertyList e TeeApiList sono entrambi vuoti, può significare una delle due cose.
    • Nei client Windows, il client è in esecuzione in DRM software o il teE del client è precedente alla versione 4.4 del client.
    • Nei client non Windows, il reE del client esegue PK versione 4.4+ ma il teE del client è precedente alla versione 4.4 del client.
  • Se teePropertyList, TeeApiList e ReeFeatureList sono tutti non vuoti, il client esegue PK versione 4.4+ per tutti i componenti.
    • Nota: Il teePropertyList e TeeApiList vengono forniti dall'ambiente TEE del client e possono essere attendibili per il relativo livello di sicurezza.