From ba0e89aea3a5f61b831eee2c40a085f7c810d466 Mon Sep 17 00:00:00 2001 From: rlaphoenix Date: Wed, 20 Jul 2022 14:30:29 +0100 Subject: [PATCH] Add License Protocol Buffer --- pywidevine/license_protocol.proto | 752 +++++++ pywidevine/license_protocol_pb2.py | 3039 ++++++++++++++++++++++++++++ 2 files changed, 3791 insertions(+) create mode 100644 pywidevine/license_protocol.proto create mode 100644 pywidevine/license_protocol_pb2.py diff --git a/pywidevine/license_protocol.proto b/pywidevine/license_protocol.proto new file mode 100644 index 0000000..9a3d14c --- /dev/null +++ b/pywidevine/license_protocol.proto @@ -0,0 +1,752 @@ +syntax = "proto2"; + +package video_widevine; + +// need this if we are using libprotobuf-cpp-2.3.0-lite +option optimize_for = LITE_RUNTIME; + +option java_package = "com.google.video.widevine.protos"; + +enum LicenseType { + STREAMING = 1; + OFFLINE = 2; + // License type decision is left to provider. + AUTOMATIC = 3; +} + +enum PlatformVerificationStatus { + // The platform is not verified. + PLATFORM_UNVERIFIED = 0; + // Tampering detected on the platform. + PLATFORM_TAMPERED = 1; + // The platform has been verified by means of software. + PLATFORM_SOFTWARE_VERIFIED = 2; + // The platform has been verified by means of hardware (e.g. secure boot). + PLATFORM_HARDWARE_VERIFIED = 3; + // Platform verification was not performed. + PLATFORM_NO_VERIFICATION = 4; + // Platform and secure storage capability have been verified by means of + // software. + PLATFORM_SECURE_STORAGE_SOFTWARE_VERIFIED = 5; +} + +// LicenseIdentification is propagated from LicenseRequest to License, +// incrementing version with each iteration. +message LicenseIdentification { + optional bytes request_id = 1; + optional bytes session_id = 2; + optional bytes purchase_id = 3; + optional LicenseType type = 4; + optional int32 version = 5; + optional bytes provider_session_token = 6; +} + +message License { + message Policy { + // Indicates that playback of the content is allowed. + optional bool can_play = 1 [default = false]; + + // Indicates that the license may be persisted to non-volatile + // storage for offline use. + optional bool can_persist = 2 [default = false]; + + // Indicates that renewal of this license is allowed. + optional bool can_renew = 3 [default = false]; + + // For the |*duration*| fields, playback must halt when + // license_start_time (seconds since the epoch (UTC)) + + // license_duration_seconds is exceeded. A value of 0 + // indicates that there is no limit to the duration. + + // Indicates the rental window. + optional int64 rental_duration_seconds = 4 [default = 0]; + + // Indicates the viewing window, once playback has begun. + optional int64 playback_duration_seconds = 5 [default = 0]; + + // Indicates the time window for this specific license. + optional int64 license_duration_seconds = 6 [default = 0]; + + // The |renewal*| fields only apply if |can_renew| is true. + + // The window of time, in which playback is allowed to continue while + // renewal is attempted, yet unsuccessful due to backend problems with + // the license server. + optional int64 renewal_recovery_duration_seconds = 7 [default = 0]; + + // All renewal requests for this license shall be directed to the + // specified URL. + optional string renewal_server_url = 8; + + // How many seconds after license_start_time, before renewal is first + // attempted. + optional int64 renewal_delay_seconds = 9 [default = 0]; + + // Specifies the delay in seconds between subsequent license + // renewal requests, in case of failure. + optional int64 renewal_retry_interval_seconds = 10 [default = 0]; + + // Indicates that the license shall be sent for renewal when usage is + // started. + optional bool renew_with_usage = 11 [default = false]; + + // Indicates to client that license renewal and release requests ought to + // include ClientIdentification (client_id). + optional bool always_include_client_id = 12 [default = false]; + + // Duration of grace period before playback_duration_seconds (short window) + // goes into effect. Optional. + optional int64 play_start_grace_period_seconds = 13 [default = 0]; + + // Enables "soft enforcement" of playback_duration_seconds, letting the user + // finish playback even if short window expires. Optional. + optional bool soft_enforce_playback_duration = 14 [default = false]; + + // Enables "soft enforcement" of rental_duration_seconds. Initial playback + // must always start before rental duration expires. In order to allow + // subsequent playbacks to start after the rental duration expires, + // soft_enforce_playback_duration must be true. Otherwise, subsequent + // playbacks will not be allowed once rental duration expires. Optional. + optional bool soft_enforce_rental_duration = 15 [default = true]; + } + + message KeyContainer { + enum KeyType { + SIGNING = 1; // Exactly one key of this type must appear. + CONTENT = 2; // Content key. + KEY_CONTROL = 3; // Key control block for license renewals. No key. + OPERATOR_SESSION = 4; // wrapped keys for auxiliary crypto operations. + ENTITLEMENT = 5; // Entitlement keys. + OEM_CONTENT = 6; // Partner-specific content key. + } + + // The SecurityLevel enumeration allows the server to communicate the level + // of robustness required by the client, in order to use the key. + enum SecurityLevel { + // Software-based whitebox crypto is required. + SW_SECURE_CRYPTO = 1; + + // Software crypto and an obfuscated decoder is required. + SW_SECURE_DECODE = 2; + + // The key material and crypto operations must be performed within a + // hardware backed trusted execution environment. + HW_SECURE_CRYPTO = 3; + + // The crypto and decoding of content must be performed within a hardware + // backed trusted execution environment. + HW_SECURE_DECODE = 4; + + // The crypto, decoding and all handling of the media (compressed and + // uncompressed) must be handled within a hardware backed trusted + // execution environment. + HW_SECURE_ALL = 5; + } + + message KeyControl { + // |key_control| is documented in: + // Widevine Modular DRM Security Integration Guide for CENC + // If present, the key control must be communicated to the secure + // environment prior to any usage. This message is automatically generated + // by the Widevine License Server SDK. + optional bytes key_control_block = 1; + optional bytes iv = 2; + } + + message OutputProtection { + // Indicates whether HDCP is required on digital outputs, and which + // version should be used. + enum HDCP { + HDCP_NONE = 0; + HDCP_V1 = 1; + HDCP_V2 = 2; + HDCP_V2_1 = 3; + HDCP_V2_2 = 4; + HDCP_V2_3 = 5; + HDCP_NO_DIGITAL_OUTPUT = 0xff; + } + optional HDCP hdcp = 1 [default = HDCP_NONE]; + + // Indicate the CGMS setting to be inserted on analog output. + enum CGMS { + CGMS_NONE = 42; + COPY_FREE = 0; + COPY_ONCE = 2; + COPY_NEVER = 3; + } + optional CGMS cgms_flags = 2 [default = CGMS_NONE]; + + enum HdcpSrmRule { + HDCP_SRM_RULE_NONE = 0; + // In 'required_protection', this means most current SRM is required. + // Update the SRM on the device. If update cannot happen, + // do not allow the key. + // In 'requested_protection', this means most current SRM is requested. + // Update the SRM on the device. If update cannot happen, + // allow use of the key anyway. + CURRENT_SRM = 1; + } + optional HdcpSrmRule hdcp_srm_rule = 3 [default = HDCP_SRM_RULE_NONE]; + // Optional requirement to indicate analog output is not allowed. + optional bool disable_analog_output = 4 [default = false]; + // Optional requirement to indicate digital output is not allowed. + optional bool disable_digital_output = 5 [default = false]; + } + + message VideoResolutionConstraint { + // Minimum and maximum video resolutions in the range (height x width). + optional uint32 min_resolution_pixels = 1; + optional uint32 max_resolution_pixels = 2; + // Optional output protection requirements for this range. If not + // specified, the OutputProtection in the KeyContainer applies. + optional OutputProtection required_protection = 3; + } + + message OperatorSessionKeyPermissions { + // Permissions/key usage flags for operator service keys + // (type = OPERATOR_SESSION). + optional bool allow_encrypt = 1 [default = false]; + optional bool allow_decrypt = 2 [default = false]; + optional bool allow_sign = 3 [default = false]; + optional bool allow_signature_verify = 4 [default = false]; + } + + optional bytes id = 1; + optional bytes iv = 2; + optional bytes key = 3; + optional KeyType type = 4; + optional SecurityLevel level = 5 [default = SW_SECURE_CRYPTO]; + optional OutputProtection required_protection = 6; + // NOTE: Use of requested_protection is not recommended as it is only + // supported on a small number of platforms. + optional OutputProtection requested_protection = 7; + optional KeyControl key_control = 8; + optional OperatorSessionKeyPermissions operator_session_key_permissions = 9; + // Optional video resolution constraints. If the video resolution of the + // content being decrypted/decoded falls within one of the specified ranges, + // the optional required_protections may be applied. Otherwise an error will + // be reported. + // NOTE: Use of this feature is not recommended, as it is only supported on + // a small number of platforms. + repeated VideoResolutionConstraint video_resolution_constraints = 10; + // Optional flag to indicate the key must only be used if the client + // supports anti rollback of the user table. Content provider can query the + // client capabilities to determine if the client support this feature. + optional bool anti_rollback_usage_table = 11 [default = false]; + // Optional not limited to commonly known track types such as SD, HD. + // It can be some provider defined label to identify the track. + optional string track_label = 12; + } + + optional LicenseIdentification id = 1; + optional Policy policy = 2; + repeated KeyContainer key = 3; + // Time of the request in seconds (UTC) as set in + // LicenseRequest.request_time. If this time is not set in the request, + // the local time at the license service is used in this field. + optional int64 license_start_time = 4; + optional bool remote_attestation_verified = 5 [default = false]; + // Client token generated by the content provider. Optional. + optional bytes provider_client_token = 6; + // 4cc code specifying the CENC protection scheme as defined in the CENC 3.0 + // specification. Propagated from Widevine PSSH box. Optional. + optional uint32 protection_scheme = 7; + // 8 byte verification field "HDCPDATA" followed by unsigned 32 bit minimum + // HDCP SRM version (whether the version is for HDCP1 SRM or HDCP2 SRM + // depends on client max_hdcp_version). + // Additional details can be found in Widevine Modular DRM Security + // Integration Guide for CENC. + optional bytes srm_requirement = 8; + // If present this contains a signed SRM file (either HDCP1 SRM or HDCP2 SRM + // depending on client max_hdcp_version) that should be installed on the + // client device. + optional bytes srm_update = 9; + // Indicates the status of any type of platform verification performed by the + // server. + optional PlatformVerificationStatus platform_verification_status = 10 + [default = PLATFORM_NO_VERIFICATION]; + // IDs of the groups for which keys are delivered in this license, if any. + repeated bytes group_ids = 11; +} + +enum ProtocolVersion { + VERSION_2_0 = 20; + VERSION_2_1 = 21; + VERSION_2_2 = 22; +} + +message LicenseRequest { + message ContentIdentification { + message WidevinePsshData { + repeated bytes pssh_data = 1; + optional LicenseType license_type = 2; + optional bytes request_id = 3; // Opaque, client-specified. + } + + message WebmKeyId { + optional bytes header = 1; + optional LicenseType license_type = 2; + optional bytes request_id = 3; // Opaque, client-specified. + } + + message ExistingLicense { + optional LicenseIdentification license_id = 1; + optional int64 seconds_since_started = 2; + optional int64 seconds_since_last_played = 3; + optional bytes session_usage_table_entry = 4; + } + + message InitData { + enum InitDataType { + CENC = 1; + WEBM = 2; + } + + optional InitDataType init_data_type = 1 [default = CENC]; + optional bytes init_data = 2; + optional LicenseType license_type = 3; + optional bytes request_id = 4; + } + + oneof content_id_variant { + // Exactly one of these must be present. + WidevinePsshData widevine_pssh_data = 1; + WebmKeyId webm_key_id = 2; + ExistingLicense existing_license = 3; + InitData init_data = 4; + } + } + + enum RequestType { + NEW = 1; + RENEWAL = 2; + RELEASE = 3; + } + + // 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. + optional ClientIdentification client_id = 1; + optional ContentIdentification content_id = 2; + optional RequestType type = 3; + // Time of the request in seconds (UTC) as set by the client. + optional int64 request_time = 4; + // Old-style decimal-encoded string key control nonce. + optional bytes key_control_nonce_deprecated = 5; + optional ProtocolVersion protocol_version = 6 [default = VERSION_2_0]; + // New-style uint32 key control nonce, please use instead of + // key_control_nonce_deprecated. + optional uint32 key_control_nonce = 7; + // Encrypted ClientIdentification message, used for privacy purposes. + optional EncryptedClientIdentification encrypted_client_id = 8; +} + +message MetricData { + enum MetricType { + // The time spent in the 'stage', specified in microseconds. + LATENCY = 1; + // The UNIX epoch timestamp at which the 'stage' was first accessed in + // microseconds. + TIMESTAMP = 2; + } + + message TypeValue { + optional MetricType type = 1; + // The value associated with 'type'. For example if type == LATENCY, the + // value would be the time in microseconds spent in this 'stage'. + optional int64 value = 2 [default = 0]; + } + + // 'stage' that is currently processing the SignedMessage. Required. + optional string stage_name = 1; + // metric and associated value. + repeated TypeValue metric_data = 2; +} + +message VersionInfo { + // License SDK version reported by the Widevine License SDK. This field + // is populated automatically by the SDK. + optional string license_sdk_version = 1; + // Version of the service hosting the license SDK. This field is optional. + // It may be provided by the hosting service. + optional string license_service_version = 2; +} + +message SignedMessage { + enum MessageType { + LICENSE_REQUEST = 1; + LICENSE = 2; + ERROR_RESPONSE = 3; + SERVICE_CERTIFICATE_REQUEST = 4; + SERVICE_CERTIFICATE = 5; + SUB_LICENSE = 6; + CAS_LICENSE_REQUEST = 7; + CAS_LICENSE = 8; + EXTERNAL_LICENSE_REQUEST = 9; + EXTERNAL_LICENSE = 10; + } + + enum SessionKeyType { + UNDEFINED = 0; + WRAPPED_AES_KEY = 1; + EPHERMERAL_ECC_PUBLIC_KEY = 2; + } + optional MessageType type = 1; + optional bytes msg = 2; + // 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|. + optional bytes signature = 3; + // 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. + optional bytes session_key = 4; + // 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. + optional bytes remote_attestation = 5; + + repeated MetricData metric_data = 6; + // Version information from the SDK and license service. This information is + // provided in the license response. + optional VersionInfo service_version_info = 7; + // Optional field that contains the algorithm type used to generate the + // session_key and signature in a LICENSE message. + optional SessionKeyType session_key_type = 8 [default = WRAPPED_AES_KEY]; + // The core message is the simple serialization of fields used by OEMCrypto. + // This field was introduced in OEMCrypto API v16. + optional bytes oemcrypto_core_message = 9; +} + +enum HashAlgorithmProto { + // Unspecified hash algorithm: SHA_256 shall be used for ECC based algorithms + // and SHA_1 shall be used otherwise. + HASH_ALGORITHM_UNSPECIFIED = 0; + HASH_ALGORITHM_SHA_1 = 1; + HASH_ALGORITHM_SHA_256 = 2; + HASH_ALGORITHM_SHA_384 = 3; +} + +// ClientIdentification message used to authenticate the client device. +message ClientIdentification { + enum TokenType { + KEYBOX = 0; + DRM_DEVICE_CERTIFICATE = 1; + REMOTE_ATTESTATION_CERTIFICATE = 2; + OEM_DEVICE_CERTIFICATE = 3; + } + + message NameValue { + optional string name = 1; + optional string value = 2; + } + + // Capabilities which not all clients may support. Used for the license + // exchange protocol only. + message ClientCapabilities { + enum HdcpVersion { + HDCP_NONE = 0; + HDCP_V1 = 1; + HDCP_V2 = 2; + HDCP_V2_1 = 3; + HDCP_V2_2 = 4; + HDCP_V2_3 = 5; + HDCP_NO_DIGITAL_OUTPUT = 0xff; + } + + enum CertificateKeyType { + RSA_2048 = 0; + RSA_3072 = 1; + ECC_SECP256R1 = 2; + ECC_SECP384R1 = 3; + ECC_SECP521R1 = 4; + } + + enum AnalogOutputCapabilities { + ANALOG_OUTPUT_UNKNOWN = 0; + ANALOG_OUTPUT_NONE = 1; + ANALOG_OUTPUT_SUPPORTED = 2; + ANALOG_OUTPUT_SUPPORTS_CGMS_A = 3; + } + + optional bool client_token = 1 [default = false]; + optional bool session_token = 2 [default = false]; + optional bool video_resolution_constraints = 3 [default = false]; + optional HdcpVersion max_hdcp_version = 4 [default = HDCP_NONE]; + optional uint32 oem_crypto_api_version = 5; + // 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 + optional bool anti_rollback_usage_table = 6 [default = false]; + // The client shall report |srm_version| if available. + optional uint32 srm_version = 7; + // A device may have SRM data, and report a version, but may not be capable + // of updating SRM data. + optional bool can_update_srm = 8 [default = false]; + repeated CertificateKeyType supported_certificate_key_type = 9; + optional AnalogOutputCapabilities analog_output_capabilities = 10 + [default = ANALOG_OUTPUT_UNKNOWN]; + optional bool can_disable_analog_output = 11 [default = false]; + // 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 + optional uint32 resource_rating_tier = 12 [default = 0]; + } + + message ClientCredentials { + optional TokenType type = 1 [default = KEYBOX]; + optional bytes token = 2; + } + + // Type of factory-provisioned device root of trust. Optional. + optional TokenType type = 1 [default = KEYBOX]; + // Factory-provisioned device root of trust. Required. + optional bytes token = 2; + // Optional client information name/value pairs. + repeated NameValue client_info = 3; + // Client token generated by the content provider. Optional. + optional bytes provider_client_token = 4; + // Number of licenses received by the client to which the token above belongs. + // Only present if client_token is specified. + optional uint32 license_counter = 5; + // List of non-baseline client capabilities. + optional ClientCapabilities client_capabilities = 6; + // Serialized VmpData message. Optional. + optional bytes vmp_data = 7; + // Optional field that may contain additional provisioning credentials. + repeated ClientCredentials device_credentials = 8; +} + +// EncryptedClientIdentification message used to hold ClientIdentification +// messages encrypted for privacy purposes. +message EncryptedClientIdentification { + // Provider ID for which the ClientIdentifcation is encrypted (owner of + // service certificate). + optional string provider_id = 1; + // Serial number for the service certificate for which ClientIdentification is + // encrypted. + optional bytes service_certificate_serial_number = 2; + // Serialized ClientIdentification message, encrypted with the privacy key + // using AES-128-CBC with PKCS#5 padding. + optional bytes encrypted_client_id = 3; + // Initialization vector needed to decrypt encrypted_client_id. + optional bytes encrypted_client_id_iv = 4; + // AES-128 privacy key, encrypted with the service public key using RSA-OAEP. + optional bytes encrypted_privacy_key = 5; +} + +// DRM certificate definition for user devices, intermediate, service, and root +// certificates. +message DrmCertificate { + enum Type { + ROOT = 0; // ProtoBestPractices: ignore. + DEVICE_MODEL = 1; + DEVICE = 2; + SERVICE = 3; + PROVISIONER = 4; + } + enum ServiceType { + UNKNOWN_SERVICE_TYPE = 0; + LICENSE_SERVER_SDK = 1; + LICENSE_SERVER_PROXY_SDK = 2; + PROVISIONING_SDK = 3; + CAS_PROXY_SDK = 4; + } + enum Algorithm { + UNKNOWN_ALGORITHM = 0; + RSA = 1; + ECC_SECP256R1 = 2; + ECC_SECP384R1 = 3; + ECC_SECP521R1 = 4; + } + + message EncryptionKey { + // Device public key. PKCS#1 ASN.1 DER-encoded. Required. + optional bytes public_key = 1; + // 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. + optional Algorithm algorithm = 2 [default = RSA]; + } + + // Type of certificate. Required. + optional Type type = 1; + // 128-bit globally unique serial number of certificate. + // Value is 0 for root certificate. Required. + optional bytes serial_number = 2; + // POSIX time, in seconds, when the certificate was created. Required. + optional uint32 creation_time_seconds = 3; + // 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). + optional uint32 expiration_time_seconds = 12; + // Device public key. PKCS#1 ASN.1 DER-encoded. Required. + optional bytes public_key = 4; + // Widevine system ID for the device. Required for intermediate and + // user device certificates. + optional uint32 system_id = 5; + // 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. + optional bool test_device_deprecated = 6 [deprecated = true]; + // Service identifier (web origin) for the provider which owns the + // certificate. Required for service and provisioner certificates. + optional string provider_id = 7; + // 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. + repeated ServiceType service_types = 8; + // 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. + optional Algorithm algorithm = 9 [default = RSA]; + // 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. + optional bytes rot_id = 10; + // 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. + optional EncryptionKey encryption_key = 11; +} + +// DrmCertificate signed by a higher (CA) DRM certificate. +message SignedDrmCertificate { + // Serialized certificate. Required. + optional bytes drm_certificate = 1; + // Signature of certificate. Signed with root or intermediate + // certificate specified below. Required. + optional bytes signature = 2; + // SignedDrmCertificate used to sign this certificate. + optional SignedDrmCertificate signer = 3; + // Optional field that indicates the hash algorithm used in signature scheme. + optional HashAlgorithmProto hash_algorithm = 4; +} + +message WidevinePsshData { + enum Type { + SINGLE = 0; // Single PSSH to be used to retrieve content keys. + ENTITLEMENT = 1; // Primary PSSH used to retrieve entitlement keys. + ENTITLED_KEY = 2; // Secondary PSSH containing entitled key(s). + } + + message EntitledKey { + // ID of entitlement key used for wrapping |key|. + optional bytes entitlement_key_id = 1; + // ID of the entitled key. + optional bytes key_id = 2; + // Wrapped key. Required. + optional bytes key = 3; + // IV used for wrapping |key|. Required. + optional bytes iv = 4; + // Size of entitlement key used for wrapping |key|. + optional uint32 entitlement_key_size_bytes = 5 [default = 32]; + } + + // Entitlement or content key IDs. Can onnly present in SINGLE or ENTITLEMENT + // PSSHs. May be repeated to facilitate delivery of multiple keys in a + // single license. Cannot be used in conjunction with content_id or + // group_ids, which are the preferred mechanism. + repeated bytes key_ids = 2; + + // Content identifier which may map to multiple entitlement or content key + // IDs to facilitate the delivery of multiple keys in a single license. + // Cannot be present in conjunction with key_ids, but if used must be in all + // PSSHs. + optional bytes content_id = 4; + + // Crypto period index, for media using key rotation. Always corresponds to + // The content key period. This means that if using entitlement licensing + // the ENTITLED_KEY PSSHs will have sequential crypto_period_index's, whereas + // the ENTITELEMENT PSSHs will have gaps in the sequence. Required if doing + // key rotation. + optional uint32 crypto_period_index = 7; + + // Protection scheme identifying the encryption algorithm. The protection + // scheme is represented as a uint32 value. The uint32 contains 4 bytes each + // representing a single ascii character in one of the 4CC protection scheme + // values. To be deprecated in favor of signaling from content. + // 'cenc' (AES-CTR) protection_scheme = 0x63656E63, + // 'cbc1' (AES-CBC) protection_scheme = 0x63626331, + // 'cens' (AES-CTR pattern encryption) protection_scheme = 0x63656E73, + // 'cbcs' (AES-CBC pattern encryption) protection_scheme = 0x63626373. + optional uint32 protection_scheme = 9; + + // Optional. For media using key rotation, this represents the duration + // of each crypto period in seconds. + optional uint32 crypto_period_seconds = 10; + + // Type of PSSH. Required if not SINGLE. + optional Type type = 11 [default = SINGLE]; + + // Key sequence for Widevine-managed keys. Optional. + optional uint32 key_sequence = 12; + + // Group identifiers for all groups to which the content belongs. This can + // be used to deliver licenses to unlock multiple titles / channels. + // Optional, and may only be present in ENTITLEMENT and ENTITLED_KEY PSSHs, and + // not in conjunction with key_ids. + repeated bytes group_ids = 13; + + // Copy/copies of the content key used to decrypt the media stream in which + // the PSSH box is embedded, each wrapped with a different entitlement key. + // May also contain sub-licenses to support devices with OEMCrypto 13 or + // older. May be repeated if using group entitlement keys. Present only in + // PSSHs of type ENTITLED_KEY. + repeated EntitledKey entitled_keys = 14; + + // Video feature identifier, which is used in conjunction with |content_id| + // to determine the set of keys to be returned in the license. Cannot be + // present in conjunction with |key_ids|. + // Current values are "HDR". + optional string video_feature = 15; + + //////////////////////////// Deprecated Fields //////////////////////////// + enum Algorithm { + UNENCRYPTED = 0; + AESCTR = 1; + }; + optional Algorithm algorithm = 1 [deprecated = true]; + + // Content provider name. + optional string provider = 3 [deprecated = true]; + + // Track type. Acceptable values are SD, HD and AUDIO. Used to + // differentiate content keys used by an asset. + optional string track_type = 5 [deprecated = true]; + + // The name of a registered policy to be used for this asset. + optional string policy = 6 [deprecated = true]; + + // Optional protected context for group content. The grouped_license is a + // serialized SignedMessage. + optional bytes grouped_license = 8 [deprecated = true]; +} + +// File Hashes for Verified Media Path (VMP) support. +message FileHashes { + message Signature { + optional string filename = 1; + optional bool test_signing = 2; //0 - release, 1 - testing + optional bytes SHA512Hash = 3; + optional bool main_exe = 4; //0 for dlls, 1 for exe, this is field 3 in file + optional bytes signature = 5; + } + optional bytes signer = 1; + repeated Signature signatures = 2; +} diff --git a/pywidevine/license_protocol_pb2.py b/pywidevine/license_protocol_pb2.py new file mode 100644 index 0000000..9f30791 --- /dev/null +++ b/pywidevine/license_protocol_pb2.py @@ -0,0 +1,3039 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: pywidevine/license_protocol.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='pywidevine/license_protocol.proto', + package='video_widevine', + serialized_pb=_b('\n!pywidevine/license_protocol.proto\x12\x0evideo_widevine\"\xb0\x01\n\x15LicenseIdentification\x12\x12\n\nrequest_id\x18\x01 \x01(\x0c\x12\x12\n\nsession_id\x18\x02 \x01(\x0c\x12\x13\n\x0bpurchase_id\x18\x03 \x01(\x0c\x12)\n\x04type\x18\x04 \x01(\x0e\x32\x1b.video_widevine.LicenseType\x12\x0f\n\x07version\x18\x05 \x01(\x05\x12\x1e\n\x16provider_session_token\x18\x06 \x01(\x0c\"\xae\x17\n\x07License\x12\x31\n\x02id\x18\x01 \x01(\x0b\x32%.video_widevine.LicenseIdentification\x12.\n\x06policy\x18\x02 \x01(\x0b\x32\x1e.video_widevine.License.Policy\x12\x31\n\x03key\x18\x03 \x03(\x0b\x32$.video_widevine.License.KeyContainer\x12\x1a\n\x12license_start_time\x18\x04 \x01(\x03\x12*\n\x1bremote_attestation_verified\x18\x05 \x01(\x08:\x05\x66\x61lse\x12\x1d\n\x15provider_client_token\x18\x06 \x01(\x0c\x12\x19\n\x11protection_scheme\x18\x07 \x01(\r\x12\x17\n\x0fsrm_requirement\x18\x08 \x01(\x0c\x12\x12\n\nsrm_update\x18\t \x01(\x0c\x12j\n\x1cplatform_verification_status\x18\n \x01(\x0e\x32*.video_widevine.PlatformVerificationStatus:\x18PLATFORM_NO_VERIFICATION\x12\x11\n\tgroup_ids\x18\x0b \x03(\x0c\x1a\xae\x04\n\x06Policy\x12\x17\n\x08\x63\x61n_play\x18\x01 \x01(\x08:\x05\x66\x61lse\x12\x1a\n\x0b\x63\x61n_persist\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x18\n\tcan_renew\x18\x03 \x01(\x08:\x05\x66\x61lse\x12\"\n\x17rental_duration_seconds\x18\x04 \x01(\x03:\x01\x30\x12$\n\x19playback_duration_seconds\x18\x05 \x01(\x03:\x01\x30\x12#\n\x18license_duration_seconds\x18\x06 \x01(\x03:\x01\x30\x12,\n!renewal_recovery_duration_seconds\x18\x07 \x01(\x03:\x01\x30\x12\x1a\n\x12renewal_server_url\x18\x08 \x01(\t\x12 \n\x15renewal_delay_seconds\x18\t \x01(\x03:\x01\x30\x12)\n\x1erenewal_retry_interval_seconds\x18\n \x01(\x03:\x01\x30\x12\x1f\n\x10renew_with_usage\x18\x0b \x01(\x08:\x05\x66\x61lse\x12\'\n\x18\x61lways_include_client_id\x18\x0c \x01(\x08:\x05\x66\x61lse\x12*\n\x1fplay_start_grace_period_seconds\x18\r \x01(\x03:\x01\x30\x12-\n\x1esoft_enforce_playback_duration\x18\x0e \x01(\x08:\x05\x66\x61lse\x12*\n\x1csoft_enforce_rental_duration\x18\x0f \x01(\x08:\x04true\x1a\xad\x0f\n\x0cKeyContainer\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\n\n\x02iv\x18\x02 \x01(\x0c\x12\x0b\n\x03key\x18\x03 \x01(\x0c\x12:\n\x04type\x18\x04 \x01(\x0e\x32,.video_widevine.License.KeyContainer.KeyType\x12S\n\x05level\x18\x05 \x01(\x0e\x32\x32.video_widevine.License.KeyContainer.SecurityLevel:\x10SW_SECURE_CRYPTO\x12R\n\x13required_protection\x18\x06 \x01(\x0b\x32\x35.video_widevine.License.KeyContainer.OutputProtection\x12S\n\x14requested_protection\x18\x07 \x01(\x0b\x32\x35.video_widevine.License.KeyContainer.OutputProtection\x12\x44\n\x0bkey_control\x18\x08 \x01(\x0b\x32/.video_widevine.License.KeyContainer.KeyControl\x12l\n operator_session_key_permissions\x18\t \x01(\x0b\x32\x42.video_widevine.License.KeyContainer.OperatorSessionKeyPermissions\x12\x64\n\x1cvideo_resolution_constraints\x18\n \x03(\x0b\x32>.video_widevine.License.KeyContainer.VideoResolutionConstraint\x12(\n\x19\x61nti_rollback_usage_table\x18\x0b \x01(\x08:\x05\x66\x61lse\x12\x13\n\x0btrack_label\x18\x0c \x01(\t\x1a\x33\n\nKeyControl\x12\x19\n\x11key_control_block\x18\x01 \x01(\x0c\x12\n\n\x02iv\x18\x02 \x01(\x0c\x1a\xf5\x04\n\x10OutputProtection\x12S\n\x04hdcp\x18\x01 \x01(\x0e\x32:.video_widevine.License.KeyContainer.OutputProtection.HDCP:\tHDCP_NONE\x12Y\n\ncgms_flags\x18\x02 \x01(\x0e\x32:.video_widevine.License.KeyContainer.OutputProtection.CGMS:\tCGMS_NONE\x12l\n\rhdcp_srm_rule\x18\x03 \x01(\x0e\x32\x41.video_widevine.License.KeyContainer.OutputProtection.HdcpSrmRule:\x12HDCP_SRM_RULE_NONE\x12$\n\x15\x64isable_analog_output\x18\x04 \x01(\x08:\x05\x66\x61lse\x12%\n\x16\x64isable_digital_output\x18\x05 \x01(\x08:\x05\x66\x61lse\"y\n\x04HDCP\x12\r\n\tHDCP_NONE\x10\x00\x12\x0b\n\x07HDCP_V1\x10\x01\x12\x0b\n\x07HDCP_V2\x10\x02\x12\r\n\tHDCP_V2_1\x10\x03\x12\r\n\tHDCP_V2_2\x10\x04\x12\r\n\tHDCP_V2_3\x10\x05\x12\x1b\n\x16HDCP_NO_DIGITAL_OUTPUT\x10\xff\x01\"C\n\x04\x43GMS\x12\r\n\tCGMS_NONE\x10*\x12\r\n\tCOPY_FREE\x10\x00\x12\r\n\tCOPY_ONCE\x10\x02\x12\x0e\n\nCOPY_NEVER\x10\x03\"6\n\x0bHdcpSrmRule\x12\x16\n\x12HDCP_SRM_RULE_NONE\x10\x00\x12\x0f\n\x0b\x43URRENT_SRM\x10\x01\x1a\xad\x01\n\x19VideoResolutionConstraint\x12\x1d\n\x15min_resolution_pixels\x18\x01 \x01(\r\x12\x1d\n\x15max_resolution_pixels\x18\x02 \x01(\r\x12R\n\x13required_protection\x18\x03 \x01(\x0b\x32\x35.video_widevine.License.KeyContainer.OutputProtection\x1a\x9d\x01\n\x1dOperatorSessionKeyPermissions\x12\x1c\n\rallow_encrypt\x18\x01 \x01(\x08:\x05\x66\x61lse\x12\x1c\n\rallow_decrypt\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x19\n\nallow_sign\x18\x03 \x01(\x08:\x05\x66\x61lse\x12%\n\x16\x61llow_signature_verify\x18\x04 \x01(\x08:\x05\x66\x61lse\"l\n\x07KeyType\x12\x0b\n\x07SIGNING\x10\x01\x12\x0b\n\x07\x43ONTENT\x10\x02\x12\x0f\n\x0bKEY_CONTROL\x10\x03\x12\x14\n\x10OPERATOR_SESSION\x10\x04\x12\x0f\n\x0b\x45NTITLEMENT\x10\x05\x12\x0f\n\x0bOEM_CONTENT\x10\x06\"z\n\rSecurityLevel\x12\x14\n\x10SW_SECURE_CRYPTO\x10\x01\x12\x14\n\x10SW_SECURE_DECODE\x10\x02\x12\x14\n\x10HW_SECURE_CRYPTO\x10\x03\x12\x14\n\x10HW_SECURE_DECODE\x10\x04\x12\x11\n\rHW_SECURE_ALL\x10\x05\"\x87\x0c\n\x0eLicenseRequest\x12\x37\n\tclient_id\x18\x01 \x01(\x0b\x32$.video_widevine.ClientIdentification\x12H\n\ncontent_id\x18\x02 \x01(\x0b\x32\x34.video_widevine.LicenseRequest.ContentIdentification\x12\x38\n\x04type\x18\x03 \x01(\x0e\x32*.video_widevine.LicenseRequest.RequestType\x12\x14\n\x0crequest_time\x18\x04 \x01(\x03\x12$\n\x1ckey_control_nonce_deprecated\x18\x05 \x01(\x0c\x12\x46\n\x10protocol_version\x18\x06 \x01(\x0e\x32\x1f.video_widevine.ProtocolVersion:\x0bVERSION_2_0\x12\x19\n\x11key_control_nonce\x18\x07 \x01(\r\x12J\n\x13\x65ncrypted_client_id\x18\x08 \x01(\x0b\x32-.video_widevine.EncryptedClientIdentification\x1a\x9a\x08\n\x15\x43ontentIdentification\x12\x63\n\x12widevine_pssh_data\x18\x01 \x01(\x0b\x32\x45.video_widevine.LicenseRequest.ContentIdentification.WidevinePsshDataH\x00\x12U\n\x0bwebm_key_id\x18\x02 \x01(\x0b\x32>.video_widevine.LicenseRequest.ContentIdentification.WebmKeyIdH\x00\x12`\n\x10\x65xisting_license\x18\x03 \x01(\x0b\x32\x44.video_widevine.LicenseRequest.ContentIdentification.ExistingLicenseH\x00\x12R\n\tinit_data\x18\x04 \x01(\x0b\x32=.video_widevine.LicenseRequest.ContentIdentification.InitDataH\x00\x1al\n\x10WidevinePsshData\x12\x11\n\tpssh_data\x18\x01 \x03(\x0c\x12\x31\n\x0clicense_type\x18\x02 \x01(\x0e\x32\x1b.video_widevine.LicenseType\x12\x12\n\nrequest_id\x18\x03 \x01(\x0c\x1a\x62\n\tWebmKeyId\x12\x0e\n\x06header\x18\x01 \x01(\x0c\x12\x31\n\x0clicense_type\x18\x02 \x01(\x0e\x32\x1b.video_widevine.LicenseType\x12\x12\n\nrequest_id\x18\x03 \x01(\x0c\x1a\xb1\x01\n\x0f\x45xistingLicense\x12\x39\n\nlicense_id\x18\x01 \x01(\x0b\x32%.video_widevine.LicenseIdentification\x12\x1d\n\x15seconds_since_started\x18\x02 \x01(\x03\x12!\n\x19seconds_since_last_played\x18\x03 \x01(\x03\x12!\n\x19session_usage_table_entry\x18\x04 \x01(\x0c\x1a\xf2\x01\n\x08InitData\x12h\n\x0einit_data_type\x18\x01 \x01(\x0e\x32J.video_widevine.LicenseRequest.ContentIdentification.InitData.InitDataType:\x04\x43\x45NC\x12\x11\n\tinit_data\x18\x02 \x01(\x0c\x12\x31\n\x0clicense_type\x18\x03 \x01(\x0e\x32\x1b.video_widevine.LicenseType\x12\x12\n\nrequest_id\x18\x04 \x01(\x0c\"\"\n\x0cInitDataType\x12\x08\n\x04\x43\x45NC\x10\x01\x12\x08\n\x04WEBM\x10\x02\x42\x14\n\x12\x63ontent_id_variant\"0\n\x0bRequestType\x12\x07\n\x03NEW\x10\x01\x12\x0b\n\x07RENEWAL\x10\x02\x12\x0b\n\x07RELEASE\x10\x03\"\xd9\x01\n\nMetricData\x12\x12\n\nstage_name\x18\x01 \x01(\t\x12\x39\n\x0bmetric_data\x18\x02 \x03(\x0b\x32$.video_widevine.MetricData.TypeValue\x1aR\n\tTypeValue\x12\x33\n\x04type\x18\x01 \x01(\x0e\x32%.video_widevine.MetricData.MetricType\x12\x10\n\x05value\x18\x02 \x01(\x03:\x01\x30\"(\n\nMetricType\x12\x0b\n\x07LATENCY\x10\x01\x12\r\n\tTIMESTAMP\x10\x02\"K\n\x0bVersionInfo\x12\x1b\n\x13license_sdk_version\x18\x01 \x01(\t\x12\x1f\n\x17license_service_version\x18\x02 \x01(\t\"\xc2\x05\n\rSignedMessage\x12\x37\n\x04type\x18\x01 \x01(\x0e\x32).video_widevine.SignedMessage.MessageType\x12\x0b\n\x03msg\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\x13\n\x0bsession_key\x18\x04 \x01(\x0c\x12\x1a\n\x12remote_attestation\x18\x05 \x01(\x0c\x12/\n\x0bmetric_data\x18\x06 \x03(\x0b\x32\x1a.video_widevine.MetricData\x12\x39\n\x14service_version_info\x18\x07 \x01(\x0b\x32\x1b.video_widevine.VersionInfo\x12W\n\x10session_key_type\x18\x08 \x01(\x0e\x32,.video_widevine.SignedMessage.SessionKeyType:\x0fWRAPPED_AES_KEY\x12\x1e\n\x16oemcrypto_core_message\x18\t \x01(\x0c\"\xec\x01\n\x0bMessageType\x12\x13\n\x0fLICENSE_REQUEST\x10\x01\x12\x0b\n\x07LICENSE\x10\x02\x12\x12\n\x0e\x45RROR_RESPONSE\x10\x03\x12\x1f\n\x1bSERVICE_CERTIFICATE_REQUEST\x10\x04\x12\x17\n\x13SERVICE_CERTIFICATE\x10\x05\x12\x0f\n\x0bSUB_LICENSE\x10\x06\x12\x17\n\x13\x43\x41S_LICENSE_REQUEST\x10\x07\x12\x0f\n\x0b\x43\x41S_LICENSE\x10\x08\x12\x1c\n\x18\x45XTERNAL_LICENSE_REQUEST\x10\t\x12\x14\n\x10\x45XTERNAL_LICENSE\x10\n\"S\n\x0eSessionKeyType\x12\r\n\tUNDEFINED\x10\x00\x12\x13\n\x0fWRAPPED_AES_KEY\x10\x01\x12\x1d\n\x19\x45PHERMERAL_ECC_PUBLIC_KEY\x10\x02\"\xdf\r\n\x14\x43lientIdentification\x12\x44\n\x04type\x18\x01 \x01(\x0e\x32..video_widevine.ClientIdentification.TokenType:\x06KEYBOX\x12\r\n\x05token\x18\x02 \x01(\x0c\x12\x43\n\x0b\x63lient_info\x18\x03 \x03(\x0b\x32..video_widevine.ClientIdentification.NameValue\x12\x1d\n\x15provider_client_token\x18\x04 \x01(\x0c\x12\x17\n\x0flicense_counter\x18\x05 \x01(\r\x12T\n\x13\x63lient_capabilities\x18\x06 \x01(\x0b\x32\x37.video_widevine.ClientIdentification.ClientCapabilities\x12\x10\n\x08vmp_data\x18\x07 \x01(\x0c\x12R\n\x12\x64\x65vice_credentials\x18\x08 \x03(\x0b\x32\x36.video_widevine.ClientIdentification.ClientCredentials\x1a(\n\tNameValue\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x1a\xaf\x08\n\x12\x43lientCapabilities\x12\x1b\n\x0c\x63lient_token\x18\x01 \x01(\x08:\x05\x66\x61lse\x12\x1c\n\rsession_token\x18\x02 \x01(\x08:\x05\x66\x61lse\x12+\n\x1cvideo_resolution_constraints\x18\x03 \x01(\x08:\x05\x66\x61lse\x12h\n\x10max_hdcp_version\x18\x04 \x01(\x0e\x32\x43.video_widevine.ClientIdentification.ClientCapabilities.HdcpVersion:\tHDCP_NONE\x12\x1e\n\x16oem_crypto_api_version\x18\x05 \x01(\r\x12(\n\x19\x61nti_rollback_usage_table\x18\x06 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x0bsrm_version\x18\x07 \x01(\r\x12\x1d\n\x0e\x63\x61n_update_srm\x18\x08 \x01(\x08:\x05\x66\x61lse\x12r\n\x1esupported_certificate_key_type\x18\t \x03(\x0e\x32J.video_widevine.ClientIdentification.ClientCapabilities.CertificateKeyType\x12\x8b\x01\n\x1a\x61nalog_output_capabilities\x18\n \x01(\x0e\x32P.video_widevine.ClientIdentification.ClientCapabilities.AnalogOutputCapabilities:\x15\x41NALOG_OUTPUT_UNKNOWN\x12(\n\x19\x63\x61n_disable_analog_output\x18\x0b \x01(\x08:\x05\x66\x61lse\x12\x1f\n\x14resource_rating_tier\x18\x0c \x01(\r:\x01\x30\"\x80\x01\n\x0bHdcpVersion\x12\r\n\tHDCP_NONE\x10\x00\x12\x0b\n\x07HDCP_V1\x10\x01\x12\x0b\n\x07HDCP_V2\x10\x02\x12\r\n\tHDCP_V2_1\x10\x03\x12\r\n\tHDCP_V2_2\x10\x04\x12\r\n\tHDCP_V2_3\x10\x05\x12\x1b\n\x16HDCP_NO_DIGITAL_OUTPUT\x10\xff\x01\"i\n\x12\x43\x65rtificateKeyType\x12\x0c\n\x08RSA_2048\x10\x00\x12\x0c\n\x08RSA_3072\x10\x01\x12\x11\n\rECC_SECP256R1\x10\x02\x12\x11\n\rECC_SECP384R1\x10\x03\x12\x11\n\rECC_SECP521R1\x10\x04\"\x8d\x01\n\x18\x41nalogOutputCapabilities\x12\x19\n\x15\x41NALOG_OUTPUT_UNKNOWN\x10\x00\x12\x16\n\x12\x41NALOG_OUTPUT_NONE\x10\x01\x12\x1b\n\x17\x41NALOG_OUTPUT_SUPPORTED\x10\x02\x12!\n\x1d\x41NALOG_OUTPUT_SUPPORTS_CGMS_A\x10\x03\x1ah\n\x11\x43lientCredentials\x12\x44\n\x04type\x18\x01 \x01(\x0e\x32..video_widevine.ClientIdentification.TokenType:\x06KEYBOX\x12\r\n\x05token\x18\x02 \x01(\x0c\"s\n\tTokenType\x12\n\n\x06KEYBOX\x10\x00\x12\x1a\n\x16\x44RM_DEVICE_CERTIFICATE\x10\x01\x12\"\n\x1eREMOTE_ATTESTATION_CERTIFICATE\x10\x02\x12\x1a\n\x16OEM_DEVICE_CERTIFICATE\x10\x03\"\xbb\x01\n\x1d\x45ncryptedClientIdentification\x12\x13\n\x0bprovider_id\x18\x01 \x01(\t\x12)\n!service_certificate_serial_number\x18\x02 \x01(\x0c\x12\x1b\n\x13\x65ncrypted_client_id\x18\x03 \x01(\x0c\x12\x1e\n\x16\x65ncrypted_client_id_iv\x18\x04 \x01(\x0c\x12\x1d\n\x15\x65ncrypted_privacy_key\x18\x05 \x01(\x0c\"\xf9\x06\n\x0e\x44rmCertificate\x12\x31\n\x04type\x18\x01 \x01(\x0e\x32#.video_widevine.DrmCertificate.Type\x12\x15\n\rserial_number\x18\x02 \x01(\x0c\x12\x1d\n\x15\x63reation_time_seconds\x18\x03 \x01(\r\x12\x1f\n\x17\x65xpiration_time_seconds\x18\x0c \x01(\r\x12\x12\n\npublic_key\x18\x04 \x01(\x0c\x12\x11\n\tsystem_id\x18\x05 \x01(\r\x12\"\n\x16test_device_deprecated\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0bprovider_id\x18\x07 \x01(\t\x12\x41\n\rservice_types\x18\x08 \x03(\x0e\x32*.video_widevine.DrmCertificate.ServiceType\x12@\n\talgorithm\x18\t \x01(\x0e\x32(.video_widevine.DrmCertificate.Algorithm:\x03RSA\x12\x0e\n\x06rot_id\x18\n \x01(\x0c\x12\x44\n\x0e\x65ncryption_key\x18\x0b \x01(\x0b\x32,.video_widevine.DrmCertificate.EncryptionKey\x1a\x65\n\rEncryptionKey\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12@\n\talgorithm\x18\x02 \x01(\x0e\x32(.video_widevine.DrmCertificate.Algorithm:\x03RSA\"L\n\x04Type\x12\x08\n\x04ROOT\x10\x00\x12\x10\n\x0c\x44\x45VICE_MODEL\x10\x01\x12\n\n\x06\x44\x45VICE\x10\x02\x12\x0b\n\x07SERVICE\x10\x03\x12\x0f\n\x0bPROVISIONER\x10\x04\"\x86\x01\n\x0bServiceType\x12\x18\n\x14UNKNOWN_SERVICE_TYPE\x10\x00\x12\x16\n\x12LICENSE_SERVER_SDK\x10\x01\x12\x1c\n\x18LICENSE_SERVER_PROXY_SDK\x10\x02\x12\x14\n\x10PROVISIONING_SDK\x10\x03\x12\x11\n\rCAS_PROXY_SDK\x10\x04\"d\n\tAlgorithm\x12\x15\n\x11UNKNOWN_ALGORITHM\x10\x00\x12\x07\n\x03RSA\x10\x01\x12\x11\n\rECC_SECP256R1\x10\x02\x12\x11\n\rECC_SECP384R1\x10\x03\x12\x11\n\rECC_SECP521R1\x10\x04\"\xb4\x01\n\x14SignedDrmCertificate\x12\x17\n\x0f\x64rm_certificate\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\x0c\x12\x34\n\x06signer\x18\x03 \x01(\x0b\x32$.video_widevine.SignedDrmCertificate\x12:\n\x0ehash_algorithm\x18\x04 \x01(\x0e\x32\".video_widevine.HashAlgorithmProto\"\xcf\x05\n\x10WidevinePsshData\x12\x0f\n\x07key_ids\x18\x02 \x03(\x0c\x12\x12\n\ncontent_id\x18\x04 \x01(\x0c\x12\x1b\n\x13\x63rypto_period_index\x18\x07 \x01(\r\x12\x19\n\x11protection_scheme\x18\t \x01(\r\x12\x1d\n\x15\x63rypto_period_seconds\x18\n \x01(\r\x12;\n\x04type\x18\x0b \x01(\x0e\x32%.video_widevine.WidevinePsshData.Type:\x06SINGLE\x12\x14\n\x0ckey_sequence\x18\x0c \x01(\r\x12\x11\n\tgroup_ids\x18\r \x03(\x0c\x12\x43\n\rentitled_keys\x18\x0e \x03(\x0b\x32,.video_widevine.WidevinePsshData.EntitledKey\x12\x15\n\rvideo_feature\x18\x0f \x01(\t\x12\x41\n\talgorithm\x18\x01 \x01(\x0e\x32*.video_widevine.WidevinePsshData.AlgorithmB\x02\x18\x01\x12\x14\n\x08provider\x18\x03 \x01(\tB\x02\x18\x01\x12\x16\n\ntrack_type\x18\x05 \x01(\tB\x02\x18\x01\x12\x12\n\x06policy\x18\x06 \x01(\tB\x02\x18\x01\x12\x1b\n\x0fgrouped_license\x18\x08 \x01(\x0c\x42\x02\x18\x01\x1az\n\x0b\x45ntitledKey\x12\x1a\n\x12\x65ntitlement_key_id\x18\x01 \x01(\x0c\x12\x0e\n\x06key_id\x18\x02 \x01(\x0c\x12\x0b\n\x03key\x18\x03 \x01(\x0c\x12\n\n\x02iv\x18\x04 \x01(\x0c\x12&\n\x1a\x65ntitlement_key_size_bytes\x18\x05 \x01(\r:\x02\x33\x32\"5\n\x04Type\x12\n\n\x06SINGLE\x10\x00\x12\x0f\n\x0b\x45NTITLEMENT\x10\x01\x12\x10\n\x0c\x45NTITLED_KEY\x10\x02\"(\n\tAlgorithm\x12\x0f\n\x0bUNENCRYPTED\x10\x00\x12\n\n\x06\x41\x45SCTR\x10\x01\"\xc4\x01\n\nFileHashes\x12\x0e\n\x06signer\x18\x01 \x01(\x0c\x12\x38\n\nsignatures\x18\x02 \x03(\x0b\x32$.video_widevine.FileHashes.Signature\x1al\n\tSignature\x12\x10\n\x08\x66ilename\x18\x01 \x01(\t\x12\x14\n\x0ctest_signing\x18\x02 \x01(\x08\x12\x12\n\nSHA512Hash\x18\x03 \x01(\x0c\x12\x10\n\x08main_exe\x18\x04 \x01(\x08\x12\x11\n\tsignature\x18\x05 \x01(\x0c*8\n\x0bLicenseType\x12\r\n\tSTREAMING\x10\x01\x12\x0b\n\x07OFFLINE\x10\x02\x12\r\n\tAUTOMATIC\x10\x03*\xd9\x01\n\x1aPlatformVerificationStatus\x12\x17\n\x13PLATFORM_UNVERIFIED\x10\x00\x12\x15\n\x11PLATFORM_TAMPERED\x10\x01\x12\x1e\n\x1aPLATFORM_SOFTWARE_VERIFIED\x10\x02\x12\x1e\n\x1aPLATFORM_HARDWARE_VERIFIED\x10\x03\x12\x1c\n\x18PLATFORM_NO_VERIFICATION\x10\x04\x12-\n)PLATFORM_SECURE_STORAGE_SOFTWARE_VERIFIED\x10\x05*D\n\x0fProtocolVersion\x12\x0f\n\x0bVERSION_2_0\x10\x14\x12\x0f\n\x0bVERSION_2_1\x10\x15\x12\x0f\n\x0bVERSION_2_2\x10\x16*\x86\x01\n\x12HashAlgorithmProto\x12\x1e\n\x1aHASH_ALGORITHM_UNSPECIFIED\x10\x00\x12\x18\n\x14HASH_ALGORITHM_SHA_1\x10\x01\x12\x1a\n\x16HASH_ALGORITHM_SHA_256\x10\x02\x12\x1a\n\x16HASH_ALGORITHM_SHA_384\x10\x03\x42$\n com.google.video.widevine.protosH\x03') +) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +_LICENSETYPE = _descriptor.EnumDescriptor( + name='LicenseType', + full_name='video_widevine.LicenseType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='STREAMING', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='OFFLINE', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='AUTOMATIC', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=9725, + serialized_end=9781, +) +_sym_db.RegisterEnumDescriptor(_LICENSETYPE) + +LicenseType = enum_type_wrapper.EnumTypeWrapper(_LICENSETYPE) +_PLATFORMVERIFICATIONSTATUS = _descriptor.EnumDescriptor( + name='PlatformVerificationStatus', + full_name='video_widevine.PlatformVerificationStatus', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='PLATFORM_UNVERIFIED', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PLATFORM_TAMPERED', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PLATFORM_SOFTWARE_VERIFIED', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PLATFORM_HARDWARE_VERIFIED', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PLATFORM_NO_VERIFICATION', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PLATFORM_SECURE_STORAGE_SOFTWARE_VERIFIED', index=5, number=5, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=9784, + serialized_end=10001, +) +_sym_db.RegisterEnumDescriptor(_PLATFORMVERIFICATIONSTATUS) + +PlatformVerificationStatus = enum_type_wrapper.EnumTypeWrapper(_PLATFORMVERIFICATIONSTATUS) +_PROTOCOLVERSION = _descriptor.EnumDescriptor( + name='ProtocolVersion', + full_name='video_widevine.ProtocolVersion', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='VERSION_2_0', index=0, number=20, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='VERSION_2_1', index=1, number=21, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='VERSION_2_2', index=2, number=22, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=10003, + serialized_end=10071, +) +_sym_db.RegisterEnumDescriptor(_PROTOCOLVERSION) + +ProtocolVersion = enum_type_wrapper.EnumTypeWrapper(_PROTOCOLVERSION) +_HASHALGORITHMPROTO = _descriptor.EnumDescriptor( + name='HashAlgorithmProto', + full_name='video_widevine.HashAlgorithmProto', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='HASH_ALGORITHM_UNSPECIFIED', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HASH_ALGORITHM_SHA_1', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HASH_ALGORITHM_SHA_256', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HASH_ALGORITHM_SHA_384', index=3, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=10074, + serialized_end=10208, +) +_sym_db.RegisterEnumDescriptor(_HASHALGORITHMPROTO) + +HashAlgorithmProto = enum_type_wrapper.EnumTypeWrapper(_HASHALGORITHMPROTO) +STREAMING = 1 +OFFLINE = 2 +AUTOMATIC = 3 +PLATFORM_UNVERIFIED = 0 +PLATFORM_TAMPERED = 1 +PLATFORM_SOFTWARE_VERIFIED = 2 +PLATFORM_HARDWARE_VERIFIED = 3 +PLATFORM_NO_VERIFICATION = 4 +PLATFORM_SECURE_STORAGE_SOFTWARE_VERIFIED = 5 +VERSION_2_0 = 20 +VERSION_2_1 = 21 +VERSION_2_2 = 22 +HASH_ALGORITHM_UNSPECIFIED = 0 +HASH_ALGORITHM_SHA_1 = 1 +HASH_ALGORITHM_SHA_256 = 2 +HASH_ALGORITHM_SHA_384 = 3 + + +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCP = _descriptor.EnumDescriptor( + name='HDCP', + full_name='video_widevine.License.KeyContainer.OutputProtection.HDCP', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='HDCP_NONE', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V1', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V2', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V2_1', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V2_2', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V2_3', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_NO_DIGITAL_OUTPUT', index=6, number=255, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2407, + serialized_end=2528, +) +_sym_db.RegisterEnumDescriptor(_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCP) + +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS = _descriptor.EnumDescriptor( + name='CGMS', + full_name='video_widevine.License.KeyContainer.OutputProtection.CGMS', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='CGMS_NONE', index=0, number=42, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='COPY_FREE', index=1, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='COPY_ONCE', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='COPY_NEVER', index=3, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2530, + serialized_end=2597, +) +_sym_db.RegisterEnumDescriptor(_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS) + +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCPSRMRULE = _descriptor.EnumDescriptor( + name='HdcpSrmRule', + full_name='video_widevine.License.KeyContainer.OutputProtection.HdcpSrmRule', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='HDCP_SRM_RULE_NONE', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CURRENT_SRM', index=1, number=1, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2599, + serialized_end=2653, +) +_sym_db.RegisterEnumDescriptor(_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCPSRMRULE) + +_LICENSE_KEYCONTAINER_KEYTYPE = _descriptor.EnumDescriptor( + name='KeyType', + full_name='video_widevine.License.KeyContainer.KeyType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='SIGNING', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CONTENT', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='KEY_CONTROL', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='OPERATOR_SESSION', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ENTITLEMENT', index=4, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='OEM_CONTENT', index=5, number=6, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2991, + serialized_end=3099, +) +_sym_db.RegisterEnumDescriptor(_LICENSE_KEYCONTAINER_KEYTYPE) + +_LICENSE_KEYCONTAINER_SECURITYLEVEL = _descriptor.EnumDescriptor( + name='SecurityLevel', + full_name='video_widevine.License.KeyContainer.SecurityLevel', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='SW_SECURE_CRYPTO', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SW_SECURE_DECODE', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HW_SECURE_CRYPTO', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HW_SECURE_DECODE', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HW_SECURE_ALL', index=4, number=5, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=3101, + serialized_end=3223, +) +_sym_db.RegisterEnumDescriptor(_LICENSE_KEYCONTAINER_SECURITYLEVEL) + +_LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA_INITDATATYPE = _descriptor.EnumDescriptor( + name='InitDataType', + full_name='video_widevine.LicenseRequest.ContentIdentification.InitData.InitDataType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='CENC', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='WEBM', index=1, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=4663, + serialized_end=4697, +) +_sym_db.RegisterEnumDescriptor(_LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA_INITDATATYPE) + +_LICENSEREQUEST_REQUESTTYPE = _descriptor.EnumDescriptor( + name='RequestType', + full_name='video_widevine.LicenseRequest.RequestType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='NEW', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RENEWAL', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RELEASE', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=4721, + serialized_end=4769, +) +_sym_db.RegisterEnumDescriptor(_LICENSEREQUEST_REQUESTTYPE) + +_METRICDATA_METRICTYPE = _descriptor.EnumDescriptor( + name='MetricType', + full_name='video_widevine.MetricData.MetricType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='LATENCY', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='TIMESTAMP', index=1, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=4949, + serialized_end=4989, +) +_sym_db.RegisterEnumDescriptor(_METRICDATA_METRICTYPE) + +_SIGNEDMESSAGE_MESSAGETYPE = _descriptor.EnumDescriptor( + name='MessageType', + full_name='video_widevine.SignedMessage.MessageType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='LICENSE_REQUEST', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='LICENSE', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ERROR_RESPONSE', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SERVICE_CERTIFICATE_REQUEST', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SERVICE_CERTIFICATE', index=4, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SUB_LICENSE', index=5, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CAS_LICENSE_REQUEST', index=6, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CAS_LICENSE', index=7, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EXTERNAL_LICENSE_REQUEST', index=8, number=9, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EXTERNAL_LICENSE', index=9, number=10, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=5454, + serialized_end=5690, +) +_sym_db.RegisterEnumDescriptor(_SIGNEDMESSAGE_MESSAGETYPE) + +_SIGNEDMESSAGE_SESSIONKEYTYPE = _descriptor.EnumDescriptor( + name='SessionKeyType', + full_name='video_widevine.SignedMessage.SessionKeyType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNDEFINED', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='WRAPPED_AES_KEY', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EPHERMERAL_ECC_PUBLIC_KEY', index=2, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=5692, + serialized_end=5775, +) +_sym_db.RegisterEnumDescriptor(_SIGNEDMESSAGE_SESSIONKEYTYPE) + +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION = _descriptor.EnumDescriptor( + name='HdcpVersion', + full_name='video_widevine.ClientIdentification.ClientCapabilities.HdcpVersion', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='HDCP_NONE', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V1', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V2', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V2_1', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V2_2', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_V2_3', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HDCP_NO_DIGITAL_OUTPUT', index=6, number=255, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=6935, + serialized_end=7063, +) +_sym_db.RegisterEnumDescriptor(_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION) + +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_CERTIFICATEKEYTYPE = _descriptor.EnumDescriptor( + name='CertificateKeyType', + full_name='video_widevine.ClientIdentification.ClientCapabilities.CertificateKeyType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='RSA_2048', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RSA_3072', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ECC_SECP256R1', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ECC_SECP384R1', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ECC_SECP521R1', index=4, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7065, + serialized_end=7170, +) +_sym_db.RegisterEnumDescriptor(_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_CERTIFICATEKEYTYPE) + +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_ANALOGOUTPUTCAPABILITIES = _descriptor.EnumDescriptor( + name='AnalogOutputCapabilities', + full_name='video_widevine.ClientIdentification.ClientCapabilities.AnalogOutputCapabilities', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ANALOG_OUTPUT_UNKNOWN', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ANALOG_OUTPUT_NONE', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ANALOG_OUTPUT_SUPPORTED', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ANALOG_OUTPUT_SUPPORTS_CGMS_A', index=3, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7173, + serialized_end=7314, +) +_sym_db.RegisterEnumDescriptor(_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_ANALOGOUTPUTCAPABILITIES) + +_CLIENTIDENTIFICATION_TOKENTYPE = _descriptor.EnumDescriptor( + name='TokenType', + full_name='video_widevine.ClientIdentification.TokenType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='KEYBOX', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='DRM_DEVICE_CERTIFICATE', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='REMOTE_ATTESTATION_CERTIFICATE', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='OEM_DEVICE_CERTIFICATE', index=3, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7422, + serialized_end=7537, +) +_sym_db.RegisterEnumDescriptor(_CLIENTIDENTIFICATION_TOKENTYPE) + +_DRMCERTIFICATE_TYPE = _descriptor.EnumDescriptor( + name='Type', + full_name='video_widevine.DrmCertificate.Type', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ROOT', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='DEVICE_MODEL', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='DEVICE', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SERVICE', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PROVISIONER', index=4, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=8304, + serialized_end=8380, +) +_sym_db.RegisterEnumDescriptor(_DRMCERTIFICATE_TYPE) + +_DRMCERTIFICATE_SERVICETYPE = _descriptor.EnumDescriptor( + name='ServiceType', + full_name='video_widevine.DrmCertificate.ServiceType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNKNOWN_SERVICE_TYPE', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='LICENSE_SERVER_SDK', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='LICENSE_SERVER_PROXY_SDK', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PROVISIONING_SDK', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CAS_PROXY_SDK', index=4, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=8383, + serialized_end=8517, +) +_sym_db.RegisterEnumDescriptor(_DRMCERTIFICATE_SERVICETYPE) + +_DRMCERTIFICATE_ALGORITHM = _descriptor.EnumDescriptor( + name='Algorithm', + full_name='video_widevine.DrmCertificate.Algorithm', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNKNOWN_ALGORITHM', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RSA', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ECC_SECP256R1', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ECC_SECP384R1', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ECC_SECP521R1', index=4, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=8519, + serialized_end=8619, +) +_sym_db.RegisterEnumDescriptor(_DRMCERTIFICATE_ALGORITHM) + +_WIDEVINEPSSHDATA_TYPE = _descriptor.EnumDescriptor( + name='Type', + full_name='video_widevine.WidevinePsshData.Type', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='SINGLE', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ENTITLEMENT', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ENTITLED_KEY', index=2, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=9429, + serialized_end=9482, +) +_sym_db.RegisterEnumDescriptor(_WIDEVINEPSSHDATA_TYPE) + +_WIDEVINEPSSHDATA_ALGORITHM = _descriptor.EnumDescriptor( + name='Algorithm', + full_name='video_widevine.WidevinePsshData.Algorithm', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNENCRYPTED', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='AESCTR', index=1, number=1, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=9484, + serialized_end=9524, +) +_sym_db.RegisterEnumDescriptor(_WIDEVINEPSSHDATA_ALGORITHM) + + +_LICENSEIDENTIFICATION = _descriptor.Descriptor( + name='LicenseIdentification', + full_name='video_widevine.LicenseIdentification', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='request_id', full_name='video_widevine.LicenseIdentification.request_id', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='session_id', full_name='video_widevine.LicenseIdentification.session_id', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='purchase_id', full_name='video_widevine.LicenseIdentification.purchase_id', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='video_widevine.LicenseIdentification.type', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='version', full_name='video_widevine.LicenseIdentification.version', index=4, + number=5, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='provider_session_token', full_name='video_widevine.LicenseIdentification.provider_session_token', index=5, + number=6, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=54, + serialized_end=230, +) + + +_LICENSE_POLICY = _descriptor.Descriptor( + name='Policy', + full_name='video_widevine.License.Policy', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='can_play', full_name='video_widevine.License.Policy.can_play', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='can_persist', full_name='video_widevine.License.Policy.can_persist', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='can_renew', full_name='video_widevine.License.Policy.can_renew', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rental_duration_seconds', full_name='video_widevine.License.Policy.rental_duration_seconds', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='playback_duration_seconds', full_name='video_widevine.License.Policy.playback_duration_seconds', index=4, + number=5, type=3, cpp_type=2, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='license_duration_seconds', full_name='video_widevine.License.Policy.license_duration_seconds', index=5, + number=6, type=3, cpp_type=2, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='renewal_recovery_duration_seconds', full_name='video_widevine.License.Policy.renewal_recovery_duration_seconds', index=6, + number=7, type=3, cpp_type=2, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='renewal_server_url', full_name='video_widevine.License.Policy.renewal_server_url', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='renewal_delay_seconds', full_name='video_widevine.License.Policy.renewal_delay_seconds', index=8, + number=9, type=3, cpp_type=2, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='renewal_retry_interval_seconds', full_name='video_widevine.License.Policy.renewal_retry_interval_seconds', index=9, + number=10, type=3, cpp_type=2, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='renew_with_usage', full_name='video_widevine.License.Policy.renew_with_usage', index=10, + number=11, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='always_include_client_id', full_name='video_widevine.License.Policy.always_include_client_id', index=11, + number=12, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='play_start_grace_period_seconds', full_name='video_widevine.License.Policy.play_start_grace_period_seconds', index=12, + number=13, type=3, cpp_type=2, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='soft_enforce_playback_duration', full_name='video_widevine.License.Policy.soft_enforce_playback_duration', index=13, + number=14, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='soft_enforce_rental_duration', full_name='video_widevine.License.Policy.soft_enforce_rental_duration', index=14, + number=15, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=697, + serialized_end=1255, +) + +_LICENSE_KEYCONTAINER_KEYCONTROL = _descriptor.Descriptor( + name='KeyControl', + full_name='video_widevine.License.KeyContainer.KeyControl', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='key_control_block', full_name='video_widevine.License.KeyContainer.KeyControl.key_control_block', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='iv', full_name='video_widevine.License.KeyContainer.KeyControl.iv', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=1970, + serialized_end=2021, +) + +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION = _descriptor.Descriptor( + name='OutputProtection', + full_name='video_widevine.License.KeyContainer.OutputProtection', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='hdcp', full_name='video_widevine.License.KeyContainer.OutputProtection.hdcp', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cgms_flags', full_name='video_widevine.License.KeyContainer.OutputProtection.cgms_flags', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=42, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hdcp_srm_rule', full_name='video_widevine.License.KeyContainer.OutputProtection.hdcp_srm_rule', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='disable_analog_output', full_name='video_widevine.License.KeyContainer.OutputProtection.disable_analog_output', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='disable_digital_output', full_name='video_widevine.License.KeyContainer.OutputProtection.disable_digital_output', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCP, + _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS, + _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCPSRMRULE, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=2024, + serialized_end=2653, +) + +_LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT = _descriptor.Descriptor( + name='VideoResolutionConstraint', + full_name='video_widevine.License.KeyContainer.VideoResolutionConstraint', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='min_resolution_pixels', full_name='video_widevine.License.KeyContainer.VideoResolutionConstraint.min_resolution_pixels', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_resolution_pixels', full_name='video_widevine.License.KeyContainer.VideoResolutionConstraint.max_resolution_pixels', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='required_protection', full_name='video_widevine.License.KeyContainer.VideoResolutionConstraint.required_protection', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=2656, + serialized_end=2829, +) + +_LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS = _descriptor.Descriptor( + name='OperatorSessionKeyPermissions', + full_name='video_widevine.License.KeyContainer.OperatorSessionKeyPermissions', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='allow_encrypt', full_name='video_widevine.License.KeyContainer.OperatorSessionKeyPermissions.allow_encrypt', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='allow_decrypt', full_name='video_widevine.License.KeyContainer.OperatorSessionKeyPermissions.allow_decrypt', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='allow_sign', full_name='video_widevine.License.KeyContainer.OperatorSessionKeyPermissions.allow_sign', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='allow_signature_verify', full_name='video_widevine.License.KeyContainer.OperatorSessionKeyPermissions.allow_signature_verify', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=2832, + serialized_end=2989, +) + +_LICENSE_KEYCONTAINER = _descriptor.Descriptor( + name='KeyContainer', + full_name='video_widevine.License.KeyContainer', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='video_widevine.License.KeyContainer.id', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='iv', full_name='video_widevine.License.KeyContainer.iv', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='key', full_name='video_widevine.License.KeyContainer.key', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='video_widevine.License.KeyContainer.type', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='level', full_name='video_widevine.License.KeyContainer.level', index=4, + number=5, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='required_protection', full_name='video_widevine.License.KeyContainer.required_protection', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='requested_protection', full_name='video_widevine.License.KeyContainer.requested_protection', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='key_control', full_name='video_widevine.License.KeyContainer.key_control', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='operator_session_key_permissions', full_name='video_widevine.License.KeyContainer.operator_session_key_permissions', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='video_resolution_constraints', full_name='video_widevine.License.KeyContainer.video_resolution_constraints', index=9, + number=10, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='anti_rollback_usage_table', full_name='video_widevine.License.KeyContainer.anti_rollback_usage_table', index=10, + number=11, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='track_label', full_name='video_widevine.License.KeyContainer.track_label', index=11, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_LICENSE_KEYCONTAINER_KEYCONTROL, _LICENSE_KEYCONTAINER_OUTPUTPROTECTION, _LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT, _LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS, ], + enum_types=[ + _LICENSE_KEYCONTAINER_KEYTYPE, + _LICENSE_KEYCONTAINER_SECURITYLEVEL, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=1258, + serialized_end=3223, +) + +_LICENSE = _descriptor.Descriptor( + name='License', + full_name='video_widevine.License', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='video_widevine.License.id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='policy', full_name='video_widevine.License.policy', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='key', full_name='video_widevine.License.key', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='license_start_time', full_name='video_widevine.License.license_start_time', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='remote_attestation_verified', full_name='video_widevine.License.remote_attestation_verified', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='provider_client_token', full_name='video_widevine.License.provider_client_token', index=5, + number=6, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='protection_scheme', full_name='video_widevine.License.protection_scheme', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='srm_requirement', full_name='video_widevine.License.srm_requirement', index=7, + number=8, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='srm_update', full_name='video_widevine.License.srm_update', index=8, + number=9, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='platform_verification_status', full_name='video_widevine.License.platform_verification_status', index=9, + number=10, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=4, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='group_ids', full_name='video_widevine.License.group_ids', index=10, + number=11, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_LICENSE_POLICY, _LICENSE_KEYCONTAINER, ], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=233, + serialized_end=3223, +) + + +_LICENSEREQUEST_CONTENTIDENTIFICATION_WIDEVINEPSSHDATA = _descriptor.Descriptor( + name='WidevinePsshData', + full_name='video_widevine.LicenseRequest.ContentIdentification.WidevinePsshData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='pssh_data', full_name='video_widevine.LicenseRequest.ContentIdentification.WidevinePsshData.pssh_data', index=0, + number=1, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='license_type', full_name='video_widevine.LicenseRequest.ContentIdentification.WidevinePsshData.license_type', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='request_id', full_name='video_widevine.LicenseRequest.ContentIdentification.WidevinePsshData.request_id', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=4064, + serialized_end=4172, +) + +_LICENSEREQUEST_CONTENTIDENTIFICATION_WEBMKEYID = _descriptor.Descriptor( + name='WebmKeyId', + full_name='video_widevine.LicenseRequest.ContentIdentification.WebmKeyId', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='header', full_name='video_widevine.LicenseRequest.ContentIdentification.WebmKeyId.header', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='license_type', full_name='video_widevine.LicenseRequest.ContentIdentification.WebmKeyId.license_type', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='request_id', full_name='video_widevine.LicenseRequest.ContentIdentification.WebmKeyId.request_id', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=4174, + serialized_end=4272, +) + +_LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE = _descriptor.Descriptor( + name='ExistingLicense', + full_name='video_widevine.LicenseRequest.ContentIdentification.ExistingLicense', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='license_id', full_name='video_widevine.LicenseRequest.ContentIdentification.ExistingLicense.license_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='seconds_since_started', full_name='video_widevine.LicenseRequest.ContentIdentification.ExistingLicense.seconds_since_started', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='seconds_since_last_played', full_name='video_widevine.LicenseRequest.ContentIdentification.ExistingLicense.seconds_since_last_played', index=2, + number=3, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='session_usage_table_entry', full_name='video_widevine.LicenseRequest.ContentIdentification.ExistingLicense.session_usage_table_entry', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=4275, + serialized_end=4452, +) + +_LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA = _descriptor.Descriptor( + name='InitData', + full_name='video_widevine.LicenseRequest.ContentIdentification.InitData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='init_data_type', full_name='video_widevine.LicenseRequest.ContentIdentification.InitData.init_data_type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='init_data', full_name='video_widevine.LicenseRequest.ContentIdentification.InitData.init_data', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='license_type', full_name='video_widevine.LicenseRequest.ContentIdentification.InitData.license_type', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='request_id', full_name='video_widevine.LicenseRequest.ContentIdentification.InitData.request_id', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA_INITDATATYPE, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=4455, + serialized_end=4697, +) + +_LICENSEREQUEST_CONTENTIDENTIFICATION = _descriptor.Descriptor( + name='ContentIdentification', + full_name='video_widevine.LicenseRequest.ContentIdentification', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='widevine_pssh_data', full_name='video_widevine.LicenseRequest.ContentIdentification.widevine_pssh_data', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='webm_key_id', full_name='video_widevine.LicenseRequest.ContentIdentification.webm_key_id', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='existing_license', full_name='video_widevine.LicenseRequest.ContentIdentification.existing_license', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='init_data', full_name='video_widevine.LicenseRequest.ContentIdentification.init_data', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_LICENSEREQUEST_CONTENTIDENTIFICATION_WIDEVINEPSSHDATA, _LICENSEREQUEST_CONTENTIDENTIFICATION_WEBMKEYID, _LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE, _LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA, ], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='content_id_variant', full_name='video_widevine.LicenseRequest.ContentIdentification.content_id_variant', + index=0, containing_type=None, fields=[]), + ], + serialized_start=3669, + serialized_end=4719, +) + +_LICENSEREQUEST = _descriptor.Descriptor( + name='LicenseRequest', + full_name='video_widevine.LicenseRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='client_id', full_name='video_widevine.LicenseRequest.client_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='content_id', full_name='video_widevine.LicenseRequest.content_id', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='video_widevine.LicenseRequest.type', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='request_time', full_name='video_widevine.LicenseRequest.request_time', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='key_control_nonce_deprecated', full_name='video_widevine.LicenseRequest.key_control_nonce_deprecated', index=4, + number=5, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='protocol_version', full_name='video_widevine.LicenseRequest.protocol_version', index=5, + number=6, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=20, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='key_control_nonce', full_name='video_widevine.LicenseRequest.key_control_nonce', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='encrypted_client_id', full_name='video_widevine.LicenseRequest.encrypted_client_id', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_LICENSEREQUEST_CONTENTIDENTIFICATION, ], + enum_types=[ + _LICENSEREQUEST_REQUESTTYPE, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=3226, + serialized_end=4769, +) + + +_METRICDATA_TYPEVALUE = _descriptor.Descriptor( + name='TypeValue', + full_name='video_widevine.MetricData.TypeValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='video_widevine.MetricData.TypeValue.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='video_widevine.MetricData.TypeValue.value', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=4865, + serialized_end=4947, +) + +_METRICDATA = _descriptor.Descriptor( + name='MetricData', + full_name='video_widevine.MetricData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='stage_name', full_name='video_widevine.MetricData.stage_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='metric_data', full_name='video_widevine.MetricData.metric_data', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_METRICDATA_TYPEVALUE, ], + enum_types=[ + _METRICDATA_METRICTYPE, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=4772, + serialized_end=4989, +) + + +_VERSIONINFO = _descriptor.Descriptor( + name='VersionInfo', + full_name='video_widevine.VersionInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='license_sdk_version', full_name='video_widevine.VersionInfo.license_sdk_version', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='license_service_version', full_name='video_widevine.VersionInfo.license_service_version', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=4991, + serialized_end=5066, +) + + +_SIGNEDMESSAGE = _descriptor.Descriptor( + name='SignedMessage', + full_name='video_widevine.SignedMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='video_widevine.SignedMessage.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='msg', full_name='video_widevine.SignedMessage.msg', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='signature', full_name='video_widevine.SignedMessage.signature', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='session_key', full_name='video_widevine.SignedMessage.session_key', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='remote_attestation', full_name='video_widevine.SignedMessage.remote_attestation', index=4, + number=5, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='metric_data', full_name='video_widevine.SignedMessage.metric_data', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='service_version_info', full_name='video_widevine.SignedMessage.service_version_info', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='session_key_type', full_name='video_widevine.SignedMessage.session_key_type', index=7, + number=8, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='oemcrypto_core_message', full_name='video_widevine.SignedMessage.oemcrypto_core_message', index=8, + number=9, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _SIGNEDMESSAGE_MESSAGETYPE, + _SIGNEDMESSAGE_SESSIONKEYTYPE, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=5069, + serialized_end=5775, +) + + +_CLIENTIDENTIFICATION_NAMEVALUE = _descriptor.Descriptor( + name='NameValue', + full_name='video_widevine.ClientIdentification.NameValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='video_widevine.ClientIdentification.NameValue.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='video_widevine.ClientIdentification.NameValue.value', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=6200, + serialized_end=6240, +) + +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES = _descriptor.Descriptor( + name='ClientCapabilities', + full_name='video_widevine.ClientIdentification.ClientCapabilities', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='client_token', full_name='video_widevine.ClientIdentification.ClientCapabilities.client_token', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='session_token', full_name='video_widevine.ClientIdentification.ClientCapabilities.session_token', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='video_resolution_constraints', full_name='video_widevine.ClientIdentification.ClientCapabilities.video_resolution_constraints', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_hdcp_version', full_name='video_widevine.ClientIdentification.ClientCapabilities.max_hdcp_version', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='oem_crypto_api_version', full_name='video_widevine.ClientIdentification.ClientCapabilities.oem_crypto_api_version', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='anti_rollback_usage_table', full_name='video_widevine.ClientIdentification.ClientCapabilities.anti_rollback_usage_table', index=5, + number=6, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='srm_version', full_name='video_widevine.ClientIdentification.ClientCapabilities.srm_version', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='can_update_srm', full_name='video_widevine.ClientIdentification.ClientCapabilities.can_update_srm', index=7, + number=8, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='supported_certificate_key_type', full_name='video_widevine.ClientIdentification.ClientCapabilities.supported_certificate_key_type', index=8, + number=9, type=14, cpp_type=8, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='analog_output_capabilities', full_name='video_widevine.ClientIdentification.ClientCapabilities.analog_output_capabilities', index=9, + number=10, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='can_disable_analog_output', full_name='video_widevine.ClientIdentification.ClientCapabilities.can_disable_analog_output', index=10, + number=11, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='resource_rating_tier', full_name='video_widevine.ClientIdentification.ClientCapabilities.resource_rating_tier', index=11, + number=12, type=13, cpp_type=3, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION, + _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_CERTIFICATEKEYTYPE, + _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_ANALOGOUTPUTCAPABILITIES, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=6243, + serialized_end=7314, +) + +_CLIENTIDENTIFICATION_CLIENTCREDENTIALS = _descriptor.Descriptor( + name='ClientCredentials', + full_name='video_widevine.ClientIdentification.ClientCredentials', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='video_widevine.ClientIdentification.ClientCredentials.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='token', full_name='video_widevine.ClientIdentification.ClientCredentials.token', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=7316, + serialized_end=7420, +) + +_CLIENTIDENTIFICATION = _descriptor.Descriptor( + name='ClientIdentification', + full_name='video_widevine.ClientIdentification', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='video_widevine.ClientIdentification.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='token', full_name='video_widevine.ClientIdentification.token', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='client_info', full_name='video_widevine.ClientIdentification.client_info', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='provider_client_token', full_name='video_widevine.ClientIdentification.provider_client_token', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='license_counter', full_name='video_widevine.ClientIdentification.license_counter', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='client_capabilities', full_name='video_widevine.ClientIdentification.client_capabilities', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='vmp_data', full_name='video_widevine.ClientIdentification.vmp_data', index=6, + number=7, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='device_credentials', full_name='video_widevine.ClientIdentification.device_credentials', index=7, + number=8, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_CLIENTIDENTIFICATION_NAMEVALUE, _CLIENTIDENTIFICATION_CLIENTCAPABILITIES, _CLIENTIDENTIFICATION_CLIENTCREDENTIALS, ], + enum_types=[ + _CLIENTIDENTIFICATION_TOKENTYPE, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=5778, + serialized_end=7537, +) + + +_ENCRYPTEDCLIENTIDENTIFICATION = _descriptor.Descriptor( + name='EncryptedClientIdentification', + full_name='video_widevine.EncryptedClientIdentification', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='provider_id', full_name='video_widevine.EncryptedClientIdentification.provider_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='service_certificate_serial_number', full_name='video_widevine.EncryptedClientIdentification.service_certificate_serial_number', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='encrypted_client_id', full_name='video_widevine.EncryptedClientIdentification.encrypted_client_id', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='encrypted_client_id_iv', full_name='video_widevine.EncryptedClientIdentification.encrypted_client_id_iv', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='encrypted_privacy_key', full_name='video_widevine.EncryptedClientIdentification.encrypted_privacy_key', index=4, + number=5, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=7540, + serialized_end=7727, +) + + +_DRMCERTIFICATE_ENCRYPTIONKEY = _descriptor.Descriptor( + name='EncryptionKey', + full_name='video_widevine.DrmCertificate.EncryptionKey', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='public_key', full_name='video_widevine.DrmCertificate.EncryptionKey.public_key', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='algorithm', full_name='video_widevine.DrmCertificate.EncryptionKey.algorithm', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=8201, + serialized_end=8302, +) + +_DRMCERTIFICATE = _descriptor.Descriptor( + name='DrmCertificate', + full_name='video_widevine.DrmCertificate', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='video_widevine.DrmCertificate.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='serial_number', full_name='video_widevine.DrmCertificate.serial_number', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='creation_time_seconds', full_name='video_widevine.DrmCertificate.creation_time_seconds', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='expiration_time_seconds', full_name='video_widevine.DrmCertificate.expiration_time_seconds', index=3, + number=12, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='public_key', full_name='video_widevine.DrmCertificate.public_key', index=4, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='system_id', full_name='video_widevine.DrmCertificate.system_id', index=5, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='test_device_deprecated', full_name='video_widevine.DrmCertificate.test_device_deprecated', index=6, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), + _descriptor.FieldDescriptor( + name='provider_id', full_name='video_widevine.DrmCertificate.provider_id', index=7, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='service_types', full_name='video_widevine.DrmCertificate.service_types', index=8, + number=8, type=14, cpp_type=8, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='algorithm', full_name='video_widevine.DrmCertificate.algorithm', index=9, + number=9, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rot_id', full_name='video_widevine.DrmCertificate.rot_id', index=10, + number=10, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='encryption_key', full_name='video_widevine.DrmCertificate.encryption_key', index=11, + number=11, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_DRMCERTIFICATE_ENCRYPTIONKEY, ], + enum_types=[ + _DRMCERTIFICATE_TYPE, + _DRMCERTIFICATE_SERVICETYPE, + _DRMCERTIFICATE_ALGORITHM, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=7730, + serialized_end=8619, +) + + +_SIGNEDDRMCERTIFICATE = _descriptor.Descriptor( + name='SignedDrmCertificate', + full_name='video_widevine.SignedDrmCertificate', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='drm_certificate', full_name='video_widevine.SignedDrmCertificate.drm_certificate', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='signature', full_name='video_widevine.SignedDrmCertificate.signature', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='signer', full_name='video_widevine.SignedDrmCertificate.signer', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hash_algorithm', full_name='video_widevine.SignedDrmCertificate.hash_algorithm', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=8622, + serialized_end=8802, +) + + +_WIDEVINEPSSHDATA_ENTITLEDKEY = _descriptor.Descriptor( + name='EntitledKey', + full_name='video_widevine.WidevinePsshData.EntitledKey', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='entitlement_key_id', full_name='video_widevine.WidevinePsshData.EntitledKey.entitlement_key_id', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='key_id', full_name='video_widevine.WidevinePsshData.EntitledKey.key_id', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='key', full_name='video_widevine.WidevinePsshData.EntitledKey.key', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='iv', full_name='video_widevine.WidevinePsshData.EntitledKey.iv', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='entitlement_key_size_bytes', full_name='video_widevine.WidevinePsshData.EntitledKey.entitlement_key_size_bytes', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=True, default_value=32, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=9305, + serialized_end=9427, +) + +_WIDEVINEPSSHDATA = _descriptor.Descriptor( + name='WidevinePsshData', + full_name='video_widevine.WidevinePsshData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='key_ids', full_name='video_widevine.WidevinePsshData.key_ids', index=0, + number=2, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='content_id', full_name='video_widevine.WidevinePsshData.content_id', index=1, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='crypto_period_index', full_name='video_widevine.WidevinePsshData.crypto_period_index', index=2, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='protection_scheme', full_name='video_widevine.WidevinePsshData.protection_scheme', index=3, + number=9, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='crypto_period_seconds', full_name='video_widevine.WidevinePsshData.crypto_period_seconds', index=4, + number=10, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='video_widevine.WidevinePsshData.type', index=5, + number=11, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='key_sequence', full_name='video_widevine.WidevinePsshData.key_sequence', index=6, + number=12, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='group_ids', full_name='video_widevine.WidevinePsshData.group_ids', index=7, + number=13, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='entitled_keys', full_name='video_widevine.WidevinePsshData.entitled_keys', index=8, + number=14, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='video_feature', full_name='video_widevine.WidevinePsshData.video_feature', index=9, + number=15, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='algorithm', full_name='video_widevine.WidevinePsshData.algorithm', index=10, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), + _descriptor.FieldDescriptor( + name='provider', full_name='video_widevine.WidevinePsshData.provider', index=11, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), + _descriptor.FieldDescriptor( + name='track_type', full_name='video_widevine.WidevinePsshData.track_type', index=12, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), + _descriptor.FieldDescriptor( + name='policy', full_name='video_widevine.WidevinePsshData.policy', index=13, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), + _descriptor.FieldDescriptor( + name='grouped_license', full_name='video_widevine.WidevinePsshData.grouped_license', index=14, + number=8, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), + ], + extensions=[ + ], + nested_types=[_WIDEVINEPSSHDATA_ENTITLEDKEY, ], + enum_types=[ + _WIDEVINEPSSHDATA_TYPE, + _WIDEVINEPSSHDATA_ALGORITHM, + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=8805, + serialized_end=9524, +) + + +_FILEHASHES_SIGNATURE = _descriptor.Descriptor( + name='Signature', + full_name='video_widevine.FileHashes.Signature', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='filename', full_name='video_widevine.FileHashes.Signature.filename', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='test_signing', full_name='video_widevine.FileHashes.Signature.test_signing', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='SHA512Hash', full_name='video_widevine.FileHashes.Signature.SHA512Hash', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='main_exe', full_name='video_widevine.FileHashes.Signature.main_exe', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='signature', full_name='video_widevine.FileHashes.Signature.signature', index=4, + number=5, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=9615, + serialized_end=9723, +) + +_FILEHASHES = _descriptor.Descriptor( + name='FileHashes', + full_name='video_widevine.FileHashes', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='signer', full_name='video_widevine.FileHashes.signer', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='signatures', full_name='video_widevine.FileHashes.signatures', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_FILEHASHES_SIGNATURE, ], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=9527, + serialized_end=9723, +) + +_LICENSEIDENTIFICATION.fields_by_name['type'].enum_type = _LICENSETYPE +_LICENSE_POLICY.containing_type = _LICENSE +_LICENSE_KEYCONTAINER_KEYCONTROL.containing_type = _LICENSE_KEYCONTAINER +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION.fields_by_name['hdcp'].enum_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCP +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION.fields_by_name['cgms_flags'].enum_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION.fields_by_name['hdcp_srm_rule'].enum_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCPSRMRULE +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION.containing_type = _LICENSE_KEYCONTAINER +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCP.containing_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS.containing_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION +_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_HDCPSRMRULE.containing_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION +_LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT.fields_by_name['required_protection'].message_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION +_LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT.containing_type = _LICENSE_KEYCONTAINER +_LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS.containing_type = _LICENSE_KEYCONTAINER +_LICENSE_KEYCONTAINER.fields_by_name['type'].enum_type = _LICENSE_KEYCONTAINER_KEYTYPE +_LICENSE_KEYCONTAINER.fields_by_name['level'].enum_type = _LICENSE_KEYCONTAINER_SECURITYLEVEL +_LICENSE_KEYCONTAINER.fields_by_name['required_protection'].message_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION +_LICENSE_KEYCONTAINER.fields_by_name['requested_protection'].message_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION +_LICENSE_KEYCONTAINER.fields_by_name['key_control'].message_type = _LICENSE_KEYCONTAINER_KEYCONTROL +_LICENSE_KEYCONTAINER.fields_by_name['operator_session_key_permissions'].message_type = _LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS +_LICENSE_KEYCONTAINER.fields_by_name['video_resolution_constraints'].message_type = _LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT +_LICENSE_KEYCONTAINER.containing_type = _LICENSE +_LICENSE_KEYCONTAINER_KEYTYPE.containing_type = _LICENSE_KEYCONTAINER +_LICENSE_KEYCONTAINER_SECURITYLEVEL.containing_type = _LICENSE_KEYCONTAINER +_LICENSE.fields_by_name['id'].message_type = _LICENSEIDENTIFICATION +_LICENSE.fields_by_name['policy'].message_type = _LICENSE_POLICY +_LICENSE.fields_by_name['key'].message_type = _LICENSE_KEYCONTAINER +_LICENSE.fields_by_name['platform_verification_status'].enum_type = _PLATFORMVERIFICATIONSTATUS +_LICENSEREQUEST_CONTENTIDENTIFICATION_WIDEVINEPSSHDATA.fields_by_name['license_type'].enum_type = _LICENSETYPE +_LICENSEREQUEST_CONTENTIDENTIFICATION_WIDEVINEPSSHDATA.containing_type = _LICENSEREQUEST_CONTENTIDENTIFICATION +_LICENSEREQUEST_CONTENTIDENTIFICATION_WEBMKEYID.fields_by_name['license_type'].enum_type = _LICENSETYPE +_LICENSEREQUEST_CONTENTIDENTIFICATION_WEBMKEYID.containing_type = _LICENSEREQUEST_CONTENTIDENTIFICATION +_LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE.fields_by_name['license_id'].message_type = _LICENSEIDENTIFICATION +_LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE.containing_type = _LICENSEREQUEST_CONTENTIDENTIFICATION +_LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA.fields_by_name['init_data_type'].enum_type = _LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA_INITDATATYPE +_LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA.fields_by_name['license_type'].enum_type = _LICENSETYPE +_LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA.containing_type = _LICENSEREQUEST_CONTENTIDENTIFICATION +_LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA_INITDATATYPE.containing_type = _LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA +_LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['widevine_pssh_data'].message_type = _LICENSEREQUEST_CONTENTIDENTIFICATION_WIDEVINEPSSHDATA +_LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['webm_key_id'].message_type = _LICENSEREQUEST_CONTENTIDENTIFICATION_WEBMKEYID +_LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['existing_license'].message_type = _LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE +_LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['init_data'].message_type = _LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA +_LICENSEREQUEST_CONTENTIDENTIFICATION.containing_type = _LICENSEREQUEST +_LICENSEREQUEST_CONTENTIDENTIFICATION.oneofs_by_name['content_id_variant'].fields.append( + _LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['widevine_pssh_data']) +_LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['widevine_pssh_data'].containing_oneof = _LICENSEREQUEST_CONTENTIDENTIFICATION.oneofs_by_name['content_id_variant'] +_LICENSEREQUEST_CONTENTIDENTIFICATION.oneofs_by_name['content_id_variant'].fields.append( + _LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['webm_key_id']) +_LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['webm_key_id'].containing_oneof = _LICENSEREQUEST_CONTENTIDENTIFICATION.oneofs_by_name['content_id_variant'] +_LICENSEREQUEST_CONTENTIDENTIFICATION.oneofs_by_name['content_id_variant'].fields.append( + _LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['existing_license']) +_LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['existing_license'].containing_oneof = _LICENSEREQUEST_CONTENTIDENTIFICATION.oneofs_by_name['content_id_variant'] +_LICENSEREQUEST_CONTENTIDENTIFICATION.oneofs_by_name['content_id_variant'].fields.append( + _LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['init_data']) +_LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['init_data'].containing_oneof = _LICENSEREQUEST_CONTENTIDENTIFICATION.oneofs_by_name['content_id_variant'] +_LICENSEREQUEST.fields_by_name['client_id'].message_type = _CLIENTIDENTIFICATION +_LICENSEREQUEST.fields_by_name['content_id'].message_type = _LICENSEREQUEST_CONTENTIDENTIFICATION +_LICENSEREQUEST.fields_by_name['type'].enum_type = _LICENSEREQUEST_REQUESTTYPE +_LICENSEREQUEST.fields_by_name['protocol_version'].enum_type = _PROTOCOLVERSION +_LICENSEREQUEST.fields_by_name['encrypted_client_id'].message_type = _ENCRYPTEDCLIENTIDENTIFICATION +_LICENSEREQUEST_REQUESTTYPE.containing_type = _LICENSEREQUEST +_METRICDATA_TYPEVALUE.fields_by_name['type'].enum_type = _METRICDATA_METRICTYPE +_METRICDATA_TYPEVALUE.containing_type = _METRICDATA +_METRICDATA.fields_by_name['metric_data'].message_type = _METRICDATA_TYPEVALUE +_METRICDATA_METRICTYPE.containing_type = _METRICDATA +_SIGNEDMESSAGE.fields_by_name['type'].enum_type = _SIGNEDMESSAGE_MESSAGETYPE +_SIGNEDMESSAGE.fields_by_name['metric_data'].message_type = _METRICDATA +_SIGNEDMESSAGE.fields_by_name['service_version_info'].message_type = _VERSIONINFO +_SIGNEDMESSAGE.fields_by_name['session_key_type'].enum_type = _SIGNEDMESSAGE_SESSIONKEYTYPE +_SIGNEDMESSAGE_MESSAGETYPE.containing_type = _SIGNEDMESSAGE +_SIGNEDMESSAGE_SESSIONKEYTYPE.containing_type = _SIGNEDMESSAGE +_CLIENTIDENTIFICATION_NAMEVALUE.containing_type = _CLIENTIDENTIFICATION +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES.fields_by_name['max_hdcp_version'].enum_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES.fields_by_name['supported_certificate_key_type'].enum_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_CERTIFICATEKEYTYPE +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES.fields_by_name['analog_output_capabilities'].enum_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_ANALOGOUTPUTCAPABILITIES +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES.containing_type = _CLIENTIDENTIFICATION +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION.containing_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_CERTIFICATEKEYTYPE.containing_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES +_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_ANALOGOUTPUTCAPABILITIES.containing_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES +_CLIENTIDENTIFICATION_CLIENTCREDENTIALS.fields_by_name['type'].enum_type = _CLIENTIDENTIFICATION_TOKENTYPE +_CLIENTIDENTIFICATION_CLIENTCREDENTIALS.containing_type = _CLIENTIDENTIFICATION +_CLIENTIDENTIFICATION.fields_by_name['type'].enum_type = _CLIENTIDENTIFICATION_TOKENTYPE +_CLIENTIDENTIFICATION.fields_by_name['client_info'].message_type = _CLIENTIDENTIFICATION_NAMEVALUE +_CLIENTIDENTIFICATION.fields_by_name['client_capabilities'].message_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES +_CLIENTIDENTIFICATION.fields_by_name['device_credentials'].message_type = _CLIENTIDENTIFICATION_CLIENTCREDENTIALS +_CLIENTIDENTIFICATION_TOKENTYPE.containing_type = _CLIENTIDENTIFICATION +_DRMCERTIFICATE_ENCRYPTIONKEY.fields_by_name['algorithm'].enum_type = _DRMCERTIFICATE_ALGORITHM +_DRMCERTIFICATE_ENCRYPTIONKEY.containing_type = _DRMCERTIFICATE +_DRMCERTIFICATE.fields_by_name['type'].enum_type = _DRMCERTIFICATE_TYPE +_DRMCERTIFICATE.fields_by_name['service_types'].enum_type = _DRMCERTIFICATE_SERVICETYPE +_DRMCERTIFICATE.fields_by_name['algorithm'].enum_type = _DRMCERTIFICATE_ALGORITHM +_DRMCERTIFICATE.fields_by_name['encryption_key'].message_type = _DRMCERTIFICATE_ENCRYPTIONKEY +_DRMCERTIFICATE_TYPE.containing_type = _DRMCERTIFICATE +_DRMCERTIFICATE_SERVICETYPE.containing_type = _DRMCERTIFICATE +_DRMCERTIFICATE_ALGORITHM.containing_type = _DRMCERTIFICATE +_SIGNEDDRMCERTIFICATE.fields_by_name['signer'].message_type = _SIGNEDDRMCERTIFICATE +_SIGNEDDRMCERTIFICATE.fields_by_name['hash_algorithm'].enum_type = _HASHALGORITHMPROTO +_WIDEVINEPSSHDATA_ENTITLEDKEY.containing_type = _WIDEVINEPSSHDATA +_WIDEVINEPSSHDATA.fields_by_name['type'].enum_type = _WIDEVINEPSSHDATA_TYPE +_WIDEVINEPSSHDATA.fields_by_name['entitled_keys'].message_type = _WIDEVINEPSSHDATA_ENTITLEDKEY +_WIDEVINEPSSHDATA.fields_by_name['algorithm'].enum_type = _WIDEVINEPSSHDATA_ALGORITHM +_WIDEVINEPSSHDATA_TYPE.containing_type = _WIDEVINEPSSHDATA +_WIDEVINEPSSHDATA_ALGORITHM.containing_type = _WIDEVINEPSSHDATA +_FILEHASHES_SIGNATURE.containing_type = _FILEHASHES +_FILEHASHES.fields_by_name['signatures'].message_type = _FILEHASHES_SIGNATURE +DESCRIPTOR.message_types_by_name['LicenseIdentification'] = _LICENSEIDENTIFICATION +DESCRIPTOR.message_types_by_name['License'] = _LICENSE +DESCRIPTOR.message_types_by_name['LicenseRequest'] = _LICENSEREQUEST +DESCRIPTOR.message_types_by_name['MetricData'] = _METRICDATA +DESCRIPTOR.message_types_by_name['VersionInfo'] = _VERSIONINFO +DESCRIPTOR.message_types_by_name['SignedMessage'] = _SIGNEDMESSAGE +DESCRIPTOR.message_types_by_name['ClientIdentification'] = _CLIENTIDENTIFICATION +DESCRIPTOR.message_types_by_name['EncryptedClientIdentification'] = _ENCRYPTEDCLIENTIDENTIFICATION +DESCRIPTOR.message_types_by_name['DrmCertificate'] = _DRMCERTIFICATE +DESCRIPTOR.message_types_by_name['SignedDrmCertificate'] = _SIGNEDDRMCERTIFICATE +DESCRIPTOR.message_types_by_name['WidevinePsshData'] = _WIDEVINEPSSHDATA +DESCRIPTOR.message_types_by_name['FileHashes'] = _FILEHASHES +DESCRIPTOR.enum_types_by_name['LicenseType'] = _LICENSETYPE +DESCRIPTOR.enum_types_by_name['PlatformVerificationStatus'] = _PLATFORMVERIFICATIONSTATUS +DESCRIPTOR.enum_types_by_name['ProtocolVersion'] = _PROTOCOLVERSION +DESCRIPTOR.enum_types_by_name['HashAlgorithmProto'] = _HASHALGORITHMPROTO + +LicenseIdentification = _reflection.GeneratedProtocolMessageType('LicenseIdentification', (_message.Message,), dict( + DESCRIPTOR = _LICENSEIDENTIFICATION, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.LicenseIdentification) + )) +_sym_db.RegisterMessage(LicenseIdentification) + +License = _reflection.GeneratedProtocolMessageType('License', (_message.Message,), dict( + + Policy = _reflection.GeneratedProtocolMessageType('Policy', (_message.Message,), dict( + DESCRIPTOR = _LICENSE_POLICY, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.License.Policy) + )) + , + + KeyContainer = _reflection.GeneratedProtocolMessageType('KeyContainer', (_message.Message,), dict( + + KeyControl = _reflection.GeneratedProtocolMessageType('KeyControl', (_message.Message,), dict( + DESCRIPTOR = _LICENSE_KEYCONTAINER_KEYCONTROL, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.License.KeyContainer.KeyControl) + )) + , + + OutputProtection = _reflection.GeneratedProtocolMessageType('OutputProtection', (_message.Message,), dict( + DESCRIPTOR = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.License.KeyContainer.OutputProtection) + )) + , + + VideoResolutionConstraint = _reflection.GeneratedProtocolMessageType('VideoResolutionConstraint', (_message.Message,), dict( + DESCRIPTOR = _LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.License.KeyContainer.VideoResolutionConstraint) + )) + , + + OperatorSessionKeyPermissions = _reflection.GeneratedProtocolMessageType('OperatorSessionKeyPermissions', (_message.Message,), dict( + DESCRIPTOR = _LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.License.KeyContainer.OperatorSessionKeyPermissions) + )) + , + DESCRIPTOR = _LICENSE_KEYCONTAINER, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.License.KeyContainer) + )) + , + DESCRIPTOR = _LICENSE, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.License) + )) +_sym_db.RegisterMessage(License) +_sym_db.RegisterMessage(License.Policy) +_sym_db.RegisterMessage(License.KeyContainer) +_sym_db.RegisterMessage(License.KeyContainer.KeyControl) +_sym_db.RegisterMessage(License.KeyContainer.OutputProtection) +_sym_db.RegisterMessage(License.KeyContainer.VideoResolutionConstraint) +_sym_db.RegisterMessage(License.KeyContainer.OperatorSessionKeyPermissions) + +LicenseRequest = _reflection.GeneratedProtocolMessageType('LicenseRequest', (_message.Message,), dict( + + ContentIdentification = _reflection.GeneratedProtocolMessageType('ContentIdentification', (_message.Message,), dict( + + WidevinePsshData = _reflection.GeneratedProtocolMessageType('WidevinePsshData', (_message.Message,), dict( + DESCRIPTOR = _LICENSEREQUEST_CONTENTIDENTIFICATION_WIDEVINEPSSHDATA, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.LicenseRequest.ContentIdentification.WidevinePsshData) + )) + , + + WebmKeyId = _reflection.GeneratedProtocolMessageType('WebmKeyId', (_message.Message,), dict( + DESCRIPTOR = _LICENSEREQUEST_CONTENTIDENTIFICATION_WEBMKEYID, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.LicenseRequest.ContentIdentification.WebmKeyId) + )) + , + + ExistingLicense = _reflection.GeneratedProtocolMessageType('ExistingLicense', (_message.Message,), dict( + DESCRIPTOR = _LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.LicenseRequest.ContentIdentification.ExistingLicense) + )) + , + + InitData = _reflection.GeneratedProtocolMessageType('InitData', (_message.Message,), dict( + DESCRIPTOR = _LICENSEREQUEST_CONTENTIDENTIFICATION_INITDATA, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.LicenseRequest.ContentIdentification.InitData) + )) + , + DESCRIPTOR = _LICENSEREQUEST_CONTENTIDENTIFICATION, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.LicenseRequest.ContentIdentification) + )) + , + DESCRIPTOR = _LICENSEREQUEST, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.LicenseRequest) + )) +_sym_db.RegisterMessage(LicenseRequest) +_sym_db.RegisterMessage(LicenseRequest.ContentIdentification) +_sym_db.RegisterMessage(LicenseRequest.ContentIdentification.WidevinePsshData) +_sym_db.RegisterMessage(LicenseRequest.ContentIdentification.WebmKeyId) +_sym_db.RegisterMessage(LicenseRequest.ContentIdentification.ExistingLicense) +_sym_db.RegisterMessage(LicenseRequest.ContentIdentification.InitData) + +MetricData = _reflection.GeneratedProtocolMessageType('MetricData', (_message.Message,), dict( + + TypeValue = _reflection.GeneratedProtocolMessageType('TypeValue', (_message.Message,), dict( + DESCRIPTOR = _METRICDATA_TYPEVALUE, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.MetricData.TypeValue) + )) + , + DESCRIPTOR = _METRICDATA, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.MetricData) + )) +_sym_db.RegisterMessage(MetricData) +_sym_db.RegisterMessage(MetricData.TypeValue) + +VersionInfo = _reflection.GeneratedProtocolMessageType('VersionInfo', (_message.Message,), dict( + DESCRIPTOR = _VERSIONINFO, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.VersionInfo) + )) +_sym_db.RegisterMessage(VersionInfo) + +SignedMessage = _reflection.GeneratedProtocolMessageType('SignedMessage', (_message.Message,), dict( + DESCRIPTOR = _SIGNEDMESSAGE, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.SignedMessage) + )) +_sym_db.RegisterMessage(SignedMessage) + +ClientIdentification = _reflection.GeneratedProtocolMessageType('ClientIdentification', (_message.Message,), dict( + + NameValue = _reflection.GeneratedProtocolMessageType('NameValue', (_message.Message,), dict( + DESCRIPTOR = _CLIENTIDENTIFICATION_NAMEVALUE, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.ClientIdentification.NameValue) + )) + , + + ClientCapabilities = _reflection.GeneratedProtocolMessageType('ClientCapabilities', (_message.Message,), dict( + DESCRIPTOR = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.ClientIdentification.ClientCapabilities) + )) + , + + ClientCredentials = _reflection.GeneratedProtocolMessageType('ClientCredentials', (_message.Message,), dict( + DESCRIPTOR = _CLIENTIDENTIFICATION_CLIENTCREDENTIALS, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.ClientIdentification.ClientCredentials) + )) + , + DESCRIPTOR = _CLIENTIDENTIFICATION, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.ClientIdentification) + )) +_sym_db.RegisterMessage(ClientIdentification) +_sym_db.RegisterMessage(ClientIdentification.NameValue) +_sym_db.RegisterMessage(ClientIdentification.ClientCapabilities) +_sym_db.RegisterMessage(ClientIdentification.ClientCredentials) + +EncryptedClientIdentification = _reflection.GeneratedProtocolMessageType('EncryptedClientIdentification', (_message.Message,), dict( + DESCRIPTOR = _ENCRYPTEDCLIENTIDENTIFICATION, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.EncryptedClientIdentification) + )) +_sym_db.RegisterMessage(EncryptedClientIdentification) + +DrmCertificate = _reflection.GeneratedProtocolMessageType('DrmCertificate', (_message.Message,), dict( + + EncryptionKey = _reflection.GeneratedProtocolMessageType('EncryptionKey', (_message.Message,), dict( + DESCRIPTOR = _DRMCERTIFICATE_ENCRYPTIONKEY, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.DrmCertificate.EncryptionKey) + )) + , + DESCRIPTOR = _DRMCERTIFICATE, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.DrmCertificate) + )) +_sym_db.RegisterMessage(DrmCertificate) +_sym_db.RegisterMessage(DrmCertificate.EncryptionKey) + +SignedDrmCertificate = _reflection.GeneratedProtocolMessageType('SignedDrmCertificate', (_message.Message,), dict( + DESCRIPTOR = _SIGNEDDRMCERTIFICATE, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.SignedDrmCertificate) + )) +_sym_db.RegisterMessage(SignedDrmCertificate) + +WidevinePsshData = _reflection.GeneratedProtocolMessageType('WidevinePsshData', (_message.Message,), dict( + + EntitledKey = _reflection.GeneratedProtocolMessageType('EntitledKey', (_message.Message,), dict( + DESCRIPTOR = _WIDEVINEPSSHDATA_ENTITLEDKEY, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.WidevinePsshData.EntitledKey) + )) + , + DESCRIPTOR = _WIDEVINEPSSHDATA, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.WidevinePsshData) + )) +_sym_db.RegisterMessage(WidevinePsshData) +_sym_db.RegisterMessage(WidevinePsshData.EntitledKey) + +FileHashes = _reflection.GeneratedProtocolMessageType('FileHashes', (_message.Message,), dict( + + Signature = _reflection.GeneratedProtocolMessageType('Signature', (_message.Message,), dict( + DESCRIPTOR = _FILEHASHES_SIGNATURE, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.FileHashes.Signature) + )) + , + DESCRIPTOR = _FILEHASHES, + __module__ = 'pywidevine.license_protocol_pb2' + # @@protoc_insertion_point(class_scope:video_widevine.FileHashes) + )) +_sym_db.RegisterMessage(FileHashes) +_sym_db.RegisterMessage(FileHashes.Signature) + + +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n com.google.video.widevine.protosH\003')) +_DRMCERTIFICATE.fields_by_name['test_device_deprecated'].has_options = True +_DRMCERTIFICATE.fields_by_name['test_device_deprecated']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_WIDEVINEPSSHDATA.fields_by_name['algorithm'].has_options = True +_WIDEVINEPSSHDATA.fields_by_name['algorithm']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_WIDEVINEPSSHDATA.fields_by_name['provider'].has_options = True +_WIDEVINEPSSHDATA.fields_by_name['provider']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_WIDEVINEPSSHDATA.fields_by_name['track_type'].has_options = True +_WIDEVINEPSSHDATA.fields_by_name['track_type']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_WIDEVINEPSSHDATA.fields_by_name['policy'].has_options = True +_WIDEVINEPSSHDATA.fields_by_name['policy']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_WIDEVINEPSSHDATA.fields_by_name['grouped_license'].has_options = True +_WIDEVINEPSSHDATA.fields_by_name['grouped_license']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +# @@protoc_insertion_point(module_scope)