分享方式:


如何判斷用戶端支援的功能

從 PlayReady 裝置移植套件 4.4 版開始,用戶端會傳送其支援哪些功能的相關資訊給授權伺服器,作為其授權取得挑戰的一部分。 這包括 RICH Execution Environment (REE) 功能和信賴執行環境 (TEE) 功能。

從 PlayReady Server SDK 4.4 版開始,這項資訊會透過 LicenseChallenge 類別公開提供給應用程式。 (舊版 PlayReady Server SDK 會在授權取得挑戰中出現時忽略這項資訊。) 此頁面說明如何使用這項功能,根據用戶端實作的功能,在伺服器應用程式中做出決策。

功能會透過三種不同的分類中的 LicenseChallenge 類別公開:TEE 屬性、TEE API 和 REE 功能。 若要存取個別類別的用戶端功能,您可以使用授權挑戰的屬性來取得對應至每個功能的列舉清單,或存取原始 XML,其中包含授權挑戰內傳送的功能資訊。 從 4.4 版起,LicenseChallenge 類別中公開的功能會列出其對應的列舉值。

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:
組件
PersistentStorePrealloc
ECCProfiling
ForceAlign
InlineDwordCopy
FileLocking
多執行緒
Native64BitTypes
PrecomputedECCGlobalTable
追蹤
PersistentStoreWriteThrough
AddLicenseWriteThrough
NoOptimizations
DebugBuild
程式碼剖析
啟用
AntirollbackClock
CDMI
CleanStore
ErrorCodeContract
PKCRT
DeviceAssets
網域
EmbeddedLicenseStore
PersistentStore
PersistentStoreBlockHeaderCache
CDMIPersistentStore
ContentKeyGeneration
LocalLicenseGeneration
MeteringCertificateRevocation
計量
ModelCertificateRevocation
InMemoryOnlyLicenses
效能
復活
撤銷
SecureDelete
SecureStop
SecureStop2
SecureTime
StructuredSerialization
XmlParsingCache
LicenseAcquisition
LegacyXmlCertificates
AESCBCS

有一些常見的狀態,LicenseChallenge 類別可以與公開的用戶端功能集有關。

  • 如果 TeePropertyList、TeeApiList 和 ReeFeatureList 全都是空的,則表示用戶端正在執行 4.4 之前的 PK 版本。
  • 如果 ReeFeatureList 不是空的,而且 TeePropertyList 和 TeeApiList 都是空的,則這可能代表兩件事之一。
    • 在Windows用戶端上,用戶端是在軟體 DRM 中執行,或用戶端的 TEE 比 PK 4.4 版還舊。
    • 在非Windows用戶端上,用戶端的 REE 執行 PK 4.4+ 版,但用戶端的 TEE 早于 PK 4.4 版。
  • 如果 TeePropertyList、TeeApiList 和 ReeFeatureList 全都是非空白的,則用戶端會針對所有元件執行 PK 4.4+ 版。
    • 注意:TeePropertyList 和 TeeApiList 是由用戶端的 TEE 提供,並可信任其安全性層級。