So ermitteln Sie, welche Features ein Client unterstützt

Ab PlayReady Device Porting Kit Version 4.4 sendet der Client Informationen zu den Features, die er unterstützt, als Teil seiner Lizenzkauf-Herausforderung an den Lizenzserver. Dies umfasst sowohl die Features Rich Execution Environment (REE) als auch die Features Vertrauenswürdige Ausführungsumgebung (TEE).

Ab PlayReady Server SDK Version 4.4 werden diese Informationen öffentlich über die LicenseChallenge-Klasse für eine Anwendung verfügbar gemacht. (Frühere Versionen des PlayReady Server SDK ignorieren diese Informationen, wenn sie in der Herausforderung für die Lizenzkäufe vorhanden sind.) Auf dieser Seite wird beschrieben, wie Sie dieses Feature verwenden, um Entscheidungen in einer Serveranwendung zu treffen, basierend auf der Funktionalität, die der Client implementiert hat.

Features werden über die LicenseChallenge-Klasse in drei verschiedenen Catagories verfügbar gemacht: TEE-Eigenschaften, TEE-APIs und REE-Features. Um auf eine einzelne Kategorie von Clientfeatures zuzugreifen, können Sie die Eigenschaften der Lizenz-Herausforderung verwenden, um entweder eine Liste der Aufzählungen zu erhalten, die jedem Feature entsprechen oder auf das rohe XML zugreifen, das Featureinformationen enthält, die innerhalb der Lizenz-Herausforderung gesendet wurden. Die features, die in der LicenseChallenge-Klasse ab Version 4.4 verfügbar gemacht werden, werden unten mit ihren entsprechenden Aufzählungswerten aufgeführt.

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
Ablaufverfolgung
PersistentStoreWriteThrough
AddLicenseWriteThrough
NoOptimizations
DebugBuild
Profilerstellung
Aktivierung
AntirollbackClock
CDMI
CleanStore
ErrorCodeContract
PKCRT
DeviceAssets
Domänen
EmbeddedLicenseStore
PersistentStore
PersistentStoreBlockHeaderCache
CDMIPersistentStore
ContentKeyGeneration
LocalLicenseGeneration
MeteringCertificateRevocation
messung
ModelCertificateRevocation
InMemoryOnlyLicenses
Leistung
Reaktivierung
Widerruf
SecureDelete
SecureStop
SecureStop2
SecureTime
StrukturierteSerialisierung
XmlParsingCache
LicenseAcquisition
LegacyXmlCertificates
AESCBCS

Es gibt einige allgemeine Zustände, die die LicenseChallenge-Klasse in Bezug auf den Clientfeaturesatz verfügbar machen kann.

  • Wenn die TeePropertyList, TeeApiList und ReeFeatureList alle leer sind, bedeutet dies, dass der Client eine Version der PK ausführt, die älter als 4.4 ist.
  • Wenn die ReeFeatureList nicht leer ist und die TeePropertyList und TeeApiList beide leer sind, kann es eine von zwei Dingen bedeuten.
    • Auf Windows Clients wird der Client entweder im Software-DRM ausgeführt, oder der TEE des Clients ist älter als PK Version 4.4.
    • Bei nicht Windows Clients wird der REE des Clients pk Version 4.4+ ausgeführt, der TEE des Clients ist jedoch älter als PK Version 4.4.
  • Wenn die TeePropertyList, TeeApiList und ReeFeatureList alle nicht leer sind, wird der Client pk Version 4.4+ für alle Komponenten ausführen.
    • Hinweis: Die TeePropertyList und TeeApiList werden vom TEE des Clients bereitgestellt und können der Sicherheitsstufe vertrauenswürdig sein.