專家
ClearKey
定義於 fuchsia.media.drm/services.fidl
可存取 ClearKey 鍵系統的服務中樞。這個金鑰系統是由 W3C Encrypted Media Extensions 定義。並使用純文字金鑰解密來源。
如果用戶端關閉 ClearKey
管道,衍生的 ContentDecryptionModule
將會繼續運作。
W3C Encrypted Media Extensions:https://www.w3.org/TR/decrypt-media
AddDataStore
將用戶端資料儲存庫新增至 KeySystem
。
DRM 系統會在佈建和授權管理過程中代表用戶端產生資料。這項資料只能由 DRM 系統使用,但用戶端是資料的擁有者。用戶端會控管資料的生命週期,以及選取要用於 ContentDecryptionModule 的資料集。
- 要求
data_store_id
取得資料儲存庫的用戶端指派的 ID。ID 的範圍限定在KeySystem
管道內。用戶端無法提供 NO_DATA_STORE,或已新增data_store_id
,伺服器應關閉管道。 - 要求
data_store_params
要用於這個資料儲存庫的參數。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
data_store_params |
DataStoreParams
|
回應
名稱 | 類型 |
---|---|
payload |
KeySystem_AddDataStore_Result
|
CreateContentDecryptionModule2
建立新的 ContentDecryptionModule。
建立 ContentDecryptionModule
,以便使用相關聯的資料儲存庫 (如有提供)。如果 data_store_id
提供 NO_DATA_STORE,則建立的 ContentDecryptionModule
將僅支援 LicenseSessionType.TEMPORARY 類型的 LicenseSession。如果提供 data_store_id
,建立的 ContentDecryptionModule
就會將資料保存至該資料儲存庫。如果 KeySystem
需要資料儲存庫,但提供了 NO_DATA_STORE
,或是 KeySystem
不支援資料儲存庫,但提供了資料儲存庫,則伺服器應關閉 cdm
。
如果 data_store_id
不存在,cdm
將會以 ZX_ERR_NOT_FOUND
劇集關閉。
- 要求
data_store_id
應由ContentDecryptionModule
使用的資料儲存庫。 - 要求
cdm
提供ContentDecryptionModule
的伺服器端點。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
cdm |
server_end<ContentDecryptionModule>
|
DestroyDataStoreAndConfirm
刪除用戶端資料儲存庫。
這個方法會永久移除這個資料儲存庫和當中的所有內容。 所有佈建和授權資料都會遭到移除,且使用這個資料儲存庫的所有有效 ContentDecryptionModule 都會關閉。
- 要求
data_store_id
,要求移除資料儲存庫的用戶端指派 ID。用戶端無法提供 NO_DATA_STORE 或先前未新增或先前已刪除的data_store_id
值。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
回應
<EMPTY>
GetProperties
取得 KeySystem
實作的各種靜態屬性。
這些屬性包含 KeySystem
的功能和要求,例如實作是否以硬體為基礎,或是否需要用戶端提供的資料儲存庫才能運作。
- 回應
properties
。KeySystem
實作的屬性。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
properties |
KeySystemProperties
|
ContentDecryptionModule
定義於 fuchsia.media.drm/content_decryption.fidl
用於管理內容授權工作階段及提供媒體內容解密的通訊協定。可能有零至許多與 ContentDecryptionModule
相關聯的有效 LicenseSession,每個都有專屬的一組金鑰。
從 EME 用戶端的角度來看,這個通訊協定與 MediaKeys 物件具有 1:1 的關係。
CreateDecryptor
建立用於解密內容的 Decryptor fuchsia.media/StreamProcessor。
此 decryptor
可以存取這個 ContentDecryptionModule 所有有效工作階段所建立的金鑰聯集。
- 要求
params
用於建立decryptor
的參數。 - 要求
decryptor
做為fuchsia.media/StreamProcessor
的伺服器端點。
要求
名稱 | 類型 |
---|---|
params |
DecryptorParams
|
decryptor |
server_end<fuchsia.media/StreamProcessor>
|
CreateLicenseSession
針對指定類型建立新的工作階段。
session_id
將由 ContentDecryptionModule 產生,可用於在關閉後重新載入工作階段。如果基礎 DRM 系統不支援 session_type
,它將立即關閉 license_session
。
- 要求
session_type
為包含 LicenseSessionType.TEMPORARY 或 LicenseSessionType.PERSISTENT_LICENSE 的欄位 - 要求
license_session
提供 LicenseSession 的伺服器端點
- 回應
session_id
是一個 ID,可用於稍後重新載入工作階段 (如果持續)。
要求
名稱 | 類型 |
---|---|
session_type |
LicenseSessionType
|
license_session |
server_end<LicenseSession>
|
回應
名稱 | 類型 |
---|---|
session_id |
SessionId
|
GetKeyStatusForHdcpVersion
查詢與 HDCP 政策相關聯的假設金鑰狀態。
這可協助用戶端在建立 LicenseSession 之前決定要擷取的內容類型。舉例來說,如果裝置限制 HDCP 1.x 的輸出,用戶端就可以選擇擷取 SD 內容,而非 HD 高畫質。
- 要求
hdcp_version
提供要檢查的 HDCP 版本的欄位,例如「1.2」或「2.0」。
- 回應
key_status
欄位,表示在可授權的情況下,假設這部裝置的假金鑰狀態會是何種狀態。
要求
名稱 | 類型 |
---|---|
hdcp_version |
HdcpVersion
|
回應
名稱 | 類型 |
---|---|
key_status |
KeyStatus
|
GetSupportedEncryptionSchemes
查詢支援加密配置清單的查詢。
這會傳回 ContentDecryptionModule
支援的加密配置清單,例如「cenc」或「cbcs」。如果實作支援在授權抵達前透過解密傳遞未加密的影格,則也應將 fuchsia.media.UNENCRYPTED
回報為支援的配置。
- 回應
encryption_schemes
代表支援的加密配置清單。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
encryption_schemes |
vector<string>
|
LoadLicenseSession
使用指定的 session_id
,從儲存空間載入現有工作階段。
如果找不到工作階段,license_session
將關閉。
- 要求
session_id
包含應從儲存空間載入的工作階段 ID。 - 要求
license_session
LicenseSession 的伺服器端點。
要求
名稱 | 類型 |
---|---|
session_id |
SessionId
|
license_session |
server_end<LicenseSession>
|
OnProvisioned
表示 ContentDecryptionModule
已佈建。
如要建立 LicenseSession
,必須佈建 ContentDecryptionModule
。ContentDecryptionModule
只有在符合基礎 DRM 系統的需求之前,不會視為已佈建。DRM 系統可能不需要佈建,可能只需要工廠佈建,或是可能需要同時佈建及佈建服務執行個體。
如果 ContentDecryptionModule
已有足夠的佈建,系統會在建立這個事件時立即傳送。如果 ContentDecryptionModule
的佈建作業已移除,伺服器將會關閉管道,並關閉所有使用中的 LicenseSession
或 Decryptor。
如果 DRM 系統完全不需要佈建,系統仍應傳送此事件來通知用戶端可以建立 LicenseSession
。
回應
<EMPTY>
SetServerCertificate
設定要用於加密外寄郵件的憑證。
- 要求
certificate
緩衝區,其中含有要使用的憑證。
- Error,指出失敗原因。
要求
名稱 | 類型 |
---|---|
certificate |
vector<uint8>
|
回應
名稱 | 類型 |
---|---|
payload |
ContentDecryptionModule_SetServerCertificate_Result
|
KeySystem
定義於 fuchsia.media.drm/services.fidl
AddDataStore
將用戶端資料儲存庫新增至 KeySystem
。
DRM 系統會在佈建和授權管理過程中代表用戶端產生資料。這項資料只能由 DRM 系統使用,但用戶端是資料的擁有者。用戶端會控管資料的生命週期,以及選取要用於 ContentDecryptionModule 的資料集。
- 要求
data_store_id
取得資料儲存庫的用戶端指派的 ID。ID 的範圍限定在KeySystem
管道內。用戶端無法提供 NO_DATA_STORE,或已新增data_store_id
,伺服器應關閉管道。 - 要求
data_store_params
要用於這個資料儲存庫的參數。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
data_store_params |
DataStoreParams
|
回應
名稱 | 類型 |
---|---|
payload |
KeySystem_AddDataStore_Result
|
CreateContentDecryptionModule2
建立新的 ContentDecryptionModule。
建立 ContentDecryptionModule
,以便使用相關聯的資料儲存庫 (如有提供)。如果 data_store_id
提供 NO_DATA_STORE,則建立的 ContentDecryptionModule
將僅支援 LicenseSessionType.TEMPORARY 類型的 LicenseSession。如果提供 data_store_id
,建立的 ContentDecryptionModule
就會將資料保存至該資料儲存庫。如果 KeySystem
需要資料儲存庫,但提供了 NO_DATA_STORE
,或是 KeySystem
不支援資料儲存庫,但提供了資料儲存庫,則伺服器應關閉 cdm
。
如果 data_store_id
不存在,cdm
將會以 ZX_ERR_NOT_FOUND
劇集關閉。
- 要求
data_store_id
應由ContentDecryptionModule
使用的資料儲存庫。 - 要求
cdm
提供ContentDecryptionModule
的伺服器端點。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
cdm |
server_end<ContentDecryptionModule>
|
DestroyDataStoreAndConfirm
刪除用戶端資料儲存庫。
這個方法會永久移除這個資料儲存庫和當中的所有內容。 所有佈建和授權資料都會遭到移除,且使用這個資料儲存庫的所有有效 ContentDecryptionModule 都會關閉。
- 要求
data_store_id
,要求移除資料儲存庫的用戶端指派 ID。用戶端無法提供 NO_DATA_STORE 或先前未新增或先前已刪除的data_store_id
值。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
回應
<EMPTY>
GetProperties
取得 KeySystem
實作的各種靜態屬性。
這些屬性包含 KeySystem
的功能和要求,例如實作是否以硬體為基礎,或是否需要用戶端提供的資料儲存庫才能運作。
- 回應
properties
。KeySystem
實作的屬性。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
properties |
KeySystemProperties
|
LicenseSession
定義於 fuchsia.media.drm/license_session.fidl
用於交換媒體授權及其相關加密金鑰的訊息的通訊協定。
如果用戶端關閉 LicenseSession
,任何衍生的解密工具也會遭到關閉,因為系統不會再維護加密金鑰。
CreateDecryptor
建立用於解密內容的 Decryptor fuchsia.media/StreamProcessor。
這個 decryptor
會受到限制,只能存取這個 LicenseSession 維護的金鑰。
- 要求
params
用於建立decryptor
的參數。 - 要求
decryptor
做為fuchsia.media/StreamProcessor
的伺服器端點。
要求
名稱 | 類型 |
---|---|
params |
DecryptorParams
|
decryptor |
server_end<fuchsia.media/StreamProcessor>
|
GenerateLicenseRelease
啟動授權工作階段的發布程序。
這會讓 LicenseSession 刪除與工作階段相關聯的授權和/或金鑰。如果是臨時工作階段,工作階段會在授權刪除後傳送這項要求的回覆,然後關閉 LicenseSession
管道。如果工作階段是永久的,工作階段會在授權刪除後傳送這項要求的回覆,然後會透過 OnLicenseMessageGenerated
事件產生授權版本類型 LicenseMessage。用戶端必須將該訊息轉送至授權伺服器,並將伺服器的回應轉送至 ProcessLicenseServerMessage
。LicenseSession
收到授權伺服器的回覆後,就會關閉 LicenseSession
管道。
- Error,指出失敗原因。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
payload |
LicenseSession_GenerateLicenseRelease_Result
|
GenerateLicenseRequest
根據 init_data
產生工作階段的授權要求。
建立 LicenseMessage 時,系統會觸發 OnLicenseMessageGenerated
事件,並將訊息傳送至授權伺服器。
- 要求用來產生 LicenseMessageType.REQUEST
LicenseMessage
的init_data
容器專屬資料。
- Error,指出失敗原因。
要求
名稱 | 類型 |
---|---|
init_data |
LicenseInitData
|
回應
名稱 | 類型 |
---|---|
payload |
LicenseSession_GenerateLicenseRequest_Result
|
OnKeyStatesChanged
提供最新的重要狀態資訊。
例如建立授權、到期、更新或永久授權工作階段載入等項目。
- 回應
key_states
包含 key_id 及其相關 KeyStatusCode 的清單
回應
名稱 | 類型 |
---|---|
key_states |
vector<KeyState>
|
OnLicenseMessageGenerated
提供應傳送至授權伺服器的 LicenseMessage。
用戶端會負責將這則訊息傳送至授權伺服器。
- 回應
request
,來自LicenseSession
的訊息,用戶端應傳送至授權伺服器。
回應
名稱 | 類型 |
---|---|
request |
LicenseMessage
|
OnReady
表示 LicenseSession 已成功初始化。
這一律會是 LicenseSession
傳送的第一則訊息。
回應
<EMPTY>
ProcessLicenseResponse
使用授權伺服器傳送的訊息更新 LicenseSession。
授權要求、續訂和發布的所有回應都應透過此方法轉送至 LicenseSession
。
- 向授權伺服器要求
response
訊息,以更新LicenseSession
的狀態。
- Error,指出失敗原因。
要求
名稱 | 類型 |
---|---|
response |
LicenseServerMessage
|
回應
名稱 | 類型 |
---|---|
payload |
LicenseSession_ProcessLicenseResponse_Result
|
PlayReady
定義於 fuchsia.media.drm/services.fidl
提供 PlayReady 金鑰系統存取權的服務中心。
如果用戶端關閉 PlayReady
管道,衍生的 ContentDecryptionModule
將會繼續運作。
AddDataStore
將用戶端資料儲存庫新增至 KeySystem
。
DRM 系統會在佈建和授權管理過程中代表用戶端產生資料。這項資料只能由 DRM 系統使用,但用戶端是資料的擁有者。用戶端會控管資料的生命週期,以及選取要用於 ContentDecryptionModule 的資料集。
- 要求
data_store_id
取得資料儲存庫的用戶端指派的 ID。ID 的範圍限定在KeySystem
管道內。用戶端無法提供 NO_DATA_STORE,或已新增data_store_id
,伺服器應關閉管道。 - 要求
data_store_params
要用於這個資料儲存庫的參數。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
data_store_params |
DataStoreParams
|
回應
名稱 | 類型 |
---|---|
payload |
KeySystem_AddDataStore_Result
|
CreateContentDecryptionModule2
建立新的 ContentDecryptionModule。
建立 ContentDecryptionModule
,以便使用相關聯的資料儲存庫 (如有提供)。如果 data_store_id
提供 NO_DATA_STORE,則建立的 ContentDecryptionModule
將僅支援 LicenseSessionType.TEMPORARY 類型的 LicenseSession。如果提供 data_store_id
,建立的 ContentDecryptionModule
就會將資料保存至該資料儲存庫。如果 KeySystem
需要資料儲存庫,但提供了 NO_DATA_STORE
,或是 KeySystem
不支援資料儲存庫,但提供了資料儲存庫,則伺服器應關閉 cdm
。
如果 data_store_id
不存在,cdm
將會以 ZX_ERR_NOT_FOUND
劇集關閉。
- 要求
data_store_id
應由ContentDecryptionModule
使用的資料儲存庫。 - 要求
cdm
提供ContentDecryptionModule
的伺服器端點。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
cdm |
server_end<ContentDecryptionModule>
|
DestroyDataStoreAndConfirm
刪除用戶端資料儲存庫。
這個方法會永久移除這個資料儲存庫和當中的所有內容。 所有佈建和授權資料都會遭到移除,且使用這個資料儲存庫的所有有效 ContentDecryptionModule 都會關閉。
- 要求
data_store_id
,要求移除資料儲存庫的用戶端指派 ID。用戶端無法提供 NO_DATA_STORE 或先前未新增或先前已刪除的data_store_id
值。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
回應
<EMPTY>
GetProperties
取得 KeySystem
實作的各種靜態屬性。
這些屬性包含 KeySystem
的功能和要求,例如實作是否以硬體為基礎,或是否需要用戶端提供的資料儲存庫才能運作。
- 回應
properties
。KeySystem
實作的屬性。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
properties |
KeySystemProperties
|
ProvisioningFetcher
定義於 fuchsia.media.drm/provision.fidl
從伺服器擷取佈建作業。
部分 DRM 系統需要額外的執行階段佈建 (也稱為個別化)。這項程序可讓裝置收到用於取得個別內容供應器授權的 DRM 憑證 (例如憑證)。
DRM 系統會在系統判定需要時,使用 ProvisioningFetcher 擷取佈建作業。
Fetch
從伺服器擷取佈建作業。
在需要佈建時,DRM 系統會呼叫。
- 要求
request
將 ProvisioningRequest 訊息提供給佈建伺服器。
- 回應
response
,則來自佈建伺服器的 ProvisioningResponse 訊息。
要求
名稱 | 類型 |
---|---|
request |
ProvisioningRequest
|
回應
名稱 | 類型 |
---|---|
response |
ProvisioningResponse
|
Widevine
定義於 fuchsia.media.drm/services.fidl
提供 Widevine 金鑰系統存取權的服務中心。
如果用戶端關閉 Widevine
管道,衍生的 ContentDecryptionModule
將會繼續運作。
AddDataStore
將用戶端資料儲存庫新增至 KeySystem
。
DRM 系統會在佈建和授權管理過程中代表用戶端產生資料。這項資料只能由 DRM 系統使用,但用戶端是資料的擁有者。用戶端會控管資料的生命週期,以及選取要用於 ContentDecryptionModule 的資料集。
- 要求
data_store_id
取得資料儲存庫的用戶端指派的 ID。ID 的範圍限定在KeySystem
管道內。用戶端無法提供 NO_DATA_STORE,或已新增data_store_id
,伺服器應關閉管道。 - 要求
data_store_params
要用於這個資料儲存庫的參數。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
data_store_params |
DataStoreParams
|
回應
名稱 | 類型 |
---|---|
payload |
KeySystem_AddDataStore_Result
|
CreateContentDecryptionModule2
建立新的 ContentDecryptionModule。
建立 ContentDecryptionModule
,以便使用相關聯的資料儲存庫 (如有提供)。如果 data_store_id
提供 NO_DATA_STORE,則建立的 ContentDecryptionModule
將僅支援 LicenseSessionType.TEMPORARY 類型的 LicenseSession。如果提供 data_store_id
,建立的 ContentDecryptionModule
就會將資料保存至該資料儲存庫。如果 KeySystem
需要資料儲存庫,但提供了 NO_DATA_STORE
,或是 KeySystem
不支援資料儲存庫,但提供了資料儲存庫,則伺服器應關閉 cdm
。
如果 data_store_id
不存在,cdm
將會以 ZX_ERR_NOT_FOUND
劇集關閉。
- 要求
data_store_id
應由ContentDecryptionModule
使用的資料儲存庫。 - 要求
cdm
提供ContentDecryptionModule
的伺服器端點。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
cdm |
server_end<ContentDecryptionModule>
|
DestroyDataStoreAndConfirm
刪除用戶端資料儲存庫。
這個方法會永久移除這個資料儲存庫和當中的所有內容。 所有佈建和授權資料都會遭到移除,且使用這個資料儲存庫的所有有效 ContentDecryptionModule 都會關閉。
- 要求
data_store_id
,要求移除資料儲存庫的用戶端指派 ID。用戶端無法提供 NO_DATA_STORE 或先前未新增或先前已刪除的data_store_id
值。
要求
名稱 | 類型 |
---|---|
data_store_id |
uint32
|
回應
<EMPTY>
GetProperties
取得 KeySystem
實作的各種靜態屬性。
這些屬性包含 KeySystem
的功能和要求,例如實作是否以硬體為基礎,或是否需要用戶端提供的資料儲存庫才能運作。
- 回應
properties
。KeySystem
實作的屬性。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
properties |
KeySystemProperties
|
結構
ContentDecryptionModule_SetServerCertificate_Response
定義於 fuchsia.media.drm/content_decryption.fidl
<EMPTY>
KeySystem_AddDataStore_Response
定義於 fuchsia.media.drm/services.fidl
<EMPTY>
LicenseInitData
定義於 fuchsia.media.drm/license_session.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
type |
LicenseInitDataType
|
類型是一個字串,指出隨附初始化資料的格式。常見的類型包括「cenc」、「keyids」、「webm」和「hls」。CDM 也可以自行定義。 |
無預設 |
data |
vector<uint8>
|
無預設 |
LicenseMessage 資源
定義於 fuchsia.media.drm/license_session.fidl
來自 LicenseSession 的訊息,呼叫端必須轉送至授權伺服器。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
type |
LicenseMessageType
|
無預設 | |
message |
fuchsia.mem/Buffer
|
無預設 |
LicenseServerMessage 資源
定義於 fuchsia.media.drm/license_session.fidl
來自授權伺服器的訊息,呼叫者必須透過 ProcessLicenseServerMessage
提供給 LicenseSession。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
message |
fuchsia.mem/Buffer
|
無預設 |
LicenseSession_GenerateLicenseRelease_Response
定義於 fuchsia.media.drm/license_session.fidl
<EMPTY>
LicenseSession_GenerateLicenseRequest_Response
定義於 fuchsia.media.drm/license_session.fidl
<EMPTY>
LicenseSession_ProcessLicenseResponse_Response
定義於 fuchsia.media.drm/license_session.fidl
<EMPTY>
ProvisioningRequest 資源
定義於 fuchsia.media.drm/provision.fidl
由 DRM 系統傳送至 ProvisioningFetcher 的訊息,傳送至佈建伺服器。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
default_provisioning_server_url |
fuchsia.url/Url
|
建議傳送 |
無預設 |
message |
fuchsia.mem/Buffer
|
要傳送至佈建伺服器的 DRM 系統專屬的佈建要求訊息主體。VMO 必須至少具備下列權限: ZX_RIGHT_READ ZX_RIGHT_TRANSFER |
無預設 |
ProvisioningResponse 資源
定義於 fuchsia.media.drm/provision.fidl
來自佈建伺服器的訊息,ProvisioningFetcher 必須傳回 DRM 系統。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
message |
fuchsia.mem/Buffer
|
從佈建伺服器接收的 DRM 系統專屬佈建回應訊息主體。VMO 必須至少具備下列權利: ZX_RIGHT_READ ZX_RIGHT_TRANSFER |
無預設 |
表情符號
錯誤 strict 錯誤
類型:uint32
定義於 fuchsia.media.drm/error.fidl
DRM 相關通訊協定的標準錯誤代碼。許多錯誤代碼名稱取自 W3C Encrypted Media Extensions 規格,以涵蓋常見的 CDM 例外狀況。
W3C Encrypted Media Extensions:https://www.w3.org/TR/decrypt-media
名稱 | 值 | 說明 |
---|---|---|
類型 |
1 |
用戶端向伺服器提供無效參數資料時發生的錯誤,例如授權回應訊息無效。 |
NOT_SUPPORTED |
2 |
CDM 不支援要求的作業時發生的錯誤,例如具有不明初始化資料類型的授權產生要求。 |
INVALID_STATE |
3 |
當 CDM 未處於適當狀態以執行要求的作業時會發生的錯誤,例如在 LicenseSession 開始授權發布程序時呼叫 LicenseSession.GenerateLicenseRequest。 |
QUOTA_EXCEEDED |
4 |
當要求的動作超過允許的限制 (例如嘗試載入已開啟的工作階段) 時,就會發生錯誤。 |
僅限內部 |
100 |
發生內部未預期的錯誤,無法由用戶端處理。 |
NOT_PROVISIONED |
101 |
當 CDM 因需要額外佈建而無法使用時,就會發生錯誤。 |
KeyStatus strict
類型:uint32
定義於 fuchsia.media.drm/license_session.fidl
名稱 | 值 | 說明 |
---|---|---|
美國 |
0 |
金鑰目前可用於解密。 |
已過期 |
1 |
金鑰已過期,因此無法再用於解密。 |
新上架 |
2 |
金鑰無法再用於解密,但仍可在 CDN 中知道。 |
OUTPUT_RESTRICTED |
3 |
金鑰具有目前無法滿足的輸出限制,且可能無法進行解密。 |
OUTPUT_DOWNSCALED |
4 |
金鑰具有目前無法滿足的輸出限制。該金鑰或許可用於解密內容品質不佳。 |
STATUS_PENDING |
5 |
金鑰尚不明,或無法用於解密。 |
INTERNAL_ERROR |
6 |
發生內部錯誤,因此金鑰無法用於解密。 |
LicenseMessageType 嚴格
類型:uint32
定義於 fuchsia.media.drm/license_session.fidl
名稱 | 值 | 說明 |
---|---|---|
提出要求 |
1 |
|
續訂 |
2 |
|
發布 |
3 |
LicenseSessionType 嚴格
類型:uint32
定義於 fuchsia.media.drm/license_session.fidl
名稱 | 值 | 說明 |
---|---|---|
TEMPORARY |
1 |
工作階段的授權、金鑰和記錄不會保留工作階段。 |
PERSISTENT_LICENSE |
2 |
工作階段的授權、金鑰和記錄將會保留供離線使用,且隨後可使用 LoadSession() 載入工作階段。 |
嚴格規定
類型:uint32
定義於 fuchsia.media.drm/properties.fidl
名稱 | 值 | 說明 |
---|---|---|
NOT_SUPPORTED |
1 |
|
選用 |
2 |
|
必要 |
3 |
資料表
DataStoreParams 資源
定義於 fuchsia.media.drm/services.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
data_directory |
fuchsia.io/Directory
|
這個資料儲存庫應寫入永久佈建和授權的目錄,或其 Proxy。這是必填欄位。 |
2 |
provision_server_certificate |
vector<uint8>
|
用於加密佈建訊息的憑證。這是選填欄位。 |
3 |
provisioning_fetcher |
ProvisioningFetcher
|
這個資料儲存庫需要佈建時,使用的 ProvisioningFetcher 用戶端端點。如果 DRM 系統需要佈建資料儲存庫,就必須設定這個欄位。否則,這是選用欄位。 |
DecryptorParams
定義於 fuchsia.media.drm/content_decryption.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
require_secure_mode |
bool
|
解密工具 fuchsia.media/StreamProcessor 只能輸出至安全的緩衝區。 |
2 |
input_details |
fuchsia.media/FormatDetails
|
fuchsia.media/StreamProcessor 的初始格式詳細資料。 |
KeyState
定義於 fuchsia.media.drm/license_session.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
key_id |
fuchsia.media/KeyId
|
|
2 |
status |
KeyStatus
|
KeySystemProperties
定義於 fuchsia.media.drm/properties.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
features |
Features
|
代表 KeySystem 支援的各種旗標。這是必填欄位。 |
2 |
data_store_requirement |
Requirement
|
指出 KeySystem 的資料儲存庫需求。 如要瞭解不同值的影響,請參閱 KeySystem.ContentDecryptionModule2。這是必填欄位。 |
3 |
license_session_types |
vector<LicenseSessionType>
|
表示支援的授權工作階段類型。此為必填欄位,清單不得空白。 |
4 |
init_data_types |
vector<string>
|
表示支援的 init 資料類型。此為必填欄位,清單不得留空。 |
5 |
encryption_schemes |
vector<string>
|
指出支援的加密配置。此為必填欄位,且清單不得留空。 |
聯合國
ContentDecryptionModule_SetServerCertificate_Result 嚴格
定義於 fuchsia.media.drm/content_decryption.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
ContentDecryptionModule_SetServerCertificate_Response
|
|
2 |
err |
Error
|
KeySystem_AddDataStore_Result 嚴格
定義於 fuchsia.media.drm/services.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
KeySystem_AddDataStore_Response
|
|
2 |
err |
Error
|
LicenseSession_GenerateLicenseRelease_Result strict
定義於 fuchsia.media.drm/license_session.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
LicenseSession_GenerateLicenseRelease_Response
|
|
2 |
err |
Error
|
LicenseSession_GenerateLicenseRequest_Result strict
定義於 fuchsia.media.drm/license_session.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
LicenseSession_GenerateLicenseRequest_Response
|
|
2 |
err |
Error
|
LicenseSession_ProcessLicenseResponse_Result strict
定義於 fuchsia.media.drm/license_session.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
LicenseSession_ProcessLicenseResponse_Response
|
|
2 |
err |
Error
|
節拍
功能嚴格
類型:uint32
定義於 fuchsia.media.drm/properties.fidl
名稱 | 值 | 說明 |
---|---|---|
HARDWARE_CRYPTO |
1 | 所有金鑰管理和加密作業都會在硬體的受信任執行環境中執行。如未設定,系統會採用軟體實作方式。 |
SECURE_OUTPUT |
2 | 解密資料可寫入硬體安全緩衝區。 |
場景
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
LICENSE_INIT_DATA_TYPE_CENC | cenc |
String |
|
LICENSE_INIT_DATA_TYPE_HLS | hls |
String |
|
LICENSE_INIT_DATA_TYPE_KEYIDS | keyids |
String |
|
LICENSE_INIT_DATA_TYPE_WEBM | webm |
String |
|
MAX_HDCP_VERSION_SIZE |
16
|
uint32 |
|
MAX_LICENSE_INIT_DATA_TYPE_SIZE |
100
|
uint32 |
|
MAX_SESSION_ID_SIZE |
512
|
uint32 |
|
NO_DATA_STORE |
0
|
uint32 |
與 KeySystem.CreateContentDecryptionModule2 搭配使用的傳送值,可在沒有用戶端資料儲存庫的情況下建立 ContentDecryptionModule。 |
別名
名稱 | 值 | 說明 |
---|---|---|
EncryptionScheme |
string |
|
HdcpVersion |
string [MAX_HDCP_VERSION_SIZE ] |
|
LicenseInitDataType |
string [MAX_LICENSE_INIT_DATA_TYPE_SIZE ] |
|
SessionId |
string [MAX_SESSION_ID_SIZE ] |