mirror of
https://github.com/hyugogirubato/KeyDive.git
synced 2026-07-15 18:40:02 +02:00
1392 lines
77 KiB
Python
1392 lines
77 KiB
Python
"""
|
|||
|
|
@generated by mypy-protobuf. Do not edit manually!
|
||
|
|
isort:skip_file
|
||
|
|
"""
|
||
|
|
|
||
|
|
import builtins
|
||
|
|
import collections.abc
|
||
|
|
import google.protobuf.descriptor
|
||
|
|
import google.protobuf.internal.containers
|
||
|
|
import google.protobuf.internal.enum_type_wrapper
|
||
|
|
import google.protobuf.message
|
||
|
|
import sys
|
||
|
|
import typing
|
||
|
|
|
||
|
|
if sys.version_info >= (3, 10):
|
||
|
|
import typing as typing_extensions
|
||
|
|
else:
|
||
|
|
import typing_extensions
|
||
|
|
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
||
|
|
|
||
|
|
class _LicenseType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _LicenseTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_LicenseType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
STREAMING: _LicenseType.ValueType # 1
|
||
|
|
OFFLINE: _LicenseType.ValueType # 2
|
||
|
|
AUTOMATIC: _LicenseType.ValueType # 3
|
||
|
|
"""License type decision is left to provider."""
|
||
|
|
|
||
|
|
class LicenseType(_LicenseType, metaclass=_LicenseTypeEnumTypeWrapper):
|
||
|
|
"""----------------------------------------------------------------------------
|
||
|
|
license_protocol.proto
|
||
|
|
----------------------------------------------------------------------------
|
||
|
|
Description of section:
|
||
|
|
Definitions of the protocol buffer messages used in the Widevine license
|
||
|
|
exchange protocol, described in Widevine license exchange protocol document
|
||
|
|
"""
|
||
|
|
|
||
|
|
STREAMING: LicenseType.ValueType # 1
|
||
|
|
OFFLINE: LicenseType.ValueType # 2
|
||
|
|
AUTOMATIC: LicenseType.ValueType # 3
|
||
|
|
"""License type decision is left to provider."""
|
||
|
|
global___LicenseType = LicenseType
|
||
|
|
|
||
|
|
class _ProtocolVersion:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _ProtocolVersionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ProtocolVersion.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
VERSION_2_0: _ProtocolVersion.ValueType # 20
|
||
|
|
VERSION_2_1: _ProtocolVersion.ValueType # 21
|
||
|
|
VERSION_2_2: _ProtocolVersion.ValueType # 22
|
||
|
|
|
||
|
|
class ProtocolVersion(_ProtocolVersion, metaclass=_ProtocolVersionEnumTypeWrapper): ...
|
||
|
|
|
||
|
|
VERSION_2_0: ProtocolVersion.ValueType # 20
|
||
|
|
VERSION_2_1: ProtocolVersion.ValueType # 21
|
||
|
|
VERSION_2_2: ProtocolVersion.ValueType # 22
|
||
|
|
global___ProtocolVersion = ProtocolVersion
|
||
|
|
|
||
|
|
class _HashAlgorithmProto:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _HashAlgorithmProtoEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_HashAlgorithmProto.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
HASH_ALGORITHM_UNSPECIFIED: _HashAlgorithmProto.ValueType # 0
|
||
|
|
"""Unspecified hash algorithm: SHA_256 shall be used for ECC based algorithms
|
||
|
|
and SHA_1 shall be used otherwise.
|
||
|
|
"""
|
||
|
|
HASH_ALGORITHM_SHA_1: _HashAlgorithmProto.ValueType # 1
|
||
|
|
HASH_ALGORITHM_SHA_256: _HashAlgorithmProto.ValueType # 2
|
||
|
|
HASH_ALGORITHM_SHA_384: _HashAlgorithmProto.ValueType # 3
|
||
|
|
|
||
|
|
class HashAlgorithmProto(_HashAlgorithmProto, metaclass=_HashAlgorithmProtoEnumTypeWrapper):
|
||
|
|
"""----------------------------------------------------------------------------
|
||
|
|
hash_algorithm.proto
|
||
|
|
----------------------------------------------------------------------------
|
||
|
|
Description of section:
|
||
|
|
Public protocol buffer definitions for Widevine Hash Algorithm protocol.
|
||
|
|
"""
|
||
|
|
|
||
|
|
HASH_ALGORITHM_UNSPECIFIED: HashAlgorithmProto.ValueType # 0
|
||
|
|
"""Unspecified hash algorithm: SHA_256 shall be used for ECC based algorithms
|
||
|
|
and SHA_1 shall be used otherwise.
|
||
|
|
"""
|
||
|
|
HASH_ALGORITHM_SHA_1: HashAlgorithmProto.ValueType # 1
|
||
|
|
HASH_ALGORITHM_SHA_256: HashAlgorithmProto.ValueType # 2
|
||
|
|
HASH_ALGORITHM_SHA_384: HashAlgorithmProto.ValueType # 3
|
||
|
|
global___HashAlgorithmProto = HashAlgorithmProto
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class LicenseIdentification(google.protobuf.message.Message):
|
||
|
|
"""LicenseIdentification is propagated from LicenseRequest to License,
|
||
|
|
incrementing version with each iteration.
|
||
|
|
"""
|
||
|
|
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
REQUEST_ID_FIELD_NUMBER: builtins.int
|
||
|
|
SESSION_ID_FIELD_NUMBER: builtins.int
|
||
|
|
PURCHASE_ID_FIELD_NUMBER: builtins.int
|
||
|
|
TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
VERSION_FIELD_NUMBER: builtins.int
|
||
|
|
PROVIDER_SESSION_TOKEN_FIELD_NUMBER: builtins.int
|
||
|
|
ORIGINAL_RENTAL_DURATION_SECONDS_FIELD_NUMBER: builtins.int
|
||
|
|
ORIGINAL_PLAYBACK_DURATION_SECONDS_FIELD_NUMBER: builtins.int
|
||
|
|
ORIGINAL_START_TIME_SECONDS_FIELD_NUMBER: builtins.int
|
||
|
|
request_id: builtins.bytes
|
||
|
|
session_id: builtins.bytes
|
||
|
|
purchase_id: builtins.bytes
|
||
|
|
type: global___LicenseType.ValueType
|
||
|
|
version: builtins.int
|
||
|
|
provider_session_token: builtins.bytes
|
||
|
|
original_rental_duration_seconds: builtins.int
|
||
|
|
original_playback_duration_seconds: builtins.int
|
||
|
|
original_start_time_seconds: builtins.int
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
request_id: builtins.bytes | None = ...,
|
||
|
|
session_id: builtins.bytes | None = ...,
|
||
|
|
purchase_id: builtins.bytes | None = ...,
|
||
|
|
type: global___LicenseType.ValueType | None = ...,
|
||
|
|
version: builtins.int | None = ...,
|
||
|
|
provider_session_token: builtins.bytes | None = ...,
|
||
|
|
original_rental_duration_seconds: builtins.int | None = ...,
|
||
|
|
original_playback_duration_seconds: builtins.int | None = ...,
|
||
|
|
original_start_time_seconds: builtins.int | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["original_playback_duration_seconds", b"original_playback_duration_seconds", "original_rental_duration_seconds", b"original_rental_duration_seconds", "original_start_time_seconds", b"original_start_time_seconds", "provider_session_token", b"provider_session_token", "purchase_id", b"purchase_id", "request_id", b"request_id", "session_id", b"session_id", "type", b"type", "version", b"version"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["original_playback_duration_seconds", b"original_playback_duration_seconds", "original_rental_duration_seconds", b"original_rental_duration_seconds", "original_start_time_seconds", b"original_start_time_seconds", "provider_session_token", b"provider_session_token", "purchase_id", b"purchase_id", "request_id", b"request_id", "session_id", b"session_id", "type", b"type", "version", b"version"]) -> None: ...
|
||
|
|
|
||
|
|
global___LicenseIdentification = LicenseIdentification
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class LicenseRequest(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
class _RequestType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _RequestTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[LicenseRequest._RequestType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
NEW: LicenseRequest._RequestType.ValueType # 1
|
||
|
|
RENEWAL: LicenseRequest._RequestType.ValueType # 2
|
||
|
|
RELEASE: LicenseRequest._RequestType.ValueType # 3
|
||
|
|
|
||
|
|
class RequestType(_RequestType, metaclass=_RequestTypeEnumTypeWrapper): ...
|
||
|
|
NEW: LicenseRequest.RequestType.ValueType # 1
|
||
|
|
RENEWAL: LicenseRequest.RequestType.ValueType # 2
|
||
|
|
RELEASE: LicenseRequest.RequestType.ValueType # 3
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class ContentIdentification(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class WidevinePsshData(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
PSSH_DATA_FIELD_NUMBER: builtins.int
|
||
|
|
LICENSE_TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
REQUEST_ID_FIELD_NUMBER: builtins.int
|
||
|
|
license_type: global___LicenseType.ValueType
|
||
|
|
request_id: builtins.bytes
|
||
|
|
"""Opaque, client-specified."""
|
||
|
|
@property
|
||
|
|
def pssh_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]:
|
||
|
|
"""repeated WidevinePsshData pssh_data = 1;"""
|
||
|
|
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
pssh_data: collections.abc.Iterable[builtins.bytes] | None = ...,
|
||
|
|
license_type: global___LicenseType.ValueType | None = ...,
|
||
|
|
request_id: builtins.bytes | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["license_type", b"license_type", "request_id", b"request_id"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["license_type", b"license_type", "pssh_data", b"pssh_data", "request_id", b"request_id"]) -> None: ...
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class WebmKeyId(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
HEADER_FIELD_NUMBER: builtins.int
|
||
|
|
LICENSE_TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
REQUEST_ID_FIELD_NUMBER: builtins.int
|
||
|
|
header: builtins.bytes
|
||
|
|
license_type: global___LicenseType.ValueType
|
||
|
|
request_id: builtins.bytes
|
||
|
|
"""Opaque, client-specified."""
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
header: builtins.bytes | None = ...,
|
||
|
|
license_type: global___LicenseType.ValueType | None = ...,
|
||
|
|
request_id: builtins.bytes | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["header", b"header", "license_type", b"license_type", "request_id", b"request_id"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["header", b"header", "license_type", b"license_type", "request_id", b"request_id"]) -> None: ...
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class ExistingLicense(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
LICENSE_ID_FIELD_NUMBER: builtins.int
|
||
|
|
SECONDS_SINCE_STARTED_FIELD_NUMBER: builtins.int
|
||
|
|
SECONDS_SINCE_LAST_PLAYED_FIELD_NUMBER: builtins.int
|
||
|
|
SESSION_USAGE_TABLE_ENTRY_FIELD_NUMBER: builtins.int
|
||
|
|
seconds_since_started: builtins.int
|
||
|
|
seconds_since_last_played: builtins.int
|
||
|
|
session_usage_table_entry: builtins.bytes
|
||
|
|
@property
|
||
|
|
def license_id(self) -> global___LicenseIdentification: ...
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
license_id: global___LicenseIdentification | None = ...,
|
||
|
|
seconds_since_started: builtins.int | None = ...,
|
||
|
|
seconds_since_last_played: builtins.int | None = ...,
|
||
|
|
session_usage_table_entry: builtins.bytes | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["license_id", b"license_id", "seconds_since_last_played", b"seconds_since_last_played", "seconds_since_started", b"seconds_since_started", "session_usage_table_entry", b"session_usage_table_entry"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["license_id", b"license_id", "seconds_since_last_played", b"seconds_since_last_played", "seconds_since_started", b"seconds_since_started", "session_usage_table_entry", b"session_usage_table_entry"]) -> None: ...
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class InitData(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
class _InitDataType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _InitDataTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[LicenseRequest.ContentIdentification.InitData._InitDataType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
CENC: LicenseRequest.ContentIdentification.InitData._InitDataType.ValueType # 1
|
||
|
|
WEBM: LicenseRequest.ContentIdentification.InitData._InitDataType.ValueType # 2
|
||
|
|
|
||
|
|
class InitDataType(_InitDataType, metaclass=_InitDataTypeEnumTypeWrapper): ...
|
||
|
|
CENC: LicenseRequest.ContentIdentification.InitData.InitDataType.ValueType # 1
|
||
|
|
WEBM: LicenseRequest.ContentIdentification.InitData.InitDataType.ValueType # 2
|
||
|
|
|
||
|
|
INIT_DATA_TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
INIT_DATA_FIELD_NUMBER: builtins.int
|
||
|
|
LICENSE_TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
REQUEST_ID_FIELD_NUMBER: builtins.int
|
||
|
|
init_data_type: global___LicenseRequest.ContentIdentification.InitData.InitDataType.ValueType
|
||
|
|
init_data: builtins.bytes
|
||
|
|
license_type: global___LicenseType.ValueType
|
||
|
|
request_id: builtins.bytes
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
init_data_type: global___LicenseRequest.ContentIdentification.InitData.InitDataType.ValueType | None = ...,
|
||
|
|
init_data: builtins.bytes | None = ...,
|
||
|
|
license_type: global___LicenseType.ValueType | None = ...,
|
||
|
|
request_id: builtins.bytes | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["init_data", b"init_data", "init_data_type", b"init_data_type", "license_type", b"license_type", "request_id", b"request_id"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["init_data", b"init_data", "init_data_type", b"init_data_type", "license_type", b"license_type", "request_id", b"request_id"]) -> None: ...
|
||
|
|
|
||
|
|
WIDEVINE_PSSH_DATA_FIELD_NUMBER: builtins.int
|
||
|
|
WEBM_KEY_ID_FIELD_NUMBER: builtins.int
|
||
|
|
EXISTING_LICENSE_FIELD_NUMBER: builtins.int
|
||
|
|
INIT_DATA_FIELD_NUMBER: builtins.int
|
||
|
|
@property
|
||
|
|
def widevine_pssh_data(self) -> global___LicenseRequest.ContentIdentification.WidevinePsshData:
|
||
|
|
"""Exactly one of these must be present."""
|
||
|
|
|
||
|
|
@property
|
||
|
|
def webm_key_id(self) -> global___LicenseRequest.ContentIdentification.WebmKeyId: ...
|
||
|
|
@property
|
||
|
|
def existing_license(self) -> global___LicenseRequest.ContentIdentification.ExistingLicense: ...
|
||
|
|
@property
|
||
|
|
def init_data(self) -> global___LicenseRequest.ContentIdentification.InitData: ...
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
widevine_pssh_data: global___LicenseRequest.ContentIdentification.WidevinePsshData | None = ...,
|
||
|
|
webm_key_id: global___LicenseRequest.ContentIdentification.WebmKeyId | None = ...,
|
||
|
|
existing_license: global___LicenseRequest.ContentIdentification.ExistingLicense | None = ...,
|
||
|
|
init_data: global___LicenseRequest.ContentIdentification.InitData | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["content_id_variant", b"content_id_variant", "existing_license", b"existing_license", "init_data", b"init_data", "webm_key_id", b"webm_key_id", "widevine_pssh_data", b"widevine_pssh_data"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["content_id_variant", b"content_id_variant", "existing_license", b"existing_license", "init_data", b"init_data", "webm_key_id", b"webm_key_id", "widevine_pssh_data", b"widevine_pssh_data"]) -> None: ...
|
||
|
|
def WhichOneof(self, oneof_group: typing.Literal["content_id_variant", b"content_id_variant"]) -> typing.Literal["widevine_pssh_data", "webm_key_id", "existing_license", "init_data"] | None: ...
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class SubSessionData(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
SUB_SESSION_KEY_ID_FIELD_NUMBER: builtins.int
|
||
|
|
NONCE_FIELD_NUMBER: builtins.int
|
||
|
|
TRACK_LABEL_FIELD_NUMBER: builtins.int
|
||
|
|
sub_session_key_id: builtins.str
|
||
|
|
"""Required. The key ID for the corresponding SUB_SESSION_KEY. The
|
||
|
|
value must match the sub_session_key_id field for a
|
||
|
|
corresponding SubLicense message from the PSSH.
|
||
|
|
"""
|
||
|
|
nonce: builtins.int
|
||
|
|
"""Required. The nonce for the track."""
|
||
|
|
track_label: builtins.str
|
||
|
|
"""Required for initial license request used for each CONTENT key_container
|
||
|
|
to know which nonce to use for building its key control block.
|
||
|
|
Not needed for renewal license request.
|
||
|
|
"""
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
sub_session_key_id: builtins.str | None = ...,
|
||
|
|
nonce: builtins.int | None = ...,
|
||
|
|
track_label: builtins.str | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["nonce", b"nonce", "sub_session_key_id", b"sub_session_key_id", "track_label", b"track_label"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["nonce", b"nonce", "sub_session_key_id", b"sub_session_key_id", "track_label", b"track_label"]) -> None: ...
|
||
|
|
|
||
|
|
CLIENT_ID_FIELD_NUMBER: builtins.int
|
||
|
|
CONTENT_ID_FIELD_NUMBER: builtins.int
|
||
|
|
TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
REQUEST_TIME_FIELD_NUMBER: builtins.int
|
||
|
|
KEY_CONTROL_NONCE_DEPRECATED_FIELD_NUMBER: builtins.int
|
||
|
|
PROTOCOL_VERSION_FIELD_NUMBER: builtins.int
|
||
|
|
KEY_CONTROL_NONCE_FIELD_NUMBER: builtins.int
|
||
|
|
ENCRYPTED_CLIENT_ID_FIELD_NUMBER: builtins.int
|
||
|
|
CLIENT_VERSION_FIELD_NUMBER: builtins.int
|
||
|
|
type: global___LicenseRequest.RequestType.ValueType
|
||
|
|
request_time: builtins.int
|
||
|
|
"""Time of the request in seconds (UTC) as set by the client."""
|
||
|
|
key_control_nonce_deprecated: builtins.bytes
|
||
|
|
"""Old-style decimal-encoded string key control nonce."""
|
||
|
|
protocol_version: global___ProtocolVersion.ValueType
|
||
|
|
key_control_nonce: builtins.int
|
||
|
|
"""New-style uint32 key control nonce, please use instead of
|
||
|
|
key_control_nonce_deprecated.
|
||
|
|
"""
|
||
|
|
client_version: builtins.str
|
||
|
|
"""Optional sub session context information. Required for using
|
||
|
|
SubLicenses from the PSSH.
|
||
|
|
repeated SubSessionData sub_session_data = 9;
|
||
|
|
"""
|
||
|
|
@property
|
||
|
|
def client_id(self) -> global___ClientIdentification:
|
||
|
|
"""The client_id provides information authenticating the calling device. It
|
||
|
|
contains the Widevine keybox token that was installed on the device at the
|
||
|
|
factory. This field or encrypted_client_id below is required for a valid
|
||
|
|
license request, but both should never be present in the same request.
|
||
|
|
"""
|
||
|
|
|
||
|
|
@property
|
||
|
|
def content_id(self) -> global___LicenseRequest.ContentIdentification: ...
|
||
|
|
@property
|
||
|
|
def encrypted_client_id(self) -> global___EncryptedClientIdentification:
|
||
|
|
"""Encrypted ClientIdentification message, used for privacy purposes."""
|
||
|
|
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
client_id: global___ClientIdentification | None = ...,
|
||
|
|
content_id: global___LicenseRequest.ContentIdentification | None = ...,
|
||
|
|
type: global___LicenseRequest.RequestType.ValueType | None = ...,
|
||
|
|
request_time: builtins.int | None = ...,
|
||
|
|
key_control_nonce_deprecated: builtins.bytes | None = ...,
|
||
|
|
protocol_version: global___ProtocolVersion.ValueType | None = ...,
|
||
|
|
key_control_nonce: builtins.int | None = ...,
|
||
|
|
encrypted_client_id: global___EncryptedClientIdentification | None = ...,
|
||
|
|
client_version: builtins.str | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["client_id", b"client_id", "client_version", b"client_version", "content_id", b"content_id", "encrypted_client_id", b"encrypted_client_id", "key_control_nonce", b"key_control_nonce", "key_control_nonce_deprecated", b"key_control_nonce_deprecated", "protocol_version", b"protocol_version", "request_time", b"request_time", "type", b"type"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["client_id", b"client_id", "client_version", b"client_version", "content_id", b"content_id", "encrypted_client_id", b"encrypted_client_id", "key_control_nonce", b"key_control_nonce", "key_control_nonce_deprecated", b"key_control_nonce_deprecated", "protocol_version", b"protocol_version", "request_time", b"request_time", "type", b"type"]) -> None: ...
|
||
|
|
|
||
|
|
global___LicenseRequest = LicenseRequest
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class MetricData(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
class _MetricType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _MetricTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MetricData._MetricType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
LATENCY: MetricData._MetricType.ValueType # 1
|
||
|
|
"""The time spent in the 'stage', specified in microseconds."""
|
||
|
|
TIMESTAMP: MetricData._MetricType.ValueType # 2
|
||
|
|
"""The UNIX epoch timestamp at which the 'stage' was first accessed in
|
||
|
|
microseconds.
|
||
|
|
"""
|
||
|
|
|
||
|
|
class MetricType(_MetricType, metaclass=_MetricTypeEnumTypeWrapper): ...
|
||
|
|
LATENCY: MetricData.MetricType.ValueType # 1
|
||
|
|
"""The time spent in the 'stage', specified in microseconds."""
|
||
|
|
TIMESTAMP: MetricData.MetricType.ValueType # 2
|
||
|
|
"""The UNIX epoch timestamp at which the 'stage' was first accessed in
|
||
|
|
microseconds.
|
||
|
|
"""
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class TypeValue(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
VALUE_FIELD_NUMBER: builtins.int
|
||
|
|
type: global___MetricData.MetricType.ValueType
|
||
|
|
value: builtins.int
|
||
|
|
"""The value associated with 'type'. For example if type == LATENCY, the
|
||
|
|
value would be the time in microseconds spent in this 'stage'.
|
||
|
|
"""
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
type: global___MetricData.MetricType.ValueType | None = ...,
|
||
|
|
value: builtins.int | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["type", b"type", "value", b"value"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["type", b"type", "value", b"value"]) -> None: ...
|
||
|
|
|
||
|
|
STAGE_NAME_FIELD_NUMBER: builtins.int
|
||
|
|
METRIC_DATA_FIELD_NUMBER: builtins.int
|
||
|
|
stage_name: builtins.str
|
||
|
|
"""'stage' that is currently processing the SignedMessage. Required."""
|
||
|
|
@property
|
||
|
|
def metric_data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MetricData.TypeValue]:
|
||
|
|
"""metric and associated value."""
|
||
|
|
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
stage_name: builtins.str | None = ...,
|
||
|
|
metric_data: collections.abc.Iterable[global___MetricData.TypeValue] | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["stage_name", b"stage_name"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["metric_data", b"metric_data", "stage_name", b"stage_name"]) -> None: ...
|
||
|
|
|
||
|
|
global___MetricData = MetricData
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class VersionInfo(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
LICENSE_SDK_VERSION_FIELD_NUMBER: builtins.int
|
||
|
|
LICENSE_SERVICE_VERSION_FIELD_NUMBER: builtins.int
|
||
|
|
license_sdk_version: builtins.str
|
||
|
|
"""License SDK version reported by the Widevine License SDK. This field
|
||
|
|
is populated automatically by the SDK.
|
||
|
|
"""
|
||
|
|
license_service_version: builtins.str
|
||
|
|
"""Version of the service hosting the license SDK. This field is optional.
|
||
|
|
It may be provided by the hosting service.
|
||
|
|
"""
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
license_sdk_version: builtins.str | None = ...,
|
||
|
|
license_service_version: builtins.str | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["license_sdk_version", b"license_sdk_version", "license_service_version", b"license_service_version"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["license_sdk_version", b"license_sdk_version", "license_service_version", b"license_service_version"]) -> None: ...
|
||
|
|
|
||
|
|
global___VersionInfo = VersionInfo
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class SignedMessage(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
class _MessageType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _MessageTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SignedMessage._MessageType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
LICENSE_REQUEST: SignedMessage._MessageType.ValueType # 1
|
||
|
|
LICENSE: SignedMessage._MessageType.ValueType # 2
|
||
|
|
ERROR_RESPONSE: SignedMessage._MessageType.ValueType # 3
|
||
|
|
SERVICE_CERTIFICATE_REQUEST: SignedMessage._MessageType.ValueType # 4
|
||
|
|
SERVICE_CERTIFICATE: SignedMessage._MessageType.ValueType # 5
|
||
|
|
SUB_LICENSE: SignedMessage._MessageType.ValueType # 6
|
||
|
|
CAS_LICENSE_REQUEST: SignedMessage._MessageType.ValueType # 7
|
||
|
|
CAS_LICENSE: SignedMessage._MessageType.ValueType # 8
|
||
|
|
EXTERNAL_LICENSE_REQUEST: SignedMessage._MessageType.ValueType # 9
|
||
|
|
EXTERNAL_LICENSE: SignedMessage._MessageType.ValueType # 10
|
||
|
|
|
||
|
|
class MessageType(_MessageType, metaclass=_MessageTypeEnumTypeWrapper): ...
|
||
|
|
LICENSE_REQUEST: SignedMessage.MessageType.ValueType # 1
|
||
|
|
LICENSE: SignedMessage.MessageType.ValueType # 2
|
||
|
|
ERROR_RESPONSE: SignedMessage.MessageType.ValueType # 3
|
||
|
|
SERVICE_CERTIFICATE_REQUEST: SignedMessage.MessageType.ValueType # 4
|
||
|
|
SERVICE_CERTIFICATE: SignedMessage.MessageType.ValueType # 5
|
||
|
|
SUB_LICENSE: SignedMessage.MessageType.ValueType # 6
|
||
|
|
CAS_LICENSE_REQUEST: SignedMessage.MessageType.ValueType # 7
|
||
|
|
CAS_LICENSE: SignedMessage.MessageType.ValueType # 8
|
||
|
|
EXTERNAL_LICENSE_REQUEST: SignedMessage.MessageType.ValueType # 9
|
||
|
|
EXTERNAL_LICENSE: SignedMessage.MessageType.ValueType # 10
|
||
|
|
|
||
|
|
class _SessionKeyType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _SessionKeyTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SignedMessage._SessionKeyType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
UNDEFINED: SignedMessage._SessionKeyType.ValueType # 0
|
||
|
|
WRAPPED_AES_KEY: SignedMessage._SessionKeyType.ValueType # 1
|
||
|
|
EPHERMERAL_ECC_PUBLIC_KEY: SignedMessage._SessionKeyType.ValueType # 2
|
||
|
|
|
||
|
|
class SessionKeyType(_SessionKeyType, metaclass=_SessionKeyTypeEnumTypeWrapper): ...
|
||
|
|
UNDEFINED: SignedMessage.SessionKeyType.ValueType # 0
|
||
|
|
WRAPPED_AES_KEY: SignedMessage.SessionKeyType.ValueType # 1
|
||
|
|
EPHERMERAL_ECC_PUBLIC_KEY: SignedMessage.SessionKeyType.ValueType # 2
|
||
|
|
|
||
|
|
TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
MSG_FIELD_NUMBER: builtins.int
|
||
|
|
SIGNATURE_FIELD_NUMBER: builtins.int
|
||
|
|
SESSION_KEY_FIELD_NUMBER: builtins.int
|
||
|
|
REMOTE_ATTESTATION_FIELD_NUMBER: builtins.int
|
||
|
|
METRIC_DATA_FIELD_NUMBER: builtins.int
|
||
|
|
SERVICE_VERSION_INFO_FIELD_NUMBER: builtins.int
|
||
|
|
SESSION_KEY_TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
OEMCRYPTO_CORE_MESSAGE_FIELD_NUMBER: builtins.int
|
||
|
|
USING_SECONDARY_KEY_FIELD_NUMBER: builtins.int
|
||
|
|
type: global___SignedMessage.MessageType.ValueType
|
||
|
|
msg: builtins.bytes
|
||
|
|
signature: builtins.bytes
|
||
|
|
"""Required field that contains the signature of the bytes of msg.
|
||
|
|
For license requests, the signing algorithm is determined by the
|
||
|
|
certificate contained in the request.
|
||
|
|
For license responses, the signing algorithm is HMAC with signing key based
|
||
|
|
on |session_key|.
|
||
|
|
"""
|
||
|
|
session_key: builtins.bytes
|
||
|
|
"""If populated, the contents of this field will be signaled by the
|
||
|
|
|session_key_type| type. If the |session_key_type| is WRAPPED_AES_KEY the
|
||
|
|
key is the bytes of an encrypted AES key. If the |session_key_type| is
|
||
|
|
EPHERMERAL_ECC_PUBLIC_KEY the field contains the bytes of an RFC5208 ASN1
|
||
|
|
serialized ECC public key.
|
||
|
|
"""
|
||
|
|
remote_attestation: builtins.bytes
|
||
|
|
"""Remote attestation data which will be present in the initial license
|
||
|
|
request for ChromeOS client devices operating in verified mode. Remote
|
||
|
|
attestation challenge data is |msg| field above. Optional.
|
||
|
|
"""
|
||
|
|
session_key_type: global___SignedMessage.SessionKeyType.ValueType
|
||
|
|
"""Optional field that contains the algorithm type used to generate the
|
||
|
|
session_key and signature in a LICENSE message.
|
||
|
|
"""
|
||
|
|
oemcrypto_core_message: builtins.bytes
|
||
|
|
"""The core message is the simple serialization of fields used by OEMCrypto.
|
||
|
|
This field was introduced in OEMCrypto API v16.
|
||
|
|
"""
|
||
|
|
using_secondary_key: builtins.bool
|
||
|
|
@property
|
||
|
|
def metric_data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MetricData]: ...
|
||
|
|
@property
|
||
|
|
def service_version_info(self) -> global___VersionInfo:
|
||
|
|
"""Version information from the SDK and license service. This information is
|
||
|
|
provided in the license response.
|
||
|
|
"""
|
||
|
|
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
type: global___SignedMessage.MessageType.ValueType | None = ...,
|
||
|
|
msg: builtins.bytes | None = ...,
|
||
|
|
signature: builtins.bytes | None = ...,
|
||
|
|
session_key: builtins.bytes | None = ...,
|
||
|
|
remote_attestation: builtins.bytes | None = ...,
|
||
|
|
metric_data: collections.abc.Iterable[global___MetricData] | None = ...,
|
||
|
|
service_version_info: global___VersionInfo | None = ...,
|
||
|
|
session_key_type: global___SignedMessage.SessionKeyType.ValueType | None = ...,
|
||
|
|
oemcrypto_core_message: builtins.bytes | None = ...,
|
||
|
|
using_secondary_key: builtins.bool | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["msg", b"msg", "oemcrypto_core_message", b"oemcrypto_core_message", "remote_attestation", b"remote_attestation", "service_version_info", b"service_version_info", "session_key", b"session_key", "session_key_type", b"session_key_type", "signature", b"signature", "type", b"type", "using_secondary_key", b"using_secondary_key"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["metric_data", b"metric_data", "msg", b"msg", "oemcrypto_core_message", b"oemcrypto_core_message", "remote_attestation", b"remote_attestation", "service_version_info", b"service_version_info", "session_key", b"session_key", "session_key_type", b"session_key_type", "signature", b"signature", "type", b"type", "using_secondary_key", b"using_secondary_key"]) -> None: ...
|
||
|
|
|
||
|
|
global___SignedMessage = SignedMessage
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class ProvisioningResponse(google.protobuf.message.Message):
|
||
|
|
"""----------------------------------------------------------------------------
|
||
|
|
certificate_provisioning.proto
|
||
|
|
----------------------------------------------------------------------------
|
||
|
|
Description of section:
|
||
|
|
Public protocol buffer definitions for Widevine Device Certificate
|
||
|
|
Provisioning protocol.
|
||
|
|
|
||
|
|
Provisioning response sent by the provisioning server to client devices.
|
||
|
|
This message is used for both regular Widevine DRM certificates and for
|
||
|
|
application-specific X.509 certificates.
|
||
|
|
"""
|
||
|
|
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
class _ProvisioningStatus:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _ProvisioningStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ProvisioningResponse._ProvisioningStatus.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
NO_ERROR: ProvisioningResponse._ProvisioningStatus.ValueType # 0
|
||
|
|
"""Indicates a valid provisioning response"""
|
||
|
|
REVOKED_DEVICE_CREDENTIALS: ProvisioningResponse._ProvisioningStatus.ValueType # 1
|
||
|
|
"""The device credentials have been revoked. Provisioning is not possible."""
|
||
|
|
REVOKED_DEVICE_SERIES: ProvisioningResponse._ProvisioningStatus.ValueType # 2
|
||
|
|
"""Devices in this series have been revoked. Provisioning is not possible."""
|
||
|
|
|
||
|
|
class ProvisioningStatus(_ProvisioningStatus, metaclass=_ProvisioningStatusEnumTypeWrapper): ...
|
||
|
|
NO_ERROR: ProvisioningResponse.ProvisioningStatus.ValueType # 0
|
||
|
|
"""Indicates a valid provisioning response"""
|
||
|
|
REVOKED_DEVICE_CREDENTIALS: ProvisioningResponse.ProvisioningStatus.ValueType # 1
|
||
|
|
"""The device credentials have been revoked. Provisioning is not possible."""
|
||
|
|
REVOKED_DEVICE_SERIES: ProvisioningResponse.ProvisioningStatus.ValueType # 2
|
||
|
|
"""Devices in this series have been revoked. Provisioning is not possible."""
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class OtaKeybox(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
DEVICE_KEY_ENCRYPTION_IV_FIELD_NUMBER: builtins.int
|
||
|
|
ENCRYPTED_DEVICE_KEY_FIELD_NUMBER: builtins.int
|
||
|
|
DEVICE_CA_TOKEN_FIELD_NUMBER: builtins.int
|
||
|
|
device_key_encryption_iv: builtins.bytes
|
||
|
|
"""Iv used along with SessionKeys.encryption_key for encrypting device key."""
|
||
|
|
encrypted_device_key: builtins.bytes
|
||
|
|
"""Device key component of the keybox, encrypted using the
|
||
|
|
SessionKeys.encryption_key in the request and |device_key_encryption_iv|
|
||
|
|
above.
|
||
|
|
"""
|
||
|
|
device_ca_token: builtins.bytes
|
||
|
|
"""Device CA token component of the keybox."""
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
device_key_encryption_iv: builtins.bytes | None = ...,
|
||
|
|
encrypted_device_key: builtins.bytes | None = ...,
|
||
|
|
device_ca_token: builtins.bytes | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["device_ca_token", b"device_ca_token", "device_key_encryption_iv", b"device_key_encryption_iv", "encrypted_device_key", b"encrypted_device_key"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["device_ca_token", b"device_ca_token", "device_key_encryption_iv", b"device_key_encryption_iv", "encrypted_device_key", b"encrypted_device_key"]) -> None: ...
|
||
|
|
|
||
|
|
DEVICE_RSA_KEY_FIELD_NUMBER: builtins.int
|
||
|
|
DEVICE_RSA_KEY_IV_FIELD_NUMBER: builtins.int
|
||
|
|
DEVICE_CERTIFICATE_FIELD_NUMBER: builtins.int
|
||
|
|
NONCE_FIELD_NUMBER: builtins.int
|
||
|
|
WRAPPING_KEY_FIELD_NUMBER: builtins.int
|
||
|
|
OTA_KEYBOX_FIELD_NUMBER: builtins.int
|
||
|
|
STATUS_FIELD_NUMBER: builtins.int
|
||
|
|
device_rsa_key: builtins.bytes
|
||
|
|
"""AES-128 encrypted device private RSA key. PKCS#1 ASN.1 DER-encoded.
|
||
|
|
Required. For X.509 certificates, the private RSA key may also include
|
||
|
|
a prefix as specified by private_key_prefix in the X509CertificateMetadata
|
||
|
|
proto message.
|
||
|
|
"""
|
||
|
|
device_rsa_key_iv: builtins.bytes
|
||
|
|
"""Initialization vector used to encrypt device_rsa_key. Required."""
|
||
|
|
device_certificate: builtins.bytes
|
||
|
|
"""For Widevine DRM certificates, this contains the serialized
|
||
|
|
SignedDrmCertificate. For X.509 certificates, this contains the PEM
|
||
|
|
encoded X.509 certificate. Required.
|
||
|
|
"""
|
||
|
|
nonce: builtins.bytes
|
||
|
|
"""Nonce value matching nonce in ProvisioningRequest. Required."""
|
||
|
|
wrapping_key: builtins.bytes
|
||
|
|
"""Key used to wrap device_rsa_key when DRM provisioning an OEM factory
|
||
|
|
provisioned device. Encrypted with the device OEM public key using
|
||
|
|
RSA-OAEP.
|
||
|
|
"""
|
||
|
|
status: global___ProvisioningResponse.ProvisioningStatus.ValueType
|
||
|
|
"""The provisioning service may return a ProvisioningStatus. Fields other
|
||
|
|
than |status| may be empty and should be ignored if the |status|
|
||
|
|
is present and not NO_ERROR
|
||
|
|
"""
|
||
|
|
@property
|
||
|
|
def ota_keybox(self) -> global___ProvisioningResponse.OtaKeybox:
|
||
|
|
"""Only populated in OTA keybox provisioning response."""
|
||
|
|
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
device_rsa_key: builtins.bytes | None = ...,
|
||
|
|
device_rsa_key_iv: builtins.bytes | None = ...,
|
||
|
|
device_certificate: builtins.bytes | None = ...,
|
||
|
|
nonce: builtins.bytes | None = ...,
|
||
|
|
wrapping_key: builtins.bytes | None = ...,
|
||
|
|
ota_keybox: global___ProvisioningResponse.OtaKeybox | None = ...,
|
||
|
|
status: global___ProvisioningResponse.ProvisioningStatus.ValueType | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["device_certificate", b"device_certificate", "device_rsa_key", b"device_rsa_key", "device_rsa_key_iv", b"device_rsa_key_iv", "nonce", b"nonce", "ota_keybox", b"ota_keybox", "status", b"status", "wrapping_key", b"wrapping_key"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["device_certificate", b"device_certificate", "device_rsa_key", b"device_rsa_key", "device_rsa_key_iv", b"device_rsa_key_iv", "nonce", b"nonce", "ota_keybox", b"ota_keybox", "status", b"status", "wrapping_key", b"wrapping_key"]) -> None: ...
|
||
|
|
|
||
|
|
global___ProvisioningResponse = ProvisioningResponse
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class SignedProvisioningContext(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
PROVISIONING_CONTEXT_FIELD_NUMBER: builtins.int
|
||
|
|
SIGNATURE_FIELD_NUMBER: builtins.int
|
||
|
|
provisioning_context: builtins.bytes
|
||
|
|
"""ProvisioningContext in bytes."""
|
||
|
|
signature: builtins.bytes
|
||
|
|
"""RSASSA-PSS signature of provisioning_context. Signed with service private
|
||
|
|
key.
|
||
|
|
"""
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
provisioning_context: builtins.bytes | None = ...,
|
||
|
|
signature: builtins.bytes | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["provisioning_context", b"provisioning_context", "signature", b"signature"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["provisioning_context", b"provisioning_context", "signature", b"signature"]) -> None: ...
|
||
|
|
|
||
|
|
global___SignedProvisioningContext = SignedProvisioningContext
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class SignedProvisioningMessage(google.protobuf.message.Message):
|
||
|
|
"""Serialized ProvisioningRequest or ProvisioningResponse signed with
|
||
|
|
The message authentication key.
|
||
|
|
"""
|
||
|
|
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
class _ProvisioningProtocolVersion:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _ProvisioningProtocolVersionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SignedProvisioningMessage._ProvisioningProtocolVersion.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
VERSION_UNSPECIFIED: SignedProvisioningMessage._ProvisioningProtocolVersion.ValueType # 0
|
||
|
|
VERSION_1: SignedProvisioningMessage._ProvisioningProtocolVersion.ValueType # 1
|
||
|
|
VERSION_1_1: SignedProvisioningMessage._ProvisioningProtocolVersion.ValueType # 2
|
||
|
|
"""Version 1.1 changed error handling. Some errors are returned as a field
|
||
|
|
in a response message rather than being handled as errors via the API
|
||
|
|
implementation. E.g. embedded in the ProvisioningResponse rather than
|
||
|
|
returning a 400 error to the caller.
|
||
|
|
"""
|
||
|
|
VERSION_2: SignedProvisioningMessage._ProvisioningProtocolVersion.ValueType # 3
|
||
|
|
"""Version 2 will implement a larger change of the protocol definition
|
||
|
|
in protobufs. This will provide a cleaner separation between protocols.
|
||
|
|
"""
|
||
|
|
|
||
|
|
class ProvisioningProtocolVersion(_ProvisioningProtocolVersion, metaclass=_ProvisioningProtocolVersionEnumTypeWrapper): ...
|
||
|
|
VERSION_UNSPECIFIED: SignedProvisioningMessage.ProvisioningProtocolVersion.ValueType # 0
|
||
|
|
VERSION_1: SignedProvisioningMessage.ProvisioningProtocolVersion.ValueType # 1
|
||
|
|
VERSION_1_1: SignedProvisioningMessage.ProvisioningProtocolVersion.ValueType # 2
|
||
|
|
"""Version 1.1 changed error handling. Some errors are returned as a field
|
||
|
|
in a response message rather than being handled as errors via the API
|
||
|
|
implementation. E.g. embedded in the ProvisioningResponse rather than
|
||
|
|
returning a 400 error to the caller.
|
||
|
|
"""
|
||
|
|
VERSION_2: SignedProvisioningMessage.ProvisioningProtocolVersion.ValueType # 3
|
||
|
|
"""Version 2 will implement a larger change of the protocol definition
|
||
|
|
in protobufs. This will provide a cleaner separation between protocols.
|
||
|
|
"""
|
||
|
|
|
||
|
|
class _ProvisioningType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _ProvisioningTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SignedProvisioningMessage._ProvisioningType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
PROVISIONING_TYPE_UNSPECIFIED: SignedProvisioningMessage._ProvisioningType.ValueType # 0
|
||
|
|
SERVICE_CERTIFICATE_REQUEST: SignedProvisioningMessage._ProvisioningType.ValueType # 1
|
||
|
|
"""Service certificate request."""
|
||
|
|
PROVISIONING_20: SignedProvisioningMessage._ProvisioningType.ValueType # 2
|
||
|
|
"""Keybox factory-provisioned devices."""
|
||
|
|
PROVISIONING_30: SignedProvisioningMessage._ProvisioningType.ValueType # 3
|
||
|
|
"""OEM certificate factory-provisioned devices."""
|
||
|
|
ARCPP_PROVISIONING: SignedProvisioningMessage._ProvisioningType.ValueType # 4
|
||
|
|
"""ChromeOS/Arc++ devices."""
|
||
|
|
INTEL_SIGMA_101: SignedProvisioningMessage._ProvisioningType.ValueType # 101
|
||
|
|
"""Intel Sigma 1.0.1 protocol."""
|
||
|
|
|
||
|
|
class ProvisioningType(_ProvisioningType, metaclass=_ProvisioningTypeEnumTypeWrapper):
|
||
|
|
"""This enum was renamed to avoid confusion"""
|
||
|
|
|
||
|
|
PROVISIONING_TYPE_UNSPECIFIED: SignedProvisioningMessage.ProvisioningType.ValueType # 0
|
||
|
|
SERVICE_CERTIFICATE_REQUEST: SignedProvisioningMessage.ProvisioningType.ValueType # 1
|
||
|
|
"""Service certificate request."""
|
||
|
|
PROVISIONING_20: SignedProvisioningMessage.ProvisioningType.ValueType # 2
|
||
|
|
"""Keybox factory-provisioned devices."""
|
||
|
|
PROVISIONING_30: SignedProvisioningMessage.ProvisioningType.ValueType # 3
|
||
|
|
"""OEM certificate factory-provisioned devices."""
|
||
|
|
ARCPP_PROVISIONING: SignedProvisioningMessage.ProvisioningType.ValueType # 4
|
||
|
|
"""ChromeOS/Arc++ devices."""
|
||
|
|
INTEL_SIGMA_101: SignedProvisioningMessage.ProvisioningType.ValueType # 101
|
||
|
|
"""Intel Sigma 1.0.1 protocol."""
|
||
|
|
|
||
|
|
MESSAGE_FIELD_NUMBER: builtins.int
|
||
|
|
SIGNATURE_FIELD_NUMBER: builtins.int
|
||
|
|
PROVISIONING_TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
SIGNED_PROVISIONING_CONTEXT_FIELD_NUMBER: builtins.int
|
||
|
|
REMOTE_ATTESTATION_FIELD_NUMBER: builtins.int
|
||
|
|
OEMCRYPTO_CORE_MESSAGE_FIELD_NUMBER: builtins.int
|
||
|
|
HASH_ALGORITHM_FIELD_NUMBER: builtins.int
|
||
|
|
PROTOCOL_VERSION_FIELD_NUMBER: builtins.int
|
||
|
|
message: builtins.bytes
|
||
|
|
"""Serialized protobuf message for the corresponding protocol and stage of
|
||
|
|
the provisioning exchange. ProvisioningRequest or ProvisioningResponse
|
||
|
|
in the case of Provisioning 2.0, 3.0 and ARCPP_PROVISIONING. Required.
|
||
|
|
"""
|
||
|
|
signature: builtins.bytes
|
||
|
|
"""HMAC-SHA256 (Keybox) or RSASSA-PSS (OEM) signature of message. Required
|
||
|
|
for provisioning 2.0 and 3.0. For ARCPP_PROVISIONING, only used in
|
||
|
|
response.
|
||
|
|
"""
|
||
|
|
provisioning_type: global___SignedProvisioningMessage.ProvisioningType.ValueType
|
||
|
|
"""Version number of provisioning protocol."""
|
||
|
|
remote_attestation: builtins.bytes
|
||
|
|
"""Remote attestation data to authenticate that the ChromeOS client device
|
||
|
|
is operating in verified mode. Remote attestation challenge data is
|
||
|
|
|message| field above. Required for ARCPP_PROVISIONING request.
|
||
|
|
It contains signature of |message|.
|
||
|
|
"""
|
||
|
|
oemcrypto_core_message: builtins.bytes
|
||
|
|
"""The core message is the simple serialization of fields used by OEMCrypto.
|
||
|
|
This field was introduced in OEMCrypto API v16. The core message format is
|
||
|
|
documented in the "Widevine Core Message Serialization".
|
||
|
|
"""
|
||
|
|
hash_algorithm: global___HashAlgorithmProto.ValueType
|
||
|
|
"""Optional field that indicates the hash algorithm used in signature scheme."""
|
||
|
|
protocol_version: global___SignedProvisioningMessage.ProvisioningProtocolVersion.ValueType
|
||
|
|
"""Indicates which version of the protocol is in use."""
|
||
|
|
@property
|
||
|
|
def signed_provisioning_context(self) -> global___SignedProvisioningContext:
|
||
|
|
"""Protocol-specific context / state information for multiple-exchange,
|
||
|
|
stateful provisioning protocols. Optional.
|
||
|
|
"""
|
||
|
|
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
message: builtins.bytes | None = ...,
|
||
|
|
signature: builtins.bytes | None = ...,
|
||
|
|
provisioning_type: global___SignedProvisioningMessage.ProvisioningType.ValueType | None = ...,
|
||
|
|
signed_provisioning_context: global___SignedProvisioningContext | None = ...,
|
||
|
|
remote_attestation: builtins.bytes | None = ...,
|
||
|
|
oemcrypto_core_message: builtins.bytes | None = ...,
|
||
|
|
hash_algorithm: global___HashAlgorithmProto.ValueType | None = ...,
|
||
|
|
protocol_version: global___SignedProvisioningMessage.ProvisioningProtocolVersion.ValueType | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["hash_algorithm", b"hash_algorithm", "message", b"message", "oemcrypto_core_message", b"oemcrypto_core_message", "protocol_version", b"protocol_version", "provisioning_type", b"provisioning_type", "remote_attestation", b"remote_attestation", "signature", b"signature", "signed_provisioning_context", b"signed_provisioning_context"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["hash_algorithm", b"hash_algorithm", "message", b"message", "oemcrypto_core_message", b"oemcrypto_core_message", "protocol_version", b"protocol_version", "provisioning_type", b"provisioning_type", "remote_attestation", b"remote_attestation", "signature", b"signature", "signed_provisioning_context", b"signed_provisioning_context"]) -> None: ...
|
||
|
|
|
||
|
|
global___SignedProvisioningMessage = SignedProvisioningMessage
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class ClientIdentification(google.protobuf.message.Message):
|
||
|
|
"""----------------------------------------------------------------------------
|
||
|
|
client_identification.proto
|
||
|
|
----------------------------------------------------------------------------
|
||
|
|
Description of section:
|
||
|
|
ClientIdentification messages used by provisioning and license protocols.
|
||
|
|
|
||
|
|
ClientIdentification message used to authenticate the client device.
|
||
|
|
"""
|
||
|
|
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
class _TokenType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _TokenTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ClientIdentification._TokenType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
KEYBOX: ClientIdentification._TokenType.ValueType # 0
|
||
|
|
DRM_DEVICE_CERTIFICATE: ClientIdentification._TokenType.ValueType # 1
|
||
|
|
REMOTE_ATTESTATION_CERTIFICATE: ClientIdentification._TokenType.ValueType # 2
|
||
|
|
OEM_DEVICE_CERTIFICATE: ClientIdentification._TokenType.ValueType # 3
|
||
|
|
|
||
|
|
class TokenType(_TokenType, metaclass=_TokenTypeEnumTypeWrapper): ...
|
||
|
|
KEYBOX: ClientIdentification.TokenType.ValueType # 0
|
||
|
|
DRM_DEVICE_CERTIFICATE: ClientIdentification.TokenType.ValueType # 1
|
||
|
|
REMOTE_ATTESTATION_CERTIFICATE: ClientIdentification.TokenType.ValueType # 2
|
||
|
|
OEM_DEVICE_CERTIFICATE: ClientIdentification.TokenType.ValueType # 3
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class NameValue(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
NAME_FIELD_NUMBER: builtins.int
|
||
|
|
VALUE_FIELD_NUMBER: builtins.int
|
||
|
|
name: builtins.str
|
||
|
|
value: builtins.str
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
name: builtins.str | None = ...,
|
||
|
|
value: builtins.str | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["name", b"name", "value", b"value"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["name", b"name", "value", b"value"]) -> None: ...
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class ClientCapabilities(google.protobuf.message.Message):
|
||
|
|
"""Capabilities which not all clients may support. Used for the license
|
||
|
|
exchange protocol only.
|
||
|
|
"""
|
||
|
|
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
class _HdcpVersion:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _HdcpVersionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ClientIdentification.ClientCapabilities._HdcpVersion.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
HDCP_NONE: ClientIdentification.ClientCapabilities._HdcpVersion.ValueType # 0
|
||
|
|
HDCP_V1: ClientIdentification.ClientCapabilities._HdcpVersion.ValueType # 1
|
||
|
|
HDCP_V2: ClientIdentification.ClientCapabilities._HdcpVersion.ValueType # 2
|
||
|
|
HDCP_V2_1: ClientIdentification.ClientCapabilities._HdcpVersion.ValueType # 3
|
||
|
|
HDCP_V2_2: ClientIdentification.ClientCapabilities._HdcpVersion.ValueType # 4
|
||
|
|
HDCP_V2_3: ClientIdentification.ClientCapabilities._HdcpVersion.ValueType # 5
|
||
|
|
HDCP_NO_DIGITAL_OUTPUT: ClientIdentification.ClientCapabilities._HdcpVersion.ValueType # 255
|
||
|
|
|
||
|
|
class HdcpVersion(_HdcpVersion, metaclass=_HdcpVersionEnumTypeWrapper): ...
|
||
|
|
HDCP_NONE: ClientIdentification.ClientCapabilities.HdcpVersion.ValueType # 0
|
||
|
|
HDCP_V1: ClientIdentification.ClientCapabilities.HdcpVersion.ValueType # 1
|
||
|
|
HDCP_V2: ClientIdentification.ClientCapabilities.HdcpVersion.ValueType # 2
|
||
|
|
HDCP_V2_1: ClientIdentification.ClientCapabilities.HdcpVersion.ValueType # 3
|
||
|
|
HDCP_V2_2: ClientIdentification.ClientCapabilities.HdcpVersion.ValueType # 4
|
||
|
|
HDCP_V2_3: ClientIdentification.ClientCapabilities.HdcpVersion.ValueType # 5
|
||
|
|
HDCP_NO_DIGITAL_OUTPUT: ClientIdentification.ClientCapabilities.HdcpVersion.ValueType # 255
|
||
|
|
|
||
|
|
class _CertificateKeyType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _CertificateKeyTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ClientIdentification.ClientCapabilities._CertificateKeyType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
RSA_2048: ClientIdentification.ClientCapabilities._CertificateKeyType.ValueType # 0
|
||
|
|
RSA_3072: ClientIdentification.ClientCapabilities._CertificateKeyType.ValueType # 1
|
||
|
|
ECC_SECP256R1: ClientIdentification.ClientCapabilities._CertificateKeyType.ValueType # 2
|
||
|
|
ECC_SECP384R1: ClientIdentification.ClientCapabilities._CertificateKeyType.ValueType # 3
|
||
|
|
ECC_SECP521R1: ClientIdentification.ClientCapabilities._CertificateKeyType.ValueType # 4
|
||
|
|
|
||
|
|
class CertificateKeyType(_CertificateKeyType, metaclass=_CertificateKeyTypeEnumTypeWrapper): ...
|
||
|
|
RSA_2048: ClientIdentification.ClientCapabilities.CertificateKeyType.ValueType # 0
|
||
|
|
RSA_3072: ClientIdentification.ClientCapabilities.CertificateKeyType.ValueType # 1
|
||
|
|
ECC_SECP256R1: ClientIdentification.ClientCapabilities.CertificateKeyType.ValueType # 2
|
||
|
|
ECC_SECP384R1: ClientIdentification.ClientCapabilities.CertificateKeyType.ValueType # 3
|
||
|
|
ECC_SECP521R1: ClientIdentification.ClientCapabilities.CertificateKeyType.ValueType # 4
|
||
|
|
|
||
|
|
class _AnalogOutputCapabilities:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _AnalogOutputCapabilitiesEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ClientIdentification.ClientCapabilities._AnalogOutputCapabilities.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
ANALOG_OUTPUT_UNKNOWN: ClientIdentification.ClientCapabilities._AnalogOutputCapabilities.ValueType # 0
|
||
|
|
ANALOG_OUTPUT_NONE: ClientIdentification.ClientCapabilities._AnalogOutputCapabilities.ValueType # 1
|
||
|
|
ANALOG_OUTPUT_SUPPORTED: ClientIdentification.ClientCapabilities._AnalogOutputCapabilities.ValueType # 2
|
||
|
|
ANALOG_OUTPUT_SUPPORTS_CGMS_A: ClientIdentification.ClientCapabilities._AnalogOutputCapabilities.ValueType # 3
|
||
|
|
|
||
|
|
class AnalogOutputCapabilities(_AnalogOutputCapabilities, metaclass=_AnalogOutputCapabilitiesEnumTypeWrapper): ...
|
||
|
|
ANALOG_OUTPUT_UNKNOWN: ClientIdentification.ClientCapabilities.AnalogOutputCapabilities.ValueType # 0
|
||
|
|
ANALOG_OUTPUT_NONE: ClientIdentification.ClientCapabilities.AnalogOutputCapabilities.ValueType # 1
|
||
|
|
ANALOG_OUTPUT_SUPPORTED: ClientIdentification.ClientCapabilities.AnalogOutputCapabilities.ValueType # 2
|
||
|
|
ANALOG_OUTPUT_SUPPORTS_CGMS_A: ClientIdentification.ClientCapabilities.AnalogOutputCapabilities.ValueType # 3
|
||
|
|
|
||
|
|
class _WatermarkingSupport:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _WatermarkingSupportEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ClientIdentification.ClientCapabilities._WatermarkingSupport.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
WATERMARKING_SUPPORT_UNKNOWN: ClientIdentification.ClientCapabilities._WatermarkingSupport.ValueType # 0
|
||
|
|
WATERMARKING_NOT_SUPPORTED: ClientIdentification.ClientCapabilities._WatermarkingSupport.ValueType # 1
|
||
|
|
WATERMARKING_CONFIGURABLE: ClientIdentification.ClientCapabilities._WatermarkingSupport.ValueType # 2
|
||
|
|
WATERMARKING_ALWAYS_ON: ClientIdentification.ClientCapabilities._WatermarkingSupport.ValueType # 3
|
||
|
|
|
||
|
|
class WatermarkingSupport(_WatermarkingSupport, metaclass=_WatermarkingSupportEnumTypeWrapper): ...
|
||
|
|
WATERMARKING_SUPPORT_UNKNOWN: ClientIdentification.ClientCapabilities.WatermarkingSupport.ValueType # 0
|
||
|
|
WATERMARKING_NOT_SUPPORTED: ClientIdentification.ClientCapabilities.WatermarkingSupport.ValueType # 1
|
||
|
|
WATERMARKING_CONFIGURABLE: ClientIdentification.ClientCapabilities.WatermarkingSupport.ValueType # 2
|
||
|
|
WATERMARKING_ALWAYS_ON: ClientIdentification.ClientCapabilities.WatermarkingSupport.ValueType # 3
|
||
|
|
|
||
|
|
CLIENT_TOKEN_FIELD_NUMBER: builtins.int
|
||
|
|
SESSION_TOKEN_FIELD_NUMBER: builtins.int
|
||
|
|
VIDEO_RESOLUTION_CONSTRAINTS_FIELD_NUMBER: builtins.int
|
||
|
|
MAX_HDCP_VERSION_FIELD_NUMBER: builtins.int
|
||
|
|
OEM_CRYPTO_API_VERSION_FIELD_NUMBER: builtins.int
|
||
|
|
ANTI_ROLLBACK_USAGE_TABLE_FIELD_NUMBER: builtins.int
|
||
|
|
SRM_VERSION_FIELD_NUMBER: builtins.int
|
||
|
|
CAN_UPDATE_SRM_FIELD_NUMBER: builtins.int
|
||
|
|
SUPPORTED_CERTIFICATE_KEY_TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
ANALOG_OUTPUT_CAPABILITIES_FIELD_NUMBER: builtins.int
|
||
|
|
CAN_DISABLE_ANALOG_OUTPUT_FIELD_NUMBER: builtins.int
|
||
|
|
RESOURCE_RATING_TIER_FIELD_NUMBER: builtins.int
|
||
|
|
WATERMARKING_SUPPORT_FIELD_NUMBER: builtins.int
|
||
|
|
INITIAL_RENEWAL_DELAY_BASE_FIELD_NUMBER: builtins.int
|
||
|
|
client_token: builtins.bool
|
||
|
|
session_token: builtins.bool
|
||
|
|
video_resolution_constraints: builtins.bool
|
||
|
|
max_hdcp_version: global___ClientIdentification.ClientCapabilities.HdcpVersion.ValueType
|
||
|
|
oem_crypto_api_version: builtins.int
|
||
|
|
anti_rollback_usage_table: builtins.bool
|
||
|
|
"""Client has hardware support for protecting the usage table, such as
|
||
|
|
storing the generation number in secure memory. For Details, see:
|
||
|
|
Widevine Modular DRM Security Integration Guide for CENC
|
||
|
|
"""
|
||
|
|
srm_version: builtins.int
|
||
|
|
"""The client shall report |srm_version| if available."""
|
||
|
|
can_update_srm: builtins.bool
|
||
|
|
"""A device may have SRM data, and report a version, but may not be capable
|
||
|
|
of updating SRM data.
|
||
|
|
"""
|
||
|
|
analog_output_capabilities: global___ClientIdentification.ClientCapabilities.AnalogOutputCapabilities.ValueType
|
||
|
|
can_disable_analog_output: builtins.bool
|
||
|
|
resource_rating_tier: builtins.int
|
||
|
|
"""Clients can indicate a performance level supported by OEMCrypto.
|
||
|
|
This will allow applications and providers to choose an appropriate
|
||
|
|
quality of content to serve. Currently defined tiers are
|
||
|
|
1 (low), 2 (medium) and 3 (high). Any other value indicates that
|
||
|
|
the resource rating is unavailable or reporting erroneous values
|
||
|
|
for that device. For details see,
|
||
|
|
Widevine Modular DRM Security Integration Guide for CENC
|
||
|
|
"""
|
||
|
|
watermarking_support: global___ClientIdentification.ClientCapabilities.WatermarkingSupport.ValueType
|
||
|
|
initial_renewal_delay_base: builtins.bool
|
||
|
|
@property
|
||
|
|
def supported_certificate_key_type(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___ClientIdentification.ClientCapabilities.CertificateKeyType.ValueType]: ...
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
client_token: builtins.bool | None = ...,
|
||
|
|
session_token: builtins.bool | None = ...,
|
||
|
|
video_resolution_constraints: builtins.bool | None = ...,
|
||
|
|
max_hdcp_version: global___ClientIdentification.ClientCapabilities.HdcpVersion.ValueType | None = ...,
|
||
|
|
oem_crypto_api_version: builtins.int | None = ...,
|
||
|
|
anti_rollback_usage_table: builtins.bool | None = ...,
|
||
|
|
srm_version: builtins.int | None = ...,
|
||
|
|
can_update_srm: builtins.bool | None = ...,
|
||
|
|
supported_certificate_key_type: collections.abc.Iterable[global___ClientIdentification.ClientCapabilities.CertificateKeyType.ValueType] | None = ...,
|
||
|
|
analog_output_capabilities: global___ClientIdentification.ClientCapabilities.AnalogOutputCapabilities.ValueType | None = ...,
|
||
|
|
can_disable_analog_output: builtins.bool | None = ...,
|
||
|
|
resource_rating_tier: builtins.int | None = ...,
|
||
|
|
watermarking_support: global___ClientIdentification.ClientCapabilities.WatermarkingSupport.ValueType | None = ...,
|
||
|
|
initial_renewal_delay_base: builtins.bool | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["analog_output_capabilities", b"analog_output_capabilities", "anti_rollback_usage_table", b"anti_rollback_usage_table", "can_disable_analog_output", b"can_disable_analog_output", "can_update_srm", b"can_update_srm", "client_token", b"client_token", "initial_renewal_delay_base", b"initial_renewal_delay_base", "max_hdcp_version", b"max_hdcp_version", "oem_crypto_api_version", b"oem_crypto_api_version", "resource_rating_tier", b"resource_rating_tier", "session_token", b"session_token", "srm_version", b"srm_version", "video_resolution_constraints", b"video_resolution_constraints", "watermarking_support", b"watermarking_support"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["analog_output_capabilities", b"analog_output_capabilities", "anti_rollback_usage_table", b"anti_rollback_usage_table", "can_disable_analog_output", b"can_disable_analog_output", "can_update_srm", b"can_update_srm", "client_token", b"client_token", "initial_renewal_delay_base", b"initial_renewal_delay_base", "max_hdcp_version", b"max_hdcp_version", "oem_crypto_api_version", b"oem_crypto_api_version", "resource_rating_tier", b"resource_rating_tier", "session_token", b"session_token", "srm_version", b"srm_version", "supported_certificate_key_type", b"supported_certificate_key_type", "video_resolution_constraints", b"video_resolution_constraints", "watermarking_support", b"watermarking_support"]) -> None: ...
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class ClientCredentials(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
TOKEN_FIELD_NUMBER: builtins.int
|
||
|
|
type: global___ClientIdentification.TokenType.ValueType
|
||
|
|
token: builtins.bytes
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
type: global___ClientIdentification.TokenType.ValueType | None = ...,
|
||
|
|
token: builtins.bytes | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["token", b"token", "type", b"type"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["token", b"token", "type", b"type"]) -> None: ...
|
||
|
|
|
||
|
|
TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
TOKEN_FIELD_NUMBER: builtins.int
|
||
|
|
CLIENT_INFO_FIELD_NUMBER: builtins.int
|
||
|
|
PROVIDER_CLIENT_TOKEN_FIELD_NUMBER: builtins.int
|
||
|
|
LICENSE_COUNTER_FIELD_NUMBER: builtins.int
|
||
|
|
CLIENT_CAPABILITIES_FIELD_NUMBER: builtins.int
|
||
|
|
VMP_DATA_FIELD_NUMBER: builtins.int
|
||
|
|
DEVICE_CREDENTIALS_FIELD_NUMBER: builtins.int
|
||
|
|
type: global___ClientIdentification.TokenType.ValueType
|
||
|
|
"""Type of factory-provisioned device root of trust. Optional."""
|
||
|
|
token: builtins.bytes
|
||
|
|
"""Factory-provisioned device root of trust. Required."""
|
||
|
|
provider_client_token: builtins.bytes
|
||
|
|
"""Client token generated by the content provider. Optional."""
|
||
|
|
license_counter: builtins.int
|
||
|
|
"""Number of licenses received by the client to which the token above belongs.
|
||
|
|
Only present if client_token is specified.
|
||
|
|
"""
|
||
|
|
vmp_data: builtins.bytes
|
||
|
|
"""Serialized VmpData message. Optional."""
|
||
|
|
@property
|
||
|
|
def client_info(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ClientIdentification.NameValue]:
|
||
|
|
"""Optional client information name/value pairs."""
|
||
|
|
|
||
|
|
@property
|
||
|
|
def client_capabilities(self) -> global___ClientIdentification.ClientCapabilities:
|
||
|
|
"""List of non-baseline client capabilities."""
|
||
|
|
|
||
|
|
@property
|
||
|
|
def device_credentials(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ClientIdentification.ClientCredentials]:
|
||
|
|
"""Optional field that may contain additional provisioning credentials."""
|
||
|
|
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
type: global___ClientIdentification.TokenType.ValueType | None = ...,
|
||
|
|
token: builtins.bytes | None = ...,
|
||
|
|
client_info: collections.abc.Iterable[global___ClientIdentification.NameValue] | None = ...,
|
||
|
|
provider_client_token: builtins.bytes | None = ...,
|
||
|
|
license_counter: builtins.int | None = ...,
|
||
|
|
client_capabilities: global___ClientIdentification.ClientCapabilities | None = ...,
|
||
|
|
vmp_data: builtins.bytes | None = ...,
|
||
|
|
device_credentials: collections.abc.Iterable[global___ClientIdentification.ClientCredentials] | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["client_capabilities", b"client_capabilities", "license_counter", b"license_counter", "provider_client_token", b"provider_client_token", "token", b"token", "type", b"type", "vmp_data", b"vmp_data"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["client_capabilities", b"client_capabilities", "client_info", b"client_info", "device_credentials", b"device_credentials", "license_counter", b"license_counter", "provider_client_token", b"provider_client_token", "token", b"token", "type", b"type", "vmp_data", b"vmp_data"]) -> None: ...
|
||
|
|
|
||
|
|
global___ClientIdentification = ClientIdentification
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class EncryptedClientIdentification(google.protobuf.message.Message):
|
||
|
|
"""EncryptedClientIdentification message used to hold ClientIdentification
|
||
|
|
messages encrypted for privacy purposes.
|
||
|
|
"""
|
||
|
|
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
PROVIDER_ID_FIELD_NUMBER: builtins.int
|
||
|
|
SERVICE_CERTIFICATE_SERIAL_NUMBER_FIELD_NUMBER: builtins.int
|
||
|
|
ENCRYPTED_CLIENT_ID_FIELD_NUMBER: builtins.int
|
||
|
|
ENCRYPTED_CLIENT_ID_IV_FIELD_NUMBER: builtins.int
|
||
|
|
ENCRYPTED_PRIVACY_KEY_FIELD_NUMBER: builtins.int
|
||
|
|
provider_id: builtins.str
|
||
|
|
"""Provider ID for which the ClientIdentifcation is encrypted (owner of
|
||
|
|
service certificate).
|
||
|
|
"""
|
||
|
|
service_certificate_serial_number: builtins.bytes
|
||
|
|
"""Serial number for the service certificate for which ClientIdentification is
|
||
|
|
encrypted.
|
||
|
|
"""
|
||
|
|
encrypted_client_id: builtins.bytes
|
||
|
|
"""Serialized ClientIdentification message, encrypted with the privacy key
|
||
|
|
using AES-128-CBC with PKCS#5 padding.
|
||
|
|
"""
|
||
|
|
encrypted_client_id_iv: builtins.bytes
|
||
|
|
"""Initialization vector needed to decrypt encrypted_client_id."""
|
||
|
|
encrypted_privacy_key: builtins.bytes
|
||
|
|
"""AES-128 privacy key, encrypted with the service public key using RSA-OAEP."""
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
provider_id: builtins.str | None = ...,
|
||
|
|
service_certificate_serial_number: builtins.bytes | None = ...,
|
||
|
|
encrypted_client_id: builtins.bytes | None = ...,
|
||
|
|
encrypted_client_id_iv: builtins.bytes | None = ...,
|
||
|
|
encrypted_privacy_key: builtins.bytes | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["encrypted_client_id", b"encrypted_client_id", "encrypted_client_id_iv", b"encrypted_client_id_iv", "encrypted_privacy_key", b"encrypted_privacy_key", "provider_id", b"provider_id", "service_certificate_serial_number", b"service_certificate_serial_number"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["encrypted_client_id", b"encrypted_client_id", "encrypted_client_id_iv", b"encrypted_client_id_iv", "encrypted_privacy_key", b"encrypted_privacy_key", "provider_id", b"provider_id", "service_certificate_serial_number", b"service_certificate_serial_number"]) -> None: ...
|
||
|
|
|
||
|
|
global___EncryptedClientIdentification = EncryptedClientIdentification
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class DrmCertificate(google.protobuf.message.Message):
|
||
|
|
"""----------------------------------------------------------------------------
|
||
|
|
drm_certificate.proto
|
||
|
|
----------------------------------------------------------------------------
|
||
|
|
Description of section:
|
||
|
|
Definition of the root of trust identifier proto. The proto message contains
|
||
|
|
the EC-IES encrypted identifier (e.g. keybox unique id) for a device and
|
||
|
|
an associated hash. These can be used by Widevine to identify the root of
|
||
|
|
trust that was used to acquire a DRM certificate.
|
||
|
|
|
||
|
|
In addition to the encrypted part and the hash, the proto contains the
|
||
|
|
version of the root of trust id which implies the EC key algorithm that was
|
||
|
|
used.
|
||
|
|
|
||
|
|
DRM certificate definition for user devices, intermediate, service, and root
|
||
|
|
certificates.
|
||
|
|
Next id: 13
|
||
|
|
"""
|
||
|
|
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
class _Type:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DrmCertificate._Type.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
ROOT: DrmCertificate._Type.ValueType # 0
|
||
|
|
"""ProtoBestPractices: ignore."""
|
||
|
|
DEVICE_MODEL: DrmCertificate._Type.ValueType # 1
|
||
|
|
DEVICE: DrmCertificate._Type.ValueType # 2
|
||
|
|
SERVICE: DrmCertificate._Type.ValueType # 3
|
||
|
|
PROVISIONER: DrmCertificate._Type.ValueType # 4
|
||
|
|
|
||
|
|
class Type(_Type, metaclass=_TypeEnumTypeWrapper): ...
|
||
|
|
ROOT: DrmCertificate.Type.ValueType # 0
|
||
|
|
"""ProtoBestPractices: ignore."""
|
||
|
|
DEVICE_MODEL: DrmCertificate.Type.ValueType # 1
|
||
|
|
DEVICE: DrmCertificate.Type.ValueType # 2
|
||
|
|
SERVICE: DrmCertificate.Type.ValueType # 3
|
||
|
|
PROVISIONER: DrmCertificate.Type.ValueType # 4
|
||
|
|
|
||
|
|
class _ServiceType:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _ServiceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DrmCertificate._ServiceType.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
UNKNOWN_SERVICE_TYPE: DrmCertificate._ServiceType.ValueType # 0
|
||
|
|
LICENSE_SERVER_SDK: DrmCertificate._ServiceType.ValueType # 1
|
||
|
|
LICENSE_SERVER_PROXY_SDK: DrmCertificate._ServiceType.ValueType # 2
|
||
|
|
PROVISIONING_SDK: DrmCertificate._ServiceType.ValueType # 3
|
||
|
|
CAS_PROXY_SDK: DrmCertificate._ServiceType.ValueType # 4
|
||
|
|
|
||
|
|
class ServiceType(_ServiceType, metaclass=_ServiceTypeEnumTypeWrapper): ...
|
||
|
|
UNKNOWN_SERVICE_TYPE: DrmCertificate.ServiceType.ValueType # 0
|
||
|
|
LICENSE_SERVER_SDK: DrmCertificate.ServiceType.ValueType # 1
|
||
|
|
LICENSE_SERVER_PROXY_SDK: DrmCertificate.ServiceType.ValueType # 2
|
||
|
|
PROVISIONING_SDK: DrmCertificate.ServiceType.ValueType # 3
|
||
|
|
CAS_PROXY_SDK: DrmCertificate.ServiceType.ValueType # 4
|
||
|
|
|
||
|
|
class _Algorithm:
|
||
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||
|
|
V: typing_extensions.TypeAlias = ValueType
|
||
|
|
|
||
|
|
class _AlgorithmEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DrmCertificate._Algorithm.ValueType], builtins.type):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||
|
|
UNKNOWN_ALGORITHM: DrmCertificate._Algorithm.ValueType # 0
|
||
|
|
RSA: DrmCertificate._Algorithm.ValueType # 1
|
||
|
|
ECC_SECP256R1: DrmCertificate._Algorithm.ValueType # 2
|
||
|
|
ECC_SECP384R1: DrmCertificate._Algorithm.ValueType # 3
|
||
|
|
ECC_SECP521R1: DrmCertificate._Algorithm.ValueType # 4
|
||
|
|
|
||
|
|
class Algorithm(_Algorithm, metaclass=_AlgorithmEnumTypeWrapper): ...
|
||
|
|
UNKNOWN_ALGORITHM: DrmCertificate.Algorithm.ValueType # 0
|
||
|
|
RSA: DrmCertificate.Algorithm.ValueType # 1
|
||
|
|
ECC_SECP256R1: DrmCertificate.Algorithm.ValueType # 2
|
||
|
|
ECC_SECP384R1: DrmCertificate.Algorithm.ValueType # 3
|
||
|
|
ECC_SECP521R1: DrmCertificate.Algorithm.ValueType # 4
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class EncryptionKey(google.protobuf.message.Message):
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
PUBLIC_KEY_FIELD_NUMBER: builtins.int
|
||
|
|
ALGORITHM_FIELD_NUMBER: builtins.int
|
||
|
|
public_key: builtins.bytes
|
||
|
|
"""Device public key. PKCS#1 ASN.1 DER-encoded. Required."""
|
||
|
|
algorithm: global___DrmCertificate.Algorithm.ValueType
|
||
|
|
"""Required. The algorithm field contains the curve used to create the
|
||
|
|
|public_key| if algorithm is one of the ECC types.
|
||
|
|
The |algorithm| is used for both to determine the if the certificate is
|
||
|
|
ECC or RSA. The |algorithm| also specifies the parameters that were used
|
||
|
|
to create |public_key| and are used to create an ephemeral session key.
|
||
|
|
"""
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
public_key: builtins.bytes | None = ...,
|
||
|
|
algorithm: global___DrmCertificate.Algorithm.ValueType | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["algorithm", b"algorithm", "public_key", b"public_key"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["algorithm", b"algorithm", "public_key", b"public_key"]) -> None: ...
|
||
|
|
|
||
|
|
TYPE_FIELD_NUMBER: builtins.int
|
||
|
|
SERIAL_NUMBER_FIELD_NUMBER: builtins.int
|
||
|
|
CREATION_TIME_SECONDS_FIELD_NUMBER: builtins.int
|
||
|
|
EXPIRATION_TIME_SECONDS_FIELD_NUMBER: builtins.int
|
||
|
|
PUBLIC_KEY_FIELD_NUMBER: builtins.int
|
||
|
|
SYSTEM_ID_FIELD_NUMBER: builtins.int
|
||
|
|
TEST_DEVICE_DEPRECATED_FIELD_NUMBER: builtins.int
|
||
|
|
PROVIDER_ID_FIELD_NUMBER: builtins.int
|
||
|
|
SERVICE_TYPES_FIELD_NUMBER: builtins.int
|
||
|
|
ALGORITHM_FIELD_NUMBER: builtins.int
|
||
|
|
ROT_ID_FIELD_NUMBER: builtins.int
|
||
|
|
ENCRYPTION_KEY_FIELD_NUMBER: builtins.int
|
||
|
|
type: global___DrmCertificate.Type.ValueType
|
||
|
|
"""Type of certificate. Required."""
|
||
|
|
serial_number: builtins.bytes
|
||
|
|
"""128-bit globally unique serial number of certificate.
|
||
|
|
Value is 0 for root certificate. Required.
|
||
|
|
"""
|
||
|
|
creation_time_seconds: builtins.int
|
||
|
|
"""POSIX time, in seconds, when the certificate was created. Required."""
|
||
|
|
expiration_time_seconds: builtins.int
|
||
|
|
"""POSIX time, in seconds, when the certificate should expire. Value of zero
|
||
|
|
denotes indefinite expiry time. For more information on limited lifespan
|
||
|
|
DRM certificates see (go/limited-lifespan-drm-certificates).
|
||
|
|
"""
|
||
|
|
public_key: builtins.bytes
|
||
|
|
"""Device public key. PKCS#1 ASN.1 DER-encoded. Required."""
|
||
|
|
system_id: builtins.int
|
||
|
|
"""Widevine system ID for the device. Required for intermediate and
|
||
|
|
user device certificates.
|
||
|
|
"""
|
||
|
|
test_device_deprecated: builtins.bool
|
||
|
|
"""Deprecated field, which used to indicate whether the device was a test
|
||
|
|
(non-production) device. The test_device field in ProvisionedDeviceInfo
|
||
|
|
below should be observed instead.
|
||
|
|
"""
|
||
|
|
provider_id: builtins.str
|
||
|
|
"""Service identifier (web origin) for the provider which owns the
|
||
|
|
certificate. Required for service and provisioner certificates.
|
||
|
|
"""
|
||
|
|
algorithm: global___DrmCertificate.Algorithm.ValueType
|
||
|
|
"""Required. The algorithm field contains the curve used to create the
|
||
|
|
|public_key| if algorithm is one of the ECC types.
|
||
|
|
The |algorithm| is used for both to determine the if the certificate is ECC
|
||
|
|
or RSA. The |algorithm| also specifies the parameters that were used to
|
||
|
|
create |public_key| and are used to create an ephemeral session key.
|
||
|
|
"""
|
||
|
|
rot_id: builtins.bytes
|
||
|
|
"""Optional. May be present in DEVICE certificate types. This is the root
|
||
|
|
of trust identifier that holds an encrypted value that identifies the
|
||
|
|
keybox or other root of trust that was used to provision a DEVICE drm
|
||
|
|
certificate.
|
||
|
|
"""
|
||
|
|
@property
|
||
|
|
def service_types(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___DrmCertificate.ServiceType.ValueType]:
|
||
|
|
"""This field is used only when type = SERVICE to specify which SDK uses
|
||
|
|
service certificate. This repeated field is treated as a set. A certificate
|
||
|
|
may be used for the specified service SDK if the appropriate ServiceType
|
||
|
|
is specified in this field.
|
||
|
|
"""
|
||
|
|
|
||
|
|
@property
|
||
|
|
def encryption_key(self) -> global___DrmCertificate.EncryptionKey:
|
||
|
|
"""Optional. May be present in devices that explicitly support dual keys. When
|
||
|
|
present the |public_key| is used for verification of received license
|
||
|
|
request messages.
|
||
|
|
"""
|
||
|
|
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
type: global___DrmCertificate.Type.ValueType | None = ...,
|
||
|
|
serial_number: builtins.bytes | None = ...,
|
||
|
|
creation_time_seconds: builtins.int | None = ...,
|
||
|
|
expiration_time_seconds: builtins.int | None = ...,
|
||
|
|
public_key: builtins.bytes | None = ...,
|
||
|
|
system_id: builtins.int | None = ...,
|
||
|
|
test_device_deprecated: builtins.bool | None = ...,
|
||
|
|
provider_id: builtins.str | None = ...,
|
||
|
|
service_types: collections.abc.Iterable[global___DrmCertificate.ServiceType.ValueType] | None = ...,
|
||
|
|
algorithm: global___DrmCertificate.Algorithm.ValueType | None = ...,
|
||
|
|
rot_id: builtins.bytes | None = ...,
|
||
|
|
encryption_key: global___DrmCertificate.EncryptionKey | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["algorithm", b"algorithm", "creation_time_seconds", b"creation_time_seconds", "encryption_key", b"encryption_key", "expiration_time_seconds", b"expiration_time_seconds", "provider_id", b"provider_id", "public_key", b"public_key", "rot_id", b"rot_id", "serial_number", b"serial_number", "system_id", b"system_id", "test_device_deprecated", b"test_device_deprecated", "type", b"type"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["algorithm", b"algorithm", "creation_time_seconds", b"creation_time_seconds", "encryption_key", b"encryption_key", "expiration_time_seconds", b"expiration_time_seconds", "provider_id", b"provider_id", "public_key", b"public_key", "rot_id", b"rot_id", "serial_number", b"serial_number", "service_types", b"service_types", "system_id", b"system_id", "test_device_deprecated", b"test_device_deprecated", "type", b"type"]) -> None: ...
|
||
|
|
|
||
|
|
global___DrmCertificate = DrmCertificate
|
||
|
|
|
||
|
|
@typing.final
|
||
|
|
class SignedDrmCertificate(google.protobuf.message.Message):
|
||
|
|
"""----------------------------------------------------------------------------
|
||
|
|
signed_drm_certificate.proto
|
||
|
|
----------------------------------------------------------------------------
|
||
|
|
Description of section:
|
||
|
|
DrmCertificate signed by a higher (CA) DRM certificate.
|
||
|
|
"""
|
||
|
|
|
||
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||
|
|
|
||
|
|
DRM_CERTIFICATE_FIELD_NUMBER: builtins.int
|
||
|
|
SIGNATURE_FIELD_NUMBER: builtins.int
|
||
|
|
SIGNER_FIELD_NUMBER: builtins.int
|
||
|
|
HASH_ALGORITHM_FIELD_NUMBER: builtins.int
|
||
|
|
drm_certificate: builtins.bytes
|
||
|
|
"""Serialized certificate. Required."""
|
||
|
|
signature: builtins.bytes
|
||
|
|
"""Signature of certificate. Signed with root or intermediate
|
||
|
|
certificate specified below. Required.
|
||
|
|
"""
|
||
|
|
hash_algorithm: global___HashAlgorithmProto.ValueType
|
||
|
|
"""Optional field that indicates the hash algorithm used in signature scheme."""
|
||
|
|
@property
|
||
|
|
def signer(self) -> global___SignedDrmCertificate:
|
||
|
|
"""SignedDrmCertificate used to sign this certificate."""
|
||
|
|
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
drm_certificate: builtins.bytes | None = ...,
|
||
|
|
signature: builtins.bytes | None = ...,
|
||
|
|
signer: global___SignedDrmCertificate | None = ...,
|
||
|
|
hash_algorithm: global___HashAlgorithmProto.ValueType | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def HasField(self, field_name: typing.Literal["drm_certificate", b"drm_certificate", "hash_algorithm", b"hash_algorithm", "signature", b"signature", "signer", b"signer"]) -> builtins.bool: ...
|
||
|
|
def ClearField(self, field_name: typing.Literal["drm_certificate", b"drm_certificate", "hash_algorithm", b"hash_algorithm", "signature", b"signature", "signer", b"signer"]) -> None: ...
|
||
|
|
|
||
|
|
global___SignedDrmCertificate = SignedDrmCertificate
|