协议
ClearKey
在 fuchsia.media.drm/services.fidl 中定义
用于访问 ClearKey 密钥系统的服务中心。此密钥系统由 W3C Encrypted Media Extensions 定义。它使用明文密钥来解密来源。
如果客户端关闭 ClearKey
渠道,派生的 ContentDecryptionModule
将保持活跃状态。
W3C Encrypted Media Extensions:https://www.w3.org/TR/encryption-media
AddDataStore
将客户端数据存储区添加到 KeySystem
。
在预配和许可管理过程中,DRM 系统会代表客户端生成数据。这些数据仅可供 DRM 系统使用,但客户端是数据的所有者。客户端控制数据的生命周期,并且可以选择将哪个数据集用于 ContentDecryptionModule。
- 请求
data_store_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
为要移除的数据存储区指定客户端分配的标识符。客户端无法提供之前未添加或之前销毁的 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,并且每个 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
是一个标识符,稍后可用于重新加载会话(如果持久)。
请求
名称 | 类型 |
---|---|
session_type |
LicenseSessionType
|
license_session |
server_end<LicenseSession>
|
响应
名称 | 类型 |
---|---|
session_id |
SessionId
|
GetKeyStatusForHdcpVersion
查询与 HDCP 政策关联的假设密钥的状态。
这有助于客户端在建立 LicenseSession 之前确定要提取的内容类型。例如,如果设备会限制 HDCP 1.x 的输出,则客户端可以选择提取标清内容而不是提取高清内容。
- 向
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
包含应从存储空间加载哪个会话的标识符。 - 请求
license_session
是 LicenseSession 的服务器端点。
请求
名称 | 类型 |
---|---|
session_id |
SessionId
|
license_session |
server_end<LicenseSession>
|
OnProvisioned
表示 ContentDecryptionModule
已预配。
如需创建 LicenseSession
,必须预配 ContentDecryptionModule
。在满足底层 DRM 系统的要求之前,ContentDecryptionModule
不会被视为已预配。DRM 系统可能不需要预配,可能只需要出厂预配,或者可能要求同时进行出厂预配和服务实例预配。
如果 ContentDecryptionModule
已进行充分的预配,系统会在创建后立即发送此事件。如果 ContentDecryptionModule
移除了其配置,则服务器将关闭通道并关闭所有处于活跃状态的 LicenseSession
或解密器。
如果 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
为数据存储区分配客户端分配的标识符。此标识符的范围限定为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
为要移除的数据存储区指定客户端分配的标识符。客户端无法提供之前未添加或之前销毁的 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
事件,并显示要发送到许可服务器的消息。
- 请求
init_data
容器专用数据,用于生成 LicenseMessageType.REQUESTLicenseMessage
。
- 错误,并显示指明失败原因的 Error。
请求
名称 | 类型 |
---|---|
init_data |
LicenseInitData
|
响应
名称 | 类型 |
---|---|
payload |
LicenseSession_GenerateLicenseRequest_Result
|
OnKeyStatesChanged
提供更新后的密钥状态信息。
例如,创建许可、到期、续订或加载永久性许可会话时可能会发生这种情况。
- 响应
key_states
key_ids 及其相关的 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
为数据存储区分配客户端分配的标识符。此标识符的范围限定为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
为要移除的数据存储区指定客户端分配的标识符。客户端无法提供之前未添加或之前销毁的 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 凭据(例如证书),以便为单个 content provider 获取许可。
当系统确定需要配置时,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
为数据存储区分配客户端分配的标识符。此标识符的范围限定为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
为要移除的数据存储区指定客户端分配的标识符。客户端无法提供之前未添加或之前销毁的 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
|
该类型是一个字符串,表示附带的 init 数据的格式。常见类型包括“cenc”、“keyids”、“webm”和“hls”。CDM 还可以定义自己的 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 |
无默认值 |
枚举
错误严格
类型:uint32
在 fuchsia.media.drm/error.fidl 中定义
DRM 相关协议的标准错误代码。许多错误代码名称都源自 W3C Encrypted Media Extensions 规范,旨在涵盖常见的 CDM 异常情况。
W3C Encrypted Media Extensions:https://www.w3.org/TR/encryption-media
名称 | 值 | 说明 |
---|---|---|
类型 |
1 |
客户端向服务器提供无效参数数据(如无效许可响应消息)时发生的错误。 |
NOT_SUPPORTED |
2 |
在 CDM 不支持请求的操作(例如初始化数据类型未知的许可生成请求)时发生的错误。 |
INVALID_STATE |
3 |
当 CDM 未处于正确的状态而无法执行请求的操作时(例如在 LicenseSession 已开始许可发布流程时调用 LicenseSession.GenerateLicenseRequest)时发生的错误。 |
QUOTA_EXCEEDED |
4 |
请求的操作超出允许限制(例如尝试加载已打开的会话)时发生的错误。 |
内部 |
100 |
客户端无法解决的内部意外错误。 |
NOT_PROVISIONED |
101 |
当 CDM 因需要进行额外配置而无法使用时发生的错误。 |
KeyStatus 严格
类型:uint32
在 fuchsia.media.drm/license_session.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
易于使用 |
0 |
该密钥目前可用于解密。 |
已过期 |
1 |
此密钥已过期,无法再用于解密。 |
新歌速递 |
2 |
该密钥不再可用于解密,但 CDM 仍然可以知道该密钥。 |
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
|
此数据存储区应将永久性配置和许可或其代理写入到的目录。必须填写此字段。 |
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>
|
表示支持的初始化数据类型。此字段是必填字段,且列表不能为空。 |
5 |
encryption_schemes |
vector<string>
|
表示支持的加密方案。此字段是必填字段,且列表不能为空。 |
联合
ContentDecryptionModule_SetServerCertificate_Result 严格
在 fuchsia.media.drm/content_decryption.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
ContentDecryptionModule_SetServerCertificate_Response
|
|
2 |
err |
Error
|
KeySystem_AddDataStore_Result 严格
在 fuchsia.media.drm/services.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
KeySystem_AddDataStore_Response
|
|
2 |
err |
Error
|
LicenseSession_GenerateLicenseRelease_Result 严格
在 fuchsia.media.drm/license_session.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
LicenseSession_GenerateLicenseRelease_Response
|
|
2 |
err |
Error
|
LicenseSession_GenerateLicenseRequest_Result 严格
在 fuchsia.media.drm/license_session.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
LicenseSession_GenerateLicenseRequest_Response
|
|
2 |
err |
Error
|
LicenseSession_ProcessLicenseResponse_Result 严格
在 fuchsia.media.drm/license_session.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
LicenseSession_ProcessLicenseResponse_Response
|
|
2 |
err |
Error
|
BITS
功能严格
类型: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 ] |