Partage via


Comment déterminer les fonctionnalités prises en charge par un client

À compter du Kit de portage d’appareil PlayReady version 4.4, le client envoie des informations sur les fonctionnalités qu’il prend en charge au serveur de licences dans le cadre de son défi d’acquisition de licence. Cela inclut les fonctionnalités RICH Execution Environment (REE) et les fonctionnalités TEE (Trusted Execution Environment).

À compter du Kit de développement logiciel (SDK) PlayReady Server version 4.4, ces informations sont rendues publiques pour une application via la classe LicenseChallenge. (Les versions précédentes du Kit de développement logiciel (SDK) PlayReady Server ignorent ces informations si elles sont présentes dans le défi d’acquisition de licence.) Cette page explique comment utiliser cette fonctionnalité pour prendre des décisions dans une application serveur en fonction de la fonctionnalité implémentée par le client.

Les fonctionnalités sont exposées via la classe LicenseChallenge dans trois catagories différentes : propriétés TEE, API TEE et fonctionnalités REE. Pour accéder à une catégorie individuelle de fonctionnalités clientes, vous pouvez utiliser les propriétés du défi de licence pour obtenir une liste d’énumérations correspondant à chaque fonctionnalité ou accéder au code XML brut contenant les informations de fonctionnalité envoyées dans le cadre du défi de licence. Les fonctionnalités exposées dans la classe LicenseChallenge à partir de la version 4.4 sont répertoriées ci-dessous avec leurs valeurs d’énumération correspondantes.

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
Traçage
PersistentStoreWriteThrough
AddLicenseWriteThrough
NoOptimizations
DéboguerBuild
Profilage
Activation
AntirollbackClock
CDMI
CleanStore
ErrorCodeContract
PKCRT
DeviceAssets
Domaines
EmbeddedLicenseStore
PersistentStore
PersistentStoreBlockHeaderCache
CDMIPersistentStore
ContentKeyGeneration
LocalLicenseGeneration
MeteringCertificateRevocation
de l'utilisation
ModelCertificateRevocation
InMemoryOnlyLicenses
Performances
Réactivation
Révocation
SecureDelete
SecureStop
SecureStop2
SecureTime
StructuredSerialization
XmlParsingCache
LicenseAcquisition
LegacyXmlCertificates
AESCBCS

Il existe quelques états courants que la classe LicenseChallenge peut être en rapport avec le jeu de fonctionnalités client exposé.

  • Si TeePropertyList, TeeApiList et ReeFeatureList sont tous vides, cela signifie que le client exécute une version du PK antérieure à 4.4.
  • Si ReeFeatureList n’est pas vide et que TeePropertyList et TeeApiList sont tous deux vides, cela peut signifier l’une des deux choses.
    • Sur Windows clients, le client est en cours d’exécution dans la gestion des droits numériques logicielles ou l’environnement TEE du client est antérieur à la version 4.4 de la version PK.
    • Sur les clients autres que Windows, le ree du client exécute PK version 4.4+ mais le TEE du client est antérieur à la version 4.4 du client.
  • Si TeePropertyList, TeeApiList et ReeFeatureList ne sont pas vides, le client exécute PK version 4.4+ pour tous les composants.
    • Remarque : TeePropertyList et TeeApiList sont fournis par l’TEE du client et peuvent être approuvés à son niveau de sécurité.