Repository: Diazole/dumper Branch: main Commit: 16df7440d6b3 Files: 7 Total size: 150.7 KB Directory structure: gitextract_uh3fiif8/ ├── .gitignore ├── Helpers/ │ ├── Device.py │ ├── script.js │ └── wv_proto2_pb2.py ├── README.md ├── dump_keys.py └── requirements.txt ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # dumper license_request.bin key_dumps ================================================ FILE: Helpers/Device.py ================================================ import os import logging import base64 import frida from Crypto.PublicKey import RSA from Helpers.wv_proto2_pb2 import SignedLicenseRequest class Device: def __init__(self, dynamic_function_name, cdm_version, module_names): self.logger = logging.getLogger(__name__) self.saved_keys = {} self.widevine_libraries = module_names self.usb_device = frida.get_usb_device() self.name = self.usb_device.name with open('./Helpers/script.js', 'r', encoding="utf_8") as script: self.frida_script = script.read() self.frida_script = self.frida_script.replace(r'${DYNAMIC_FUNCTION_NAME}', dynamic_function_name) self.frida_script = self.frida_script.replace(r'${CDM_VERSION}', cdm_version) def export_key(self, key, client_id): save_dir = os.path.join( 'key_dumps', f'{self.name}', 'private_keys', f'{client_id.Token._DeviceCertificate.SystemId}', f'{str(key.n)[:10]}' ) if not os.path.exists(save_dir): os.makedirs(save_dir) with open(os.path.join(save_dir, 'client_id.bin'), 'wb+') as writer: writer.write(client_id.SerializeToString()) with open(os.path.join(save_dir, 'private_key.pem'), 'wb+') as writer: writer.write(key.exportKey('PEM')) self.logger.info('Key pairs saved at %s', save_dir) def on_message(self, msg, data): if 'payload' in msg: if msg['payload'] == 'private_key': key = RSA.import_key(data) if key.n not in self.saved_keys: self.logger.debug( 'Retrieved key: \n\n%s\n', key.export_key().decode("utf-8") ) self.saved_keys[key.n] = key elif msg['payload'] == 'device_info': self.license_request_message(data) elif msg['payload'] == 'message_info': self.logger.info(data.decode()) def license_request_message(self, data): self.logger.debug( 'Retrieved build info: \n\n%s\n', base64.b64encode(data).decode('utf-8') ) root = SignedLicenseRequest() root.ParseFromString(data) public_key = root.Msg.ClientId.Token._DeviceCertificate.PublicKey key = RSA.importKey(public_key) cur = self.saved_keys.get(key.n) if cur is not None: self.export_key(cur, root.Msg.ClientId) def find_widevine_process(self, process_name): process = self.usb_device.attach(process_name) script = process.create_script(self.frida_script) script.load() loaded_modules = [] try: for lib in self.widevine_libraries: try: loaded_modules.append(script.exports.getmodulebyname(lib)) except frida.core.RPCException as e: # Hide the cases where the module cannot be found continue except Exception as e: raise(e) finally: process.detach() return loaded_modules def hook_to_process(self, process, library): session = self.usb_device.attach(process) script = session.create_script(self.frida_script) script.on('message', self.on_message) script.load() script.exports.hooklibfunctions(library) return session ================================================ FILE: Helpers/script.js ================================================ const DYNAMIC_FUNCTION_NAME = '${DYNAMIC_FUNCTION_NAME}'; const CDM_VERSION = '${CDM_VERSION}'; // These strings are function names that have been succesfully dumped. const KNOWN_DYNAMIC_FUNCTION_NAMES = [ 'rnmsglvj', 'polorucp', 'kqzqahjq', 'pldrclfq', 'kgaitijd', 'dnvffnze', 'cwkfcplc', 'crhqcdet' ]; // The TextEncoder/Decoder API isn't supported so it has to be polyfilled. // Taken from https://gist.github.com/Yaffle/5458286#file-textencodertextdecoder-js function TextEncoder() { } TextEncoder.prototype.encode = function (string) { var octets = []; var length = string.length; var i = 0; while (i < length) { var codePoint = string.codePointAt(i); var c = 0; var bits = 0; if (codePoint <= 0x0000007F) { c = 0; bits = 0x00; } else if (codePoint <= 0x000007FF) { c = 6; bits = 0xC0; } else if (codePoint <= 0x0000FFFF) { c = 12; bits = 0xE0; } else if (codePoint <= 0x001FFFFF) { c = 18; bits = 0xF0; } octets.push(bits | (codePoint >> c)); c -= 6; while (c >= 0) { octets.push(0x80 | ((codePoint >> c) & 0x3F)); c -= 6; } i += codePoint >= 0x10000 ? 2 : 1; } return octets; } function getPrivateKey(address) { Interceptor.attach(ptr(address), { onEnter: function (args) { if (!args[6].isNull()) { const size = args[6].toInt32(); if (size >= 1000 && size <= 2000 && !args[5].isNull()) { const buf = args[5].readByteArray(size); const bytes = new Uint8Array(buf); // The first two bytes of the DER encoding are 0x30 and 0x82 (MII). if (bytes[0] === 0x30 && bytes[1] === 0x82) { try { const binaryString = a2bs(bytes) const keyLength = getKeyLength(binaryString); const key = bytes.slice(0, keyLength); send('private_key', key); } catch (error) { console.log(error) } } } } } }); } // nop privacy mode. // PrivacyMode encrypts the payload with the public key returned by the license server which we don't want. function disablePrivacyMode(address) { Interceptor.attach(address, { onLeave: function (retval) { retval.replace(ptr(0)); } }); } function prepareKeyRequest(address) { Interceptor.attach(ptr(address), { onEnter: function (args) { switch (CDM_VERSION) { case '14.0.0': case '15.0.0': case '16.0.0': this.ret = args[4]; break; case '16.1.0': case '17.0.0': this.ret = args[5]; break; default: const message = 'Defaulting to args[4] for PrepareKeyRequest.' send('message_info', new TextEncoder().encode(message)); this.ret = args[4]; break; } }, onLeave: function () { if (this.ret) { const size = Memory.readU32(ptr(this.ret).add(Process.pointerSize)) const arr = Memory.readByteArray(this.ret.add(Process.pointerSize * 2).readPointer(), size) send('device_info', arr); } } }); } function hookLibFunctions(lib) { const name = lib['name']; const baseAddr = lib['base']; let message = 'Hooking ' + name + ' at ' + baseAddr; let hookedProvidedModule = false; let funcNames = []; send('message_info', new TextEncoder().encode(message)); Module.enumerateExportsSync(name).forEach(function (module) { try { let hookedModule; if (module.name.includes('UsePrivacyMode')) { disablePrivacyMode(module.address); hookedModule = module.name; } else if (module.name.includes('PrepareKeyRequest')) { prepareKeyRequest(module.address); hookedModule = module.name; } else if (DYNAMIC_FUNCTION_NAME !== '' && module.name.includes(DYNAMIC_FUNCTION_NAME)) { getPrivateKey(module.address); hookedModule = module.name; hookedProvidedModule = true; } else if (DYNAMIC_FUNCTION_NAME === '' && module.name.match(/^[a-z]+$/)) { getPrivateKey(module.address); hookedModule = module.name; funcNames.push(hookedModule); } if (hookedModule) { const message = 'Hooked ' + hookedModule + ' at ' + module.address; send('message_info', new TextEncoder().encode(message)); } } catch (e) { console.log("Error: " + e + " at F: " + module.name); } }); if (DYNAMIC_FUNCTION_NAME !== '' && !hookedProvidedModule) { const message = "Unable to find '" + DYNAMIC_FUNCTION_NAME + "'"; send('message_info', new TextEncoder().encode(message)); } if (DYNAMIC_FUNCTION_NAME === '') { const possibleFuncNames = KNOWN_DYNAMIC_FUNCTION_NAMES.filter(x => funcNames.includes(x)); if (possibleFuncNames.length) { message = "Your function name is most likely: " + "'" + possibleFuncNames.join('\', \'') + "'"; send('message_info', new TextEncoder().encode(message)); } } } function getModuleByName(lib) { return Process.getModuleByName(lib); } function a2bs(bytes) { let b = ''; for (let i = 0; i < bytes.byteLength; i++) b += String.fromCharCode(bytes[i]); return b } function getKeyLength(key) { let pos = 1 // Skip the tag let buf = key.charCodeAt(pos++); let len = buf & 0x7F; // Short tag length buf = 0; for (let i = 0; i < len; ++i) buf = (buf * 256) + key.charCodeAt(pos++); return pos + Math.abs(buf); } rpc.exports.hooklibfunctions = hookLibFunctions; rpc.exports.getmodulebyname = getModuleByName; ================================================ FILE: Helpers/wv_proto2_pb2.py ================================================ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: pywidevine/cdm/formats/wv_proto2.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/cdm/formats/wv_proto2.proto', package='', syntax='proto2', serialized_pb=_b('\n&pywidevine/cdm/formats/wv_proto2.proto\"\xe7\x05\n\x14\x43lientIdentification\x12-\n\x04Type\x18\x01 \x02(\x0e\x32\x1f.ClientIdentification.TokenType\x12\'\n\x05Token\x18\x02 \x01(\x0b\x32\x18.SignedDeviceCertificate\x12\x33\n\nClientInfo\x18\x03 \x03(\x0b\x32\x1f.ClientIdentification.NameValue\x12\x1b\n\x13ProviderClientToken\x18\x04 \x01(\x0c\x12\x16\n\x0eLicenseCounter\x18\x05 \x01(\r\x12\x45\n\x13_ClientCapabilities\x18\x06 \x01(\x0b\x32(.ClientIdentification.ClientCapabilities\x12 \n\x0b_FileHashes\x18\x07 \x01(\x0b\x32\x0b.FileHashes\x1a(\n\tNameValue\x12\x0c\n\x04Name\x18\x01 \x02(\t\x12\r\n\x05Value\x18\x02 \x02(\t\x1a\xa4\x02\n\x12\x43lientCapabilities\x12\x13\n\x0b\x43lientToken\x18\x01 \x01(\r\x12\x14\n\x0cSessionToken\x18\x02 \x01(\r\x12\"\n\x1aVideoResolutionConstraints\x18\x03 \x01(\r\x12L\n\x0eMaxHdcpVersion\x18\x04 \x01(\x0e\x32\x34.ClientIdentification.ClientCapabilities.HdcpVersion\x12\x1b\n\x13OemCryptoApiVersion\x18\x05 \x01(\r\"T\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\"S\n\tTokenType\x12\n\n\x06KEYBOX\x10\x00\x12\x16\n\x12\x44\x45VICE_CERTIFICATE\x10\x01\x12\"\n\x1eREMOTE_ATTESTATION_CERTIFICATE\x10\x02\"\x9b\x02\n\x11\x44\x65viceCertificate\x12\x30\n\x04Type\x18\x01 \x02(\x0e\x32\".DeviceCertificate.CertificateType\x12\x14\n\x0cSerialNumber\x18\x02 \x01(\x0c\x12\x1b\n\x13\x43reationTimeSeconds\x18\x03 \x01(\r\x12\x11\n\tPublicKey\x18\x04 \x01(\x0c\x12\x10\n\x08SystemId\x18\x05 \x01(\r\x12\x1c\n\x14TestDeviceDeprecated\x18\x06 \x01(\r\x12\x11\n\tServiceId\x18\x07 \x01(\x0c\"K\n\x0f\x43\x65rtificateType\x12\x08\n\x04ROOT\x10\x00\x12\x10\n\x0cINTERMEDIATE\x10\x01\x12\x0f\n\x0bUSER_DEVICE\x10\x02\x12\x0b\n\x07SERVICE\x10\x03\"\xc4\x01\n\x17\x44\x65viceCertificateStatus\x12\x14\n\x0cSerialNumber\x18\x01 \x01(\x0c\x12:\n\x06Status\x18\x02 \x01(\x0e\x32*.DeviceCertificateStatus.CertificateStatus\x12*\n\nDeviceInfo\x18\x04 \x01(\x0b\x32\x16.ProvisionedDeviceInfo\"+\n\x11\x43\x65rtificateStatus\x12\t\n\x05VALID\x10\x00\x12\x0b\n\x07REVOKED\x10\x01\"o\n\x1b\x44\x65viceCertificateStatusList\x12\x1b\n\x13\x43reationTimeSeconds\x18\x01 \x01(\r\x12\x33\n\x11\x43\x65rtificateStatus\x18\x02 \x03(\x0b\x32\x18.DeviceCertificateStatus\"\xaf\x01\n\x1d\x45ncryptedClientIdentification\x12\x11\n\tServiceId\x18\x01 \x02(\t\x12&\n\x1eServiceCertificateSerialNumber\x18\x02 \x01(\x0c\x12\x19\n\x11\x45ncryptedClientId\x18\x03 \x02(\x0c\x12\x1b\n\x13\x45ncryptedClientIdIv\x18\x04 \x02(\x0c\x12\x1b\n\x13\x45ncryptedPrivacyKey\x18\x05 \x02(\x0c\"\x9c\x01\n\x15LicenseIdentification\x12\x11\n\tRequestId\x18\x01 \x01(\x0c\x12\x11\n\tSessionId\x18\x02 \x01(\x0c\x12\x12\n\nPurchaseId\x18\x03 \x01(\x0c\x12\x1a\n\x04Type\x18\x04 \x01(\x0e\x32\x0c.LicenseType\x12\x0f\n\x07Version\x18\x05 \x01(\r\x12\x1c\n\x14ProviderSessionToken\x18\x06 \x01(\x0c\"\xa1\x0e\n\x07License\x12\"\n\x02Id\x18\x01 \x01(\x0b\x32\x16.LicenseIdentification\x12 \n\x07_Policy\x18\x02 \x01(\x0b\x32\x0f.License.Policy\x12\"\n\x03Key\x18\x03 \x03(\x0b\x32\x15.License.KeyContainer\x12\x18\n\x10LicenseStartTime\x18\x04 \x01(\r\x12!\n\x19RemoteAttestationVerified\x18\x05 \x01(\r\x12\x1b\n\x13ProviderClientToken\x18\x06 \x01(\x0c\x12\x18\n\x10ProtectionScheme\x18\x07 \x01(\r\x1a\xbb\x02\n\x06Policy\x12\x0f\n\x07\x43\x61nPlay\x18\x01 \x01(\x08\x12\x12\n\nCanPersist\x18\x02 \x01(\x08\x12\x10\n\x08\x43\x61nRenew\x18\x03 \x01(\x08\x12\x1d\n\x15RentalDurationSeconds\x18\x04 \x01(\r\x12\x1f\n\x17PlaybackDurationSeconds\x18\x05 \x01(\r\x12\x1e\n\x16LicenseDurationSeconds\x18\x06 \x01(\r\x12&\n\x1eRenewalRecoveryDurationSeconds\x18\x07 \x01(\r\x12\x18\n\x10RenewalServerUrl\x18\x08 \x01(\t\x12\x1b\n\x13RenewalDelaySeconds\x18\t \x01(\r\x12#\n\x1bRenewalRetryIntervalSeconds\x18\n \x01(\r\x12\x16\n\x0eRenewWithUsage\x18\x0b \x01(\x08\x1a\xf9\t\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\x1d.License.KeyContainer.KeyType\x12\x32\n\x05Level\x18\x05 \x01(\x0e\x32#.License.KeyContainer.SecurityLevel\x12\x42\n\x12RequiredProtection\x18\x06 \x01(\x0b\x32&.License.KeyContainer.OutputProtection\x12\x43\n\x13RequestedProtection\x18\x07 \x01(\x0b\x32&.License.KeyContainer.OutputProtection\x12\x35\n\x0b_KeyControl\x18\x08 \x01(\x0b\x32 .License.KeyContainer.KeyControl\x12[\n\x1e_OperatorSessionKeyPermissions\x18\t \x01(\x0b\x32\x33.License.KeyContainer.OperatorSessionKeyPermissions\x12S\n\x1aVideoResolutionConstraints\x18\n \x03(\x0b\x32/.License.KeyContainer.VideoResolutionConstraint\x1a\xdb\x01\n\x10OutputProtection\x12\x42\n\x04Hdcp\x18\x01 \x01(\x0e\x32\x34.ClientIdentification.ClientCapabilities.HdcpVersion\x12>\n\tCgmsFlags\x18\x02 \x01(\x0e\x32+.License.KeyContainer.OutputProtection.CGMS\"C\n\x04\x43GMS\x12\r\n\tCOPY_FREE\x10\x00\x12\r\n\tCOPY_ONCE\x10\x02\x12\x0e\n\nCOPY_NEVER\x10\x03\x12\r\n\tCGMS_NONE\x10*\x1a\x31\n\nKeyControl\x12\x17\n\x0fKeyControlBlock\x18\x01 \x02(\x0c\x12\n\n\x02Iv\x18\x02 \x02(\x0c\x1a|\n\x1dOperatorSessionKeyPermissions\x12\x14\n\x0c\x41llowEncrypt\x18\x01 \x01(\r\x12\x14\n\x0c\x41llowDecrypt\x18\x02 \x01(\r\x12\x11\n\tAllowSign\x18\x03 \x01(\r\x12\x1c\n\x14\x41llowSignatureVerify\x18\x04 \x01(\r\x1a\x99\x01\n\x19VideoResolutionConstraint\x12\x1b\n\x13MinResolutionPixels\x18\x01 \x01(\r\x12\x1b\n\x13MaxResolutionPixels\x18\x02 \x01(\r\x12\x42\n\x12RequiredProtection\x18\x03 \x01(\x0b\x32&.License.KeyContainer.OutputProtection\"J\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\"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\"\x98\x01\n\x0cLicenseError\x12&\n\tErrorCode\x18\x01 \x01(\x0e\x32\x13.LicenseError.Error\"`\n\x05\x45rror\x12\x1e\n\x1aINVALID_DEVICE_CERTIFICATE\x10\x01\x12\x1e\n\x1aREVOKED_DEVICE_CERTIFICATE\x10\x02\x12\x17\n\x13SERVICE_UNAVAILABLE\x10\x03\"\xac\x07\n\x0eLicenseRequest\x12\'\n\x08\x43lientId\x18\x01 \x01(\x0b\x32\x15.ClientIdentification\x12\x38\n\tContentId\x18\x02 \x01(\x0b\x32%.LicenseRequest.ContentIdentification\x12)\n\x04Type\x18\x03 \x01(\x0e\x32\x1b.LicenseRequest.RequestType\x12\x13\n\x0bRequestTime\x18\x04 \x01(\r\x12!\n\x19KeyControlNonceDeprecated\x18\x05 \x01(\x0c\x12)\n\x0fProtocolVersion\x18\x06 \x01(\x0e\x32\x10.ProtocolVersion\x12\x17\n\x0fKeyControlNonce\x18\x07 \x01(\r\x12\x39\n\x11\x45ncryptedClientId\x18\x08 \x01(\x0b\x32\x1e.EncryptedClientIdentification\x1a\xa2\x04\n\x15\x43ontentIdentification\x12:\n\x06\x43\x65ncId\x18\x01 \x01(\x0b\x32*.LicenseRequest.ContentIdentification.CENC\x12:\n\x06WebmId\x18\x02 \x01(\x0b\x32*.LicenseRequest.ContentIdentification.WebM\x12\x46\n\x07License\x18\x03 \x01(\x0b\x32\x35.LicenseRequest.ContentIdentification.ExistingLicense\x1a_\n\x04\x43\x45NC\x12!\n\x04Pssh\x18\x01 \x01(\x0b\x32\x13.WidevineCencHeader\x12!\n\x0bLicenseType\x18\x02 \x01(\x0e\x32\x0c.LicenseType\x12\x11\n\tRequestId\x18\x03 \x01(\x0c\x1aL\n\x04WebM\x12\x0e\n\x06Header\x18\x01 \x01(\x0c\x12!\n\x0bLicenseType\x18\x02 \x01(\x0e\x32\x0c.LicenseType\x12\x11\n\tRequestId\x18\x03 \x01(\x0c\x1a\x99\x01\n\x0f\x45xistingLicense\x12)\n\tLicenseId\x18\x01 \x01(\x0b\x32\x16.LicenseIdentification\x12\x1b\n\x13SecondsSinceStarted\x18\x02 \x01(\r\x12\x1e\n\x16SecondsSinceLastPlayed\x18\x03 \x01(\r\x12\x1e\n\x16SessionUsageTableEntry\x18\x04 \x01(\x0c\"0\n\x0bRequestType\x12\x07\n\x03NEW\x10\x01\x12\x0b\n\x07RENEWAL\x10\x02\x12\x0b\n\x07RELEASE\x10\x03\"\xa9\x07\n\x11LicenseRequestRaw\x12\'\n\x08\x43lientId\x18\x01 \x01(\x0b\x32\x15.ClientIdentification\x12;\n\tContentId\x18\x02 \x01(\x0b\x32(.LicenseRequestRaw.ContentIdentification\x12,\n\x04Type\x18\x03 \x01(\x0e\x32\x1e.LicenseRequestRaw.RequestType\x12\x13\n\x0bRequestTime\x18\x04 \x01(\r\x12!\n\x19KeyControlNonceDeprecated\x18\x05 \x01(\x0c\x12)\n\x0fProtocolVersion\x18\x06 \x01(\x0e\x32\x10.ProtocolVersion\x12\x17\n\x0fKeyControlNonce\x18\x07 \x01(\r\x12\x39\n\x11\x45ncryptedClientId\x18\x08 \x01(\x0b\x32\x1e.EncryptedClientIdentification\x1a\x96\x04\n\x15\x43ontentIdentification\x12=\n\x06\x43\x65ncId\x18\x01 \x01(\x0b\x32-.LicenseRequestRaw.ContentIdentification.CENC\x12=\n\x06WebmId\x18\x02 \x01(\x0b\x32-.LicenseRequestRaw.ContentIdentification.WebM\x12I\n\x07License\x18\x03 \x01(\x0b\x32\x38.LicenseRequestRaw.ContentIdentification.ExistingLicense\x1aJ\n\x04\x43\x45NC\x12\x0c\n\x04Pssh\x18\x01 \x01(\x0c\x12!\n\x0bLicenseType\x18\x02 \x01(\x0e\x32\x0c.LicenseType\x12\x11\n\tRequestId\x18\x03 \x01(\x0c\x1aL\n\x04WebM\x12\x0e\n\x06Header\x18\x01 \x01(\x0c\x12!\n\x0bLicenseType\x18\x02 \x01(\x0e\x32\x0c.LicenseType\x12\x11\n\tRequestId\x18\x03 \x01(\x0c\x1a\x99\x01\n\x0f\x45xistingLicense\x12)\n\tLicenseId\x18\x01 \x01(\x0b\x32\x16.LicenseIdentification\x12\x1b\n\x13SecondsSinceStarted\x18\x02 \x01(\r\x12\x1e\n\x16SecondsSinceLastPlayed\x18\x03 \x01(\r\x12\x1e\n\x16SessionUsageTableEntry\x18\x04 \x01(\x0c\"0\n\x0bRequestType\x12\x07\n\x03NEW\x10\x01\x12\x0b\n\x07RENEWAL\x10\x02\x12\x0b\n\x07RELEASE\x10\x03\"\xa6\x02\n\x15ProvisionedDeviceInfo\x12\x10\n\x08SystemId\x18\x01 \x01(\r\x12\x0b\n\x03Soc\x18\x02 \x01(\t\x12\x14\n\x0cManufacturer\x18\x03 \x01(\t\x12\r\n\x05Model\x18\x04 \x01(\t\x12\x12\n\nDeviceType\x18\x05 \x01(\t\x12\x11\n\tModelYear\x18\x06 \x01(\r\x12=\n\rSecurityLevel\x18\x07 \x01(\x0e\x32&.ProvisionedDeviceInfo.WvSecurityLevel\x12\x12\n\nTestDevice\x18\x08 \x01(\r\"O\n\x0fWvSecurityLevel\x12\x15\n\x11LEVEL_UNSPECIFIED\x10\x00\x12\x0b\n\x07LEVEL_1\x10\x01\x12\x0b\n\x07LEVEL_2\x10\x02\x12\x0b\n\x07LEVEL_3\x10\x03\"\x15\n\x13ProvisioningOptions\"\x15\n\x13ProvisioningRequest\"\x16\n\x14ProvisioningResponse\"i\n\x11RemoteAttestation\x12\x33\n\x0b\x43\x65rtificate\x18\x01 \x01(\x0b\x32\x1e.EncryptedClientIdentification\x12\x0c\n\x04Salt\x18\x02 \x01(\t\x12\x11\n\tSignature\x18\x03 \x01(\t\"\r\n\x0bSessionInit\"\x0e\n\x0cSessionState\"\x1d\n\x1bSignedCertificateStatusList\"\x86\x01\n\x17SignedDeviceCertificate\x12.\n\x12_DeviceCertificate\x18\x01 \x01(\x0b\x32\x12.DeviceCertificate\x12\x11\n\tSignature\x18\x02 \x01(\x0c\x12(\n\x06Signer\x18\x03 \x01(\x0b\x32\x18.SignedDeviceCertificate\"\x1b\n\x19SignedProvisioningMessage\"\x9b\x02\n\rSignedMessage\x12(\n\x04Type\x18\x01 \x01(\x0e\x32\x1a.SignedMessage.MessageType\x12\x0b\n\x03Msg\x18\x02 \x01(\x0c\x12\x11\n\tSignature\x18\x03 \x01(\x0c\x12\x12\n\nSessionKey\x18\x04 \x01(\x0c\x12-\n\x11RemoteAttestation\x18\x05 \x01(\x0b\x32\x12.RemoteAttestation\"}\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\"\xc5\x02\n\x12WidevineCencHeader\x12\x30\n\talgorithm\x18\x01 \x01(\x0e\x32\x1d.WidevineCencHeader.Algorithm\x12\x0e\n\x06key_id\x18\x02 \x03(\x0c\x12\x10\n\x08provider\x18\x03 \x01(\t\x12\x12\n\ncontent_id\x18\x04 \x01(\x0c\x12\x1d\n\x15track_type_deprecated\x18\x05 \x01(\t\x12\x0e\n\x06policy\x18\x06 \x01(\t\x12\x1b\n\x13\x63rypto_period_index\x18\x07 \x01(\r\x12\x17\n\x0fgrouped_license\x18\x08 \x01(\x0c\x12\x19\n\x11protection_scheme\x18\t \x01(\r\x12\x1d\n\x15\x63rypto_period_seconds\x18\n \x01(\r\"(\n\tAlgorithm\x12\x0f\n\x0bUNENCRYPTED\x10\x00\x12\n\n\x06\x41\x45SCTR\x10\x01\"\xba\x02\n\x14SignedLicenseRequest\x12/\n\x04Type\x18\x01 \x01(\x0e\x32!.SignedLicenseRequest.MessageType\x12\x1c\n\x03Msg\x18\x02 \x01(\x0b\x32\x0f.LicenseRequest\x12\x11\n\tSignature\x18\x03 \x01(\x0c\x12\x12\n\nSessionKey\x18\x04 \x01(\x0c\x12-\n\x11RemoteAttestation\x18\x05 \x01(\x0b\x32\x12.RemoteAttestation\"}\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\"\xc3\x02\n\x17SignedLicenseRequestRaw\x12\x32\n\x04Type\x18\x01 \x01(\x0e\x32$.SignedLicenseRequestRaw.MessageType\x12\x1f\n\x03Msg\x18\x02 \x01(\x0b\x32\x12.LicenseRequestRaw\x12\x11\n\tSignature\x18\x03 \x01(\x0c\x12\x12\n\nSessionKey\x18\x04 \x01(\x0c\x12-\n\x11RemoteAttestation\x18\x05 \x01(\x0b\x32\x12.RemoteAttestation\"}\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\"\xa5\x02\n\rSignedLicense\x12(\n\x04Type\x18\x01 \x01(\x0e\x32\x1a.SignedLicense.MessageType\x12\x15\n\x03Msg\x18\x02 \x01(\x0b\x32\x08.License\x12\x11\n\tSignature\x18\x03 \x01(\x0c\x12\x12\n\nSessionKey\x18\x04 \x01(\x0c\x12-\n\x11RemoteAttestation\x18\x05 \x01(\x0b\x32\x12.RemoteAttestation\"}\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\"\xcb\x02\n\x18SignedServiceCertificate\x12\x33\n\x04Type\x18\x01 \x01(\x0e\x32%.SignedServiceCertificate.MessageType\x12%\n\x03Msg\x18\x02 \x01(\x0b\x32\x18.SignedDeviceCertificate\x12\x11\n\tSignature\x18\x03 \x01(\x0c\x12\x12\n\nSessionKey\x18\x04 \x01(\x0c\x12-\n\x11RemoteAttestation\x18\x05 \x01(\x0b\x32\x12.RemoteAttestation\"}\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\"\xb5\x01\n\nFileHashes\x12\x0e\n\x06signer\x18\x01 \x01(\x0c\x12)\n\nsignatures\x18\x02 \x03(\x0b\x32\x15.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*1\n\x0bLicenseType\x12\x08\n\x04ZERO\x10\x00\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x01\x12\x0b\n\x07OFFLINE\x10\x02*\x1e\n\x0fProtocolVersion\x12\x0b\n\x07\x43URRENT\x10\x15') ) _sym_db.RegisterFileDescriptor(DESCRIPTOR) _LICENSETYPE = _descriptor.EnumDescriptor( name='LicenseType', full_name='LicenseType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='ZERO', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='DEFAULT', index=1, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='OFFLINE', index=2, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=8362, serialized_end=8411, ) _sym_db.RegisterEnumDescriptor(_LICENSETYPE) LicenseType = enum_type_wrapper.EnumTypeWrapper(_LICENSETYPE) _PROTOCOLVERSION = _descriptor.EnumDescriptor( name='ProtocolVersion', full_name='ProtocolVersion', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='CURRENT', index=0, number=21, options=None, type=None), ], containing_type=None, options=None, serialized_start=8413, serialized_end=8443, ) _sym_db.RegisterEnumDescriptor(_PROTOCOLVERSION) ProtocolVersion = enum_type_wrapper.EnumTypeWrapper(_PROTOCOLVERSION) ZERO = 0 DEFAULT = 1 OFFLINE = 2 CURRENT = 21 _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION = _descriptor.EnumDescriptor( name='HdcpVersion', full_name='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), ], containing_type=None, options=None, serialized_start=617, serialized_end=701, ) _sym_db.RegisterEnumDescriptor(_CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION) _CLIENTIDENTIFICATION_TOKENTYPE = _descriptor.EnumDescriptor( name='TokenType', full_name='ClientIdentification.TokenType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='KEYBOX', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='DEVICE_CERTIFICATE', index=1, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='REMOTE_ATTESTATION_CERTIFICATE', index=2, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=703, serialized_end=786, ) _sym_db.RegisterEnumDescriptor(_CLIENTIDENTIFICATION_TOKENTYPE) _DEVICECERTIFICATE_CERTIFICATETYPE = _descriptor.EnumDescriptor( name='CertificateType', full_name='DeviceCertificate.CertificateType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='ROOT', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='INTERMEDIATE', index=1, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='USER_DEVICE', index=2, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='SERVICE', index=3, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=997, serialized_end=1072, ) _sym_db.RegisterEnumDescriptor(_DEVICECERTIFICATE_CERTIFICATETYPE) _DEVICECERTIFICATESTATUS_CERTIFICATESTATUS = _descriptor.EnumDescriptor( name='CertificateStatus', full_name='DeviceCertificateStatus.CertificateStatus', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='VALID', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='REVOKED', index=1, number=1, options=None, type=None), ], containing_type=None, options=None, serialized_start=1228, serialized_end=1271, ) _sym_db.RegisterEnumDescriptor(_DEVICECERTIFICATESTATUS_CERTIFICATESTATUS) _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS = _descriptor.EnumDescriptor( name='CGMS', full_name='License.KeyContainer.OutputProtection.CGMS', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='COPY_FREE', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='COPY_ONCE', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='COPY_NEVER', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='CGMS_NONE', index=3, number=42, options=None, type=None), ], containing_type=None, options=None, serialized_start=2949, serialized_end=3016, ) _sym_db.RegisterEnumDescriptor(_LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS) _LICENSE_KEYCONTAINER_KEYTYPE = _descriptor.EnumDescriptor( name='KeyType', full_name='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), ], containing_type=None, options=None, serialized_start=3351, serialized_end=3425, ) _sym_db.RegisterEnumDescriptor(_LICENSE_KEYCONTAINER_KEYTYPE) _LICENSE_KEYCONTAINER_SECURITYLEVEL = _descriptor.EnumDescriptor( name='SecurityLevel', full_name='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=3427, serialized_end=3549, ) _sym_db.RegisterEnumDescriptor(_LICENSE_KEYCONTAINER_SECURITYLEVEL) _LICENSEERROR_ERROR = _descriptor.EnumDescriptor( name='Error', full_name='LicenseError.Error', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='INVALID_DEVICE_CERTIFICATE', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='REVOKED_DEVICE_CERTIFICATE', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='SERVICE_UNAVAILABLE', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=3608, serialized_end=3704, ) _sym_db.RegisterEnumDescriptor(_LICENSEERROR_ERROR) _LICENSEREQUEST_REQUESTTYPE = _descriptor.EnumDescriptor( name='RequestType', full_name='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=4599, serialized_end=4647, ) _sym_db.RegisterEnumDescriptor(_LICENSEREQUEST_REQUESTTYPE) _LICENSEREQUESTRAW_REQUESTTYPE = _descriptor.EnumDescriptor( name='RequestType', full_name='LicenseRequestRaw.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=4599, serialized_end=4647, ) _sym_db.RegisterEnumDescriptor(_LICENSEREQUESTRAW_REQUESTTYPE) _PROVISIONEDDEVICEINFO_WVSECURITYLEVEL = _descriptor.EnumDescriptor( name='WvSecurityLevel', full_name='ProvisionedDeviceInfo.WvSecurityLevel', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='LEVEL_UNSPECIFIED', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='LEVEL_1', index=1, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='LEVEL_2', index=2, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='LEVEL_3', index=3, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=5805, serialized_end=5884, ) _sym_db.RegisterEnumDescriptor(_PROVISIONEDDEVICEINFO_WVSECURITYLEVEL) _SIGNEDMESSAGE_MESSAGETYPE = _descriptor.EnumDescriptor( name='MessageType', full_name='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), ], containing_type=None, options=None, serialized_start=6450, serialized_end=6575, ) _sym_db.RegisterEnumDescriptor(_SIGNEDMESSAGE_MESSAGETYPE) _WIDEVINECENCHEADER_ALGORITHM = _descriptor.EnumDescriptor( name='Algorithm', full_name='WidevineCencHeader.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=6863, serialized_end=6903, ) _sym_db.RegisterEnumDescriptor(_WIDEVINECENCHEADER_ALGORITHM) _SIGNEDLICENSEREQUEST_MESSAGETYPE = _descriptor.EnumDescriptor( name='MessageType', full_name='SignedLicenseRequest.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), ], containing_type=None, options=None, serialized_start=6450, serialized_end=6575, ) _sym_db.RegisterEnumDescriptor(_SIGNEDLICENSEREQUEST_MESSAGETYPE) _SIGNEDLICENSEREQUESTRAW_MESSAGETYPE = _descriptor.EnumDescriptor( name='MessageType', full_name='SignedLicenseRequestRaw.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), ], containing_type=None, options=None, serialized_start=6450, serialized_end=6575, ) _sym_db.RegisterEnumDescriptor(_SIGNEDLICENSEREQUESTRAW_MESSAGETYPE) _SIGNEDLICENSE_MESSAGETYPE = _descriptor.EnumDescriptor( name='MessageType', full_name='SignedLicense.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), ], containing_type=None, options=None, serialized_start=6450, serialized_end=6575, ) _sym_db.RegisterEnumDescriptor(_SIGNEDLICENSE_MESSAGETYPE) _SIGNEDSERVICECERTIFICATE_MESSAGETYPE = _descriptor.EnumDescriptor( name='MessageType', full_name='SignedServiceCertificate.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), ], containing_type=None, options=None, serialized_start=6450, serialized_end=6575, ) _sym_db.RegisterEnumDescriptor(_SIGNEDSERVICECERTIFICATE_MESSAGETYPE) _CLIENTIDENTIFICATION_NAMEVALUE = _descriptor.Descriptor( name='NameValue', full_name='ClientIdentification.NameValue', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Name', full_name='ClientIdentification.NameValue.Name', index=0, number=1, type=9, cpp_type=9, label=2, 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='ClientIdentification.NameValue.Value', index=1, number=2, type=9, cpp_type=9, label=2, 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=366, serialized_end=406, ) _CLIENTIDENTIFICATION_CLIENTCAPABILITIES = _descriptor.Descriptor( name='ClientCapabilities', full_name='ClientIdentification.ClientCapabilities', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='ClientToken', full_name='ClientIdentification.ClientCapabilities.ClientToken', 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='SessionToken', full_name='ClientIdentification.ClientCapabilities.SessionToken', 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='VideoResolutionConstraints', full_name='ClientIdentification.ClientCapabilities.VideoResolutionConstraints', 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='MaxHdcpVersion', full_name='ClientIdentification.ClientCapabilities.MaxHdcpVersion', 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), _descriptor.FieldDescriptor( name='OemCryptoApiVersion', full_name='ClientIdentification.ClientCapabilities.OemCryptoApiVersion', 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), ], extensions=[ ], nested_types=[], enum_types=[ _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=409, serialized_end=701, ) _CLIENTIDENTIFICATION = _descriptor.Descriptor( name='ClientIdentification', full_name='ClientIdentification', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Type', full_name='ClientIdentification.Type', index=0, number=1, type=14, cpp_type=8, label=2, 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='Token', full_name='ClientIdentification.Token', 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='ClientInfo', full_name='ClientIdentification.ClientInfo', 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='ProviderClientToken', full_name='ClientIdentification.ProviderClientToken', 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='LicenseCounter', full_name='ClientIdentification.LicenseCounter', 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='_ClientCapabilities', full_name='ClientIdentification._ClientCapabilities', 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='_FileHashes', full_name='ClientIdentification._FileHashes', 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), ], extensions=[ ], nested_types=[_CLIENTIDENTIFICATION_NAMEVALUE, _CLIENTIDENTIFICATION_CLIENTCAPABILITIES, ], enum_types=[ _CLIENTIDENTIFICATION_TOKENTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=43, serialized_end=786, ) _DEVICECERTIFICATE = _descriptor.Descriptor( name='DeviceCertificate', full_name='DeviceCertificate', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Type', full_name='DeviceCertificate.Type', index=0, number=1, type=14, cpp_type=8, label=2, 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='SerialNumber', full_name='DeviceCertificate.SerialNumber', 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='CreationTimeSeconds', full_name='DeviceCertificate.CreationTimeSeconds', 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='PublicKey', full_name='DeviceCertificate.PublicKey', 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='SystemId', full_name='DeviceCertificate.SystemId', 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='TestDeviceDeprecated', full_name='DeviceCertificate.TestDeviceDeprecated', index=5, number=6, 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='ServiceId', full_name='DeviceCertificate.ServiceId', 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), ], extensions=[ ], nested_types=[], enum_types=[ _DEVICECERTIFICATE_CERTIFICATETYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=789, serialized_end=1072, ) _DEVICECERTIFICATESTATUS = _descriptor.Descriptor( name='DeviceCertificateStatus', full_name='DeviceCertificateStatus', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='SerialNumber', full_name='DeviceCertificateStatus.SerialNumber', 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='Status', full_name='DeviceCertificateStatus.Status', index=1, number=2, 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='DeviceInfo', full_name='DeviceCertificateStatus.DeviceInfo', index=2, 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=[], enum_types=[ _DEVICECERTIFICATESTATUS_CERTIFICATESTATUS, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1075, serialized_end=1271, ) _DEVICECERTIFICATESTATUSLIST = _descriptor.Descriptor( name='DeviceCertificateStatusList', full_name='DeviceCertificateStatusList', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='CreationTimeSeconds', full_name='DeviceCertificateStatusList.CreationTimeSeconds', 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='CertificateStatus', full_name='DeviceCertificateStatusList.CertificateStatus', 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=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1273, serialized_end=1384, ) _ENCRYPTEDCLIENTIDENTIFICATION = _descriptor.Descriptor( name='EncryptedClientIdentification', full_name='EncryptedClientIdentification', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='ServiceId', full_name='EncryptedClientIdentification.ServiceId', index=0, number=1, type=9, cpp_type=9, label=2, 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='ServiceCertificateSerialNumber', full_name='EncryptedClientIdentification.ServiceCertificateSerialNumber', 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='EncryptedClientId', full_name='EncryptedClientIdentification.EncryptedClientId', index=2, number=3, type=12, cpp_type=9, label=2, 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='EncryptedClientIdIv', full_name='EncryptedClientIdentification.EncryptedClientIdIv', index=3, number=4, type=12, cpp_type=9, label=2, 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='EncryptedPrivacyKey', full_name='EncryptedClientIdentification.EncryptedPrivacyKey', index=4, number=5, type=12, cpp_type=9, label=2, 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1387, serialized_end=1562, ) _LICENSEIDENTIFICATION = _descriptor.Descriptor( name='LicenseIdentification', full_name='LicenseIdentification', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='RequestId', full_name='LicenseIdentification.RequestId', 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='SessionId', full_name='LicenseIdentification.SessionId', 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='PurchaseId', full_name='LicenseIdentification.PurchaseId', 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='LicenseIdentification.Type', 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), _descriptor.FieldDescriptor( name='Version', full_name='LicenseIdentification.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='ProviderSessionToken', full_name='LicenseIdentification.ProviderSessionToken', 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1565, serialized_end=1721, ) _LICENSE_POLICY = _descriptor.Descriptor( name='Policy', full_name='License.Policy', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='CanPlay', full_name='License.Policy.CanPlay', index=0, number=1, 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='CanPersist', full_name='License.Policy.CanPersist', 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='CanRenew', full_name='License.Policy.CanRenew', index=2, number=3, 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='RentalDurationSeconds', full_name='License.Policy.RentalDurationSeconds', index=3, number=4, 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='PlaybackDurationSeconds', full_name='License.Policy.PlaybackDurationSeconds', 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='LicenseDurationSeconds', full_name='License.Policy.LicenseDurationSeconds', index=5, number=6, 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='RenewalRecoveryDurationSeconds', full_name='License.Policy.RenewalRecoveryDurationSeconds', 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='RenewalServerUrl', full_name='License.Policy.RenewalServerUrl', 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='RenewalDelaySeconds', full_name='License.Policy.RenewalDelaySeconds', index=8, 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='RenewalRetryIntervalSeconds', full_name='License.Policy.RenewalRetryIntervalSeconds', index=9, 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='RenewWithUsage', full_name='License.Policy.RenewWithUsage', index=10, number=11, 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), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1958, serialized_end=2273, ) _LICENSE_KEYCONTAINER_OUTPUTPROTECTION = _descriptor.Descriptor( name='OutputProtection', full_name='License.KeyContainer.OutputProtection', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Hdcp', full_name='License.KeyContainer.OutputProtection.Hdcp', 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='CgmsFlags', full_name='License.KeyContainer.OutputProtection.CgmsFlags', index=1, number=2, 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=[ _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=2797, serialized_end=3016, ) _LICENSE_KEYCONTAINER_KEYCONTROL = _descriptor.Descriptor( name='KeyControl', full_name='License.KeyContainer.KeyControl', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='KeyControlBlock', full_name='License.KeyContainer.KeyControl.KeyControlBlock', index=0, number=1, type=12, cpp_type=9, label=2, 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='License.KeyContainer.KeyControl.Iv', index=1, number=2, type=12, cpp_type=9, label=2, 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3018, serialized_end=3067, ) _LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS = _descriptor.Descriptor( name='OperatorSessionKeyPermissions', full_name='License.KeyContainer.OperatorSessionKeyPermissions', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='AllowEncrypt', full_name='License.KeyContainer.OperatorSessionKeyPermissions.AllowEncrypt', 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='AllowDecrypt', full_name='License.KeyContainer.OperatorSessionKeyPermissions.AllowDecrypt', 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='AllowSign', full_name='License.KeyContainer.OperatorSessionKeyPermissions.AllowSign', 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='AllowSignatureVerify', full_name='License.KeyContainer.OperatorSessionKeyPermissions.AllowSignatureVerify', index=3, number=4, 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), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3069, serialized_end=3193, ) _LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT = _descriptor.Descriptor( name='VideoResolutionConstraint', full_name='License.KeyContainer.VideoResolutionConstraint', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='MinResolutionPixels', full_name='License.KeyContainer.VideoResolutionConstraint.MinResolutionPixels', 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='MaxResolutionPixels', full_name='License.KeyContainer.VideoResolutionConstraint.MaxResolutionPixels', 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='RequiredProtection', full_name='License.KeyContainer.VideoResolutionConstraint.RequiredProtection', 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3196, serialized_end=3349, ) _LICENSE_KEYCONTAINER = _descriptor.Descriptor( name='KeyContainer', full_name='License.KeyContainer', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Id', full_name='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='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='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='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='License.KeyContainer.Level', index=4, number=5, 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='RequiredProtection', full_name='License.KeyContainer.RequiredProtection', 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='RequestedProtection', full_name='License.KeyContainer.RequestedProtection', 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='_KeyControl', full_name='License.KeyContainer._KeyControl', 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='_OperatorSessionKeyPermissions', full_name='License.KeyContainer._OperatorSessionKeyPermissions', 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='VideoResolutionConstraints', full_name='License.KeyContainer.VideoResolutionConstraints', 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), ], extensions=[ ], nested_types=[_LICENSE_KEYCONTAINER_OUTPUTPROTECTION, _LICENSE_KEYCONTAINER_KEYCONTROL, _LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS, _LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT, ], enum_types=[ _LICENSE_KEYCONTAINER_KEYTYPE, _LICENSE_KEYCONTAINER_SECURITYLEVEL, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=2276, serialized_end=3549, ) _LICENSE = _descriptor.Descriptor( name='License', full_name='License', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Id', full_name='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='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='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='LicenseStartTime', full_name='License.LicenseStartTime', index=3, number=4, 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='RemoteAttestationVerified', full_name='License.RemoteAttestationVerified', 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='ProviderClientToken', full_name='License.ProviderClientToken', 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='ProtectionScheme', full_name='License.ProtectionScheme', 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), ], extensions=[ ], nested_types=[_LICENSE_POLICY, _LICENSE_KEYCONTAINER, ], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1724, serialized_end=3549, ) _LICENSEERROR = _descriptor.Descriptor( name='LicenseError', full_name='LicenseError', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='ErrorCode', full_name='LicenseError.ErrorCode', 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), ], extensions=[ ], nested_types=[], enum_types=[ _LICENSEERROR_ERROR, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3552, serialized_end=3704, ) _LICENSEREQUEST_CONTENTIDENTIFICATION_CENC = _descriptor.Descriptor( name='CENC', full_name='LicenseRequest.ContentIdentification.CENC', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Pssh', full_name='LicenseRequest.ContentIdentification.CENC.Pssh', 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='LicenseType', full_name='LicenseRequest.ContentIdentification.CENC.LicenseType', index=1, number=2, 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='RequestId', full_name='LicenseRequest.ContentIdentification.CENC.RequestId', 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=4268, serialized_end=4363, ) _LICENSEREQUEST_CONTENTIDENTIFICATION_WEBM = _descriptor.Descriptor( name='WebM', full_name='LicenseRequest.ContentIdentification.WebM', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Header', full_name='LicenseRequest.ContentIdentification.WebM.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='LicenseType', full_name='LicenseRequest.ContentIdentification.WebM.LicenseType', index=1, number=2, 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='RequestId', full_name='LicenseRequest.ContentIdentification.WebM.RequestId', 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=4365, serialized_end=4441, ) _LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE = _descriptor.Descriptor( name='ExistingLicense', full_name='LicenseRequest.ContentIdentification.ExistingLicense', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='LicenseId', full_name='LicenseRequest.ContentIdentification.ExistingLicense.LicenseId', 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='SecondsSinceStarted', full_name='LicenseRequest.ContentIdentification.ExistingLicense.SecondsSinceStarted', 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='SecondsSinceLastPlayed', full_name='LicenseRequest.ContentIdentification.ExistingLicense.SecondsSinceLastPlayed', 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='SessionUsageTableEntry', full_name='LicenseRequest.ContentIdentification.ExistingLicense.SessionUsageTableEntry', 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=4444, serialized_end=4597, ) _LICENSEREQUEST_CONTENTIDENTIFICATION = _descriptor.Descriptor( name='ContentIdentification', full_name='LicenseRequest.ContentIdentification', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='CencId', full_name='LicenseRequest.ContentIdentification.CencId', 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='WebmId', full_name='LicenseRequest.ContentIdentification.WebmId', 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='License', full_name='LicenseRequest.ContentIdentification.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), ], extensions=[ ], nested_types=[_LICENSEREQUEST_CONTENTIDENTIFICATION_CENC, _LICENSEREQUEST_CONTENTIDENTIFICATION_WEBM, _LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE, ], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=4051, serialized_end=4597, ) _LICENSEREQUEST = _descriptor.Descriptor( name='LicenseRequest', full_name='LicenseRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='ClientId', full_name='LicenseRequest.ClientId', 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='ContentId', full_name='LicenseRequest.ContentId', 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='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='RequestTime', full_name='LicenseRequest.RequestTime', index=3, number=4, 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='KeyControlNonceDeprecated', full_name='LicenseRequest.KeyControlNonceDeprecated', 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='ProtocolVersion', full_name='LicenseRequest.ProtocolVersion', index=5, number=6, type=14, cpp_type=8, label=1, has_default_value=False, default_value=21, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='KeyControlNonce', full_name='LicenseRequest.KeyControlNonce', 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='EncryptedClientId', full_name='LicenseRequest.EncryptedClientId', 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3707, serialized_end=4647, ) _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_CENC = _descriptor.Descriptor( name='CENC', full_name='LicenseRequestRaw.ContentIdentification.CENC', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Pssh', full_name='LicenseRequestRaw.ContentIdentification.CENC.Pssh', 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='LicenseType', full_name='LicenseRequestRaw.ContentIdentification.CENC.LicenseType', index=1, number=2, 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='RequestId', full_name='LicenseRequestRaw.ContentIdentification.CENC.RequestId', 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5229, serialized_end=5303, ) _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_WEBM = _descriptor.Descriptor( name='WebM', full_name='LicenseRequestRaw.ContentIdentification.WebM', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Header', full_name='LicenseRequestRaw.ContentIdentification.WebM.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='LicenseType', full_name='LicenseRequestRaw.ContentIdentification.WebM.LicenseType', index=1, number=2, 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='RequestId', full_name='LicenseRequestRaw.ContentIdentification.WebM.RequestId', 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=4365, serialized_end=4441, ) _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_EXISTINGLICENSE = _descriptor.Descriptor( name='ExistingLicense', full_name='LicenseRequestRaw.ContentIdentification.ExistingLicense', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='LicenseId', full_name='LicenseRequestRaw.ContentIdentification.ExistingLicense.LicenseId', 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='SecondsSinceStarted', full_name='LicenseRequestRaw.ContentIdentification.ExistingLicense.SecondsSinceStarted', 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='SecondsSinceLastPlayed', full_name='LicenseRequestRaw.ContentIdentification.ExistingLicense.SecondsSinceLastPlayed', 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='SessionUsageTableEntry', full_name='LicenseRequestRaw.ContentIdentification.ExistingLicense.SessionUsageTableEntry', 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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=4444, serialized_end=4597, ) _LICENSEREQUESTRAW_CONTENTIDENTIFICATION = _descriptor.Descriptor( name='ContentIdentification', full_name='LicenseRequestRaw.ContentIdentification', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='CencId', full_name='LicenseRequestRaw.ContentIdentification.CencId', 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='WebmId', full_name='LicenseRequestRaw.ContentIdentification.WebmId', 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='License', full_name='LicenseRequestRaw.ContentIdentification.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), ], extensions=[ ], nested_types=[_LICENSEREQUESTRAW_CONTENTIDENTIFICATION_CENC, _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_WEBM, _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_EXISTINGLICENSE, ], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5003, serialized_end=5537, ) _LICENSEREQUESTRAW = _descriptor.Descriptor( name='LicenseRequestRaw', full_name='LicenseRequestRaw', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='ClientId', full_name='LicenseRequestRaw.ClientId', 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='ContentId', full_name='LicenseRequestRaw.ContentId', 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='LicenseRequestRaw.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='RequestTime', full_name='LicenseRequestRaw.RequestTime', index=3, number=4, 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='KeyControlNonceDeprecated', full_name='LicenseRequestRaw.KeyControlNonceDeprecated', 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='ProtocolVersion', full_name='LicenseRequestRaw.ProtocolVersion', index=5, number=6, type=14, cpp_type=8, label=1, has_default_value=False, default_value=21, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='KeyControlNonce', full_name='LicenseRequestRaw.KeyControlNonce', 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='EncryptedClientId', full_name='LicenseRequestRaw.EncryptedClientId', 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=[_LICENSEREQUESTRAW_CONTENTIDENTIFICATION, ], enum_types=[ _LICENSEREQUESTRAW_REQUESTTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=4650, serialized_end=5587, ) _PROVISIONEDDEVICEINFO = _descriptor.Descriptor( name='ProvisionedDeviceInfo', full_name='ProvisionedDeviceInfo', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='SystemId', full_name='ProvisionedDeviceInfo.SystemId', 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='Soc', full_name='ProvisionedDeviceInfo.Soc', 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), _descriptor.FieldDescriptor( name='Manufacturer', full_name='ProvisionedDeviceInfo.Manufacturer', index=2, 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=None), _descriptor.FieldDescriptor( name='Model', full_name='ProvisionedDeviceInfo.Model', index=3, number=4, 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='DeviceType', full_name='ProvisionedDeviceInfo.DeviceType', index=4, 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=None), _descriptor.FieldDescriptor( name='ModelYear', full_name='ProvisionedDeviceInfo.ModelYear', index=5, number=6, 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='SecurityLevel', full_name='ProvisionedDeviceInfo.SecurityLevel', index=6, number=7, 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='TestDevice', full_name='ProvisionedDeviceInfo.TestDevice', index=7, number=8, 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), ], extensions=[ ], nested_types=[], enum_types=[ _PROVISIONEDDEVICEINFO_WVSECURITYLEVEL, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5590, serialized_end=5884, ) _PROVISIONINGOPTIONS = _descriptor.Descriptor( name='ProvisioningOptions', full_name='ProvisioningOptions', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5886, serialized_end=5907, ) _PROVISIONINGREQUEST = _descriptor.Descriptor( name='ProvisioningRequest', full_name='ProvisioningRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5909, serialized_end=5930, ) _PROVISIONINGRESPONSE = _descriptor.Descriptor( name='ProvisioningResponse', full_name='ProvisioningResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5932, serialized_end=5954, ) _REMOTEATTESTATION = _descriptor.Descriptor( name='RemoteAttestation', full_name='RemoteAttestation', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Certificate', full_name='RemoteAttestation.Certificate', 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='Salt', full_name='RemoteAttestation.Salt', 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), _descriptor.FieldDescriptor( name='Signature', full_name='RemoteAttestation.Signature', index=2, 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=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5956, serialized_end=6061, ) _SESSIONINIT = _descriptor.Descriptor( name='SessionInit', full_name='SessionInit', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6063, serialized_end=6076, ) _SESSIONSTATE = _descriptor.Descriptor( name='SessionState', full_name='SessionState', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6078, serialized_end=6092, ) _SIGNEDCERTIFICATESTATUSLIST = _descriptor.Descriptor( name='SignedCertificateStatusList', full_name='SignedCertificateStatusList', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6094, serialized_end=6123, ) _SIGNEDDEVICECERTIFICATE = _descriptor.Descriptor( name='SignedDeviceCertificate', full_name='SignedDeviceCertificate', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='_DeviceCertificate', full_name='SignedDeviceCertificate._DeviceCertificate', 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='Signature', full_name='SignedDeviceCertificate.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='SignedDeviceCertificate.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), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6126, serialized_end=6260, ) _SIGNEDPROVISIONINGMESSAGE = _descriptor.Descriptor( name='SignedProvisioningMessage', full_name='SignedProvisioningMessage', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6262, serialized_end=6289, ) _SIGNEDMESSAGE = _descriptor.Descriptor( name='SignedMessage', full_name='SignedMessage', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Type', full_name='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='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='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='SessionKey', full_name='SignedMessage.SessionKey', 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='RemoteAttestation', full_name='SignedMessage.RemoteAttestation', index=4, number=5, 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=[ _SIGNEDMESSAGE_MESSAGETYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6292, serialized_end=6575, ) _WIDEVINECENCHEADER = _descriptor.Descriptor( name='WidevineCencHeader', full_name='WidevineCencHeader', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='algorithm', full_name='WidevineCencHeader.algorithm', 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='key_id', full_name='WidevineCencHeader.key_id', index=1, 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='provider', full_name='WidevineCencHeader.provider', index=2, 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=None), _descriptor.FieldDescriptor( name='content_id', full_name='WidevineCencHeader.content_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), _descriptor.FieldDescriptor( name='track_type_deprecated', full_name='WidevineCencHeader.track_type_deprecated', index=4, 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=None), _descriptor.FieldDescriptor( name='policy', full_name='WidevineCencHeader.policy', index=5, 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=None), _descriptor.FieldDescriptor( name='crypto_period_index', full_name='WidevineCencHeader.crypto_period_index', 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='grouped_license', full_name='WidevineCencHeader.grouped_license', 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='protection_scheme', full_name='WidevineCencHeader.protection_scheme', index=8, 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='WidevineCencHeader.crypto_period_seconds', index=9, 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), ], extensions=[ ], nested_types=[], enum_types=[ _WIDEVINECENCHEADER_ALGORITHM, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6578, serialized_end=6903, ) _SIGNEDLICENSEREQUEST = _descriptor.Descriptor( name='SignedLicenseRequest', full_name='SignedLicenseRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Type', full_name='SignedLicenseRequest.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='SignedLicenseRequest.Msg', 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='Signature', full_name='SignedLicenseRequest.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='SessionKey', full_name='SignedLicenseRequest.SessionKey', 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='RemoteAttestation', full_name='SignedLicenseRequest.RemoteAttestation', index=4, number=5, 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=[ _SIGNEDLICENSEREQUEST_MESSAGETYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6906, serialized_end=7220, ) _SIGNEDLICENSEREQUESTRAW = _descriptor.Descriptor( name='SignedLicenseRequestRaw', full_name='SignedLicenseRequestRaw', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Type', full_name='SignedLicenseRequestRaw.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='SignedLicenseRequestRaw.Msg', 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='Signature', full_name='SignedLicenseRequestRaw.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='SessionKey', full_name='SignedLicenseRequestRaw.SessionKey', 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='RemoteAttestation', full_name='SignedLicenseRequestRaw.RemoteAttestation', index=4, number=5, 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=[ _SIGNEDLICENSEREQUESTRAW_MESSAGETYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=7223, serialized_end=7546, ) _SIGNEDLICENSE = _descriptor.Descriptor( name='SignedLicense', full_name='SignedLicense', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Type', full_name='SignedLicense.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='SignedLicense.Msg', 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='Signature', full_name='SignedLicense.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='SessionKey', full_name='SignedLicense.SessionKey', 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='RemoteAttestation', full_name='SignedLicense.RemoteAttestation', index=4, number=5, 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=[ _SIGNEDLICENSE_MESSAGETYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=7549, serialized_end=7842, ) _SIGNEDSERVICECERTIFICATE = _descriptor.Descriptor( name='SignedServiceCertificate', full_name='SignedServiceCertificate', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='Type', full_name='SignedServiceCertificate.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='SignedServiceCertificate.Msg', 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='Signature', full_name='SignedServiceCertificate.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='SessionKey', full_name='SignedServiceCertificate.SessionKey', 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='RemoteAttestation', full_name='SignedServiceCertificate.RemoteAttestation', index=4, number=5, 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=[ _SIGNEDSERVICECERTIFICATE_MESSAGETYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=7845, serialized_end=8176, ) _FILEHASHES_SIGNATURE = _descriptor.Descriptor( name='Signature', full_name='FileHashes.Signature', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='filename', full_name='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='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='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='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='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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=8252, serialized_end=8360, ) _FILEHASHES = _descriptor.Descriptor( name='FileHashes', full_name='FileHashes', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='signer', full_name='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='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, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=8179, serialized_end=8360, ) _CLIENTIDENTIFICATION_NAMEVALUE.containing_type = _CLIENTIDENTIFICATION _CLIENTIDENTIFICATION_CLIENTCAPABILITIES.fields_by_name['MaxHdcpVersion'].enum_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION _CLIENTIDENTIFICATION_CLIENTCAPABILITIES.containing_type = _CLIENTIDENTIFICATION _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION.containing_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES _CLIENTIDENTIFICATION.fields_by_name['Type'].enum_type = _CLIENTIDENTIFICATION_TOKENTYPE _CLIENTIDENTIFICATION.fields_by_name['Token'].message_type = _SIGNEDDEVICECERTIFICATE _CLIENTIDENTIFICATION.fields_by_name['ClientInfo'].message_type = _CLIENTIDENTIFICATION_NAMEVALUE _CLIENTIDENTIFICATION.fields_by_name['_ClientCapabilities'].message_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES _CLIENTIDENTIFICATION.fields_by_name['_FileHashes'].message_type = _FILEHASHES _CLIENTIDENTIFICATION_TOKENTYPE.containing_type = _CLIENTIDENTIFICATION _DEVICECERTIFICATE.fields_by_name['Type'].enum_type = _DEVICECERTIFICATE_CERTIFICATETYPE _DEVICECERTIFICATE_CERTIFICATETYPE.containing_type = _DEVICECERTIFICATE _DEVICECERTIFICATESTATUS.fields_by_name['Status'].enum_type = _DEVICECERTIFICATESTATUS_CERTIFICATESTATUS _DEVICECERTIFICATESTATUS.fields_by_name['DeviceInfo'].message_type = _PROVISIONEDDEVICEINFO _DEVICECERTIFICATESTATUS_CERTIFICATESTATUS.containing_type = _DEVICECERTIFICATESTATUS _DEVICECERTIFICATESTATUSLIST.fields_by_name['CertificateStatus'].message_type = _DEVICECERTIFICATESTATUS _LICENSEIDENTIFICATION.fields_by_name['Type'].enum_type = _LICENSETYPE _LICENSE_POLICY.containing_type = _LICENSE _LICENSE_KEYCONTAINER_OUTPUTPROTECTION.fields_by_name['Hdcp'].enum_type = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES_HDCPVERSION _LICENSE_KEYCONTAINER_OUTPUTPROTECTION.fields_by_name['CgmsFlags'].enum_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS _LICENSE_KEYCONTAINER_OUTPUTPROTECTION.containing_type = _LICENSE_KEYCONTAINER _LICENSE_KEYCONTAINER_OUTPUTPROTECTION_CGMS.containing_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION _LICENSE_KEYCONTAINER_KEYCONTROL.containing_type = _LICENSE_KEYCONTAINER _LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS.containing_type = _LICENSE_KEYCONTAINER _LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT.fields_by_name['RequiredProtection'].message_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION _LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT.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['RequiredProtection'].message_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION _LICENSE_KEYCONTAINER.fields_by_name['RequestedProtection'].message_type = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION _LICENSE_KEYCONTAINER.fields_by_name['_KeyControl'].message_type = _LICENSE_KEYCONTAINER_KEYCONTROL _LICENSE_KEYCONTAINER.fields_by_name['_OperatorSessionKeyPermissions'].message_type = _LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS _LICENSE_KEYCONTAINER.fields_by_name['VideoResolutionConstraints'].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 _LICENSEERROR.fields_by_name['ErrorCode'].enum_type = _LICENSEERROR_ERROR _LICENSEERROR_ERROR.containing_type = _LICENSEERROR _LICENSEREQUEST_CONTENTIDENTIFICATION_CENC.fields_by_name['Pssh'].message_type = _WIDEVINECENCHEADER _LICENSEREQUEST_CONTENTIDENTIFICATION_CENC.fields_by_name['LicenseType'].enum_type = _LICENSETYPE _LICENSEREQUEST_CONTENTIDENTIFICATION_CENC.containing_type = _LICENSEREQUEST_CONTENTIDENTIFICATION _LICENSEREQUEST_CONTENTIDENTIFICATION_WEBM.fields_by_name['LicenseType'].enum_type = _LICENSETYPE _LICENSEREQUEST_CONTENTIDENTIFICATION_WEBM.containing_type = _LICENSEREQUEST_CONTENTIDENTIFICATION _LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE.fields_by_name['LicenseId'].message_type = _LICENSEIDENTIFICATION _LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE.containing_type = _LICENSEREQUEST_CONTENTIDENTIFICATION _LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['CencId'].message_type = _LICENSEREQUEST_CONTENTIDENTIFICATION_CENC _LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['WebmId'].message_type = _LICENSEREQUEST_CONTENTIDENTIFICATION_WEBM _LICENSEREQUEST_CONTENTIDENTIFICATION.fields_by_name['License'].message_type = _LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE _LICENSEREQUEST_CONTENTIDENTIFICATION.containing_type = _LICENSEREQUEST _LICENSEREQUEST.fields_by_name['ClientId'].message_type = _CLIENTIDENTIFICATION _LICENSEREQUEST.fields_by_name['ContentId'].message_type = _LICENSEREQUEST_CONTENTIDENTIFICATION _LICENSEREQUEST.fields_by_name['Type'].enum_type = _LICENSEREQUEST_REQUESTTYPE _LICENSEREQUEST.fields_by_name['ProtocolVersion'].enum_type = _PROTOCOLVERSION _LICENSEREQUEST.fields_by_name['EncryptedClientId'].message_type = _ENCRYPTEDCLIENTIDENTIFICATION _LICENSEREQUEST_REQUESTTYPE.containing_type = _LICENSEREQUEST _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_CENC.fields_by_name['LicenseType'].enum_type = _LICENSETYPE _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_CENC.containing_type = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_WEBM.fields_by_name['LicenseType'].enum_type = _LICENSETYPE _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_WEBM.containing_type = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_EXISTINGLICENSE.fields_by_name['LicenseId'].message_type = _LICENSEIDENTIFICATION _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_EXISTINGLICENSE.containing_type = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION _LICENSEREQUESTRAW_CONTENTIDENTIFICATION.fields_by_name['CencId'].message_type = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_CENC _LICENSEREQUESTRAW_CONTENTIDENTIFICATION.fields_by_name['WebmId'].message_type = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_WEBM _LICENSEREQUESTRAW_CONTENTIDENTIFICATION.fields_by_name['License'].message_type = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_EXISTINGLICENSE _LICENSEREQUESTRAW_CONTENTIDENTIFICATION.containing_type = _LICENSEREQUESTRAW _LICENSEREQUESTRAW.fields_by_name['ClientId'].message_type = _CLIENTIDENTIFICATION _LICENSEREQUESTRAW.fields_by_name['ContentId'].message_type = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION _LICENSEREQUESTRAW.fields_by_name['Type'].enum_type = _LICENSEREQUESTRAW_REQUESTTYPE _LICENSEREQUESTRAW.fields_by_name['ProtocolVersion'].enum_type = _PROTOCOLVERSION _LICENSEREQUESTRAW.fields_by_name['EncryptedClientId'].message_type = _ENCRYPTEDCLIENTIDENTIFICATION _LICENSEREQUESTRAW_REQUESTTYPE.containing_type = _LICENSEREQUESTRAW _PROVISIONEDDEVICEINFO.fields_by_name['SecurityLevel'].enum_type = _PROVISIONEDDEVICEINFO_WVSECURITYLEVEL _PROVISIONEDDEVICEINFO_WVSECURITYLEVEL.containing_type = _PROVISIONEDDEVICEINFO _REMOTEATTESTATION.fields_by_name['Certificate'].message_type = _ENCRYPTEDCLIENTIDENTIFICATION _SIGNEDDEVICECERTIFICATE.fields_by_name['_DeviceCertificate'].message_type = _DEVICECERTIFICATE _SIGNEDDEVICECERTIFICATE.fields_by_name['Signer'].message_type = _SIGNEDDEVICECERTIFICATE _SIGNEDMESSAGE.fields_by_name['Type'].enum_type = _SIGNEDMESSAGE_MESSAGETYPE _SIGNEDMESSAGE.fields_by_name['RemoteAttestation'].message_type = _REMOTEATTESTATION _SIGNEDMESSAGE_MESSAGETYPE.containing_type = _SIGNEDMESSAGE _WIDEVINECENCHEADER.fields_by_name['algorithm'].enum_type = _WIDEVINECENCHEADER_ALGORITHM _WIDEVINECENCHEADER_ALGORITHM.containing_type = _WIDEVINECENCHEADER _SIGNEDLICENSEREQUEST.fields_by_name['Type'].enum_type = _SIGNEDLICENSEREQUEST_MESSAGETYPE _SIGNEDLICENSEREQUEST.fields_by_name['Msg'].message_type = _LICENSEREQUEST _SIGNEDLICENSEREQUEST.fields_by_name['RemoteAttestation'].message_type = _REMOTEATTESTATION _SIGNEDLICENSEREQUEST_MESSAGETYPE.containing_type = _SIGNEDLICENSEREQUEST _SIGNEDLICENSEREQUESTRAW.fields_by_name['Type'].enum_type = _SIGNEDLICENSEREQUESTRAW_MESSAGETYPE _SIGNEDLICENSEREQUESTRAW.fields_by_name['Msg'].message_type = _LICENSEREQUESTRAW _SIGNEDLICENSEREQUESTRAW.fields_by_name['RemoteAttestation'].message_type = _REMOTEATTESTATION _SIGNEDLICENSEREQUESTRAW_MESSAGETYPE.containing_type = _SIGNEDLICENSEREQUESTRAW _SIGNEDLICENSE.fields_by_name['Type'].enum_type = _SIGNEDLICENSE_MESSAGETYPE _SIGNEDLICENSE.fields_by_name['Msg'].message_type = _LICENSE _SIGNEDLICENSE.fields_by_name['RemoteAttestation'].message_type = _REMOTEATTESTATION _SIGNEDLICENSE_MESSAGETYPE.containing_type = _SIGNEDLICENSE _SIGNEDSERVICECERTIFICATE.fields_by_name['Type'].enum_type = _SIGNEDSERVICECERTIFICATE_MESSAGETYPE _SIGNEDSERVICECERTIFICATE.fields_by_name['Msg'].message_type = _SIGNEDDEVICECERTIFICATE _SIGNEDSERVICECERTIFICATE.fields_by_name['RemoteAttestation'].message_type = _REMOTEATTESTATION _SIGNEDSERVICECERTIFICATE_MESSAGETYPE.containing_type = _SIGNEDSERVICECERTIFICATE _FILEHASHES_SIGNATURE.containing_type = _FILEHASHES _FILEHASHES.fields_by_name['signatures'].message_type = _FILEHASHES_SIGNATURE DESCRIPTOR.message_types_by_name['ClientIdentification'] = _CLIENTIDENTIFICATION DESCRIPTOR.message_types_by_name['DeviceCertificate'] = _DEVICECERTIFICATE DESCRIPTOR.message_types_by_name['DeviceCertificateStatus'] = _DEVICECERTIFICATESTATUS DESCRIPTOR.message_types_by_name['DeviceCertificateStatusList'] = _DEVICECERTIFICATESTATUSLIST DESCRIPTOR.message_types_by_name['EncryptedClientIdentification'] = _ENCRYPTEDCLIENTIDENTIFICATION DESCRIPTOR.message_types_by_name['LicenseIdentification'] = _LICENSEIDENTIFICATION DESCRIPTOR.message_types_by_name['License'] = _LICENSE DESCRIPTOR.message_types_by_name['LicenseError'] = _LICENSEERROR DESCRIPTOR.message_types_by_name['LicenseRequest'] = _LICENSEREQUEST DESCRIPTOR.message_types_by_name['LicenseRequestRaw'] = _LICENSEREQUESTRAW DESCRIPTOR.message_types_by_name['ProvisionedDeviceInfo'] = _PROVISIONEDDEVICEINFO DESCRIPTOR.message_types_by_name['ProvisioningOptions'] = _PROVISIONINGOPTIONS DESCRIPTOR.message_types_by_name['ProvisioningRequest'] = _PROVISIONINGREQUEST DESCRIPTOR.message_types_by_name['ProvisioningResponse'] = _PROVISIONINGRESPONSE DESCRIPTOR.message_types_by_name['RemoteAttestation'] = _REMOTEATTESTATION DESCRIPTOR.message_types_by_name['SessionInit'] = _SESSIONINIT DESCRIPTOR.message_types_by_name['SessionState'] = _SESSIONSTATE DESCRIPTOR.message_types_by_name['SignedCertificateStatusList'] = _SIGNEDCERTIFICATESTATUSLIST DESCRIPTOR.message_types_by_name['SignedDeviceCertificate'] = _SIGNEDDEVICECERTIFICATE DESCRIPTOR.message_types_by_name['SignedProvisioningMessage'] = _SIGNEDPROVISIONINGMESSAGE DESCRIPTOR.message_types_by_name['SignedMessage'] = _SIGNEDMESSAGE DESCRIPTOR.message_types_by_name['WidevineCencHeader'] = _WIDEVINECENCHEADER DESCRIPTOR.message_types_by_name['SignedLicenseRequest'] = _SIGNEDLICENSEREQUEST DESCRIPTOR.message_types_by_name['SignedLicenseRequestRaw'] = _SIGNEDLICENSEREQUESTRAW DESCRIPTOR.message_types_by_name['SignedLicense'] = _SIGNEDLICENSE DESCRIPTOR.message_types_by_name['SignedServiceCertificate'] = _SIGNEDSERVICECERTIFICATE DESCRIPTOR.message_types_by_name['FileHashes'] = _FILEHASHES DESCRIPTOR.enum_types_by_name['LicenseType'] = _LICENSETYPE DESCRIPTOR.enum_types_by_name['ProtocolVersion'] = _PROTOCOLVERSION ClientIdentification = _reflection.GeneratedProtocolMessageType('ClientIdentification', (_message.Message,), dict( NameValue = _reflection.GeneratedProtocolMessageType('NameValue', (_message.Message,), dict( DESCRIPTOR = _CLIENTIDENTIFICATION_NAMEVALUE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:ClientIdentification.NameValue) )) , ClientCapabilities = _reflection.GeneratedProtocolMessageType('ClientCapabilities', (_message.Message,), dict( DESCRIPTOR = _CLIENTIDENTIFICATION_CLIENTCAPABILITIES, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:ClientIdentification.ClientCapabilities) )) , DESCRIPTOR = _CLIENTIDENTIFICATION, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:ClientIdentification) )) _sym_db.RegisterMessage(ClientIdentification) _sym_db.RegisterMessage(ClientIdentification.NameValue) _sym_db.RegisterMessage(ClientIdentification.ClientCapabilities) DeviceCertificate = _reflection.GeneratedProtocolMessageType('DeviceCertificate', (_message.Message,), dict( DESCRIPTOR = _DEVICECERTIFICATE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:DeviceCertificate) )) _sym_db.RegisterMessage(DeviceCertificate) DeviceCertificateStatus = _reflection.GeneratedProtocolMessageType('DeviceCertificateStatus', (_message.Message,), dict( DESCRIPTOR = _DEVICECERTIFICATESTATUS, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:DeviceCertificateStatus) )) _sym_db.RegisterMessage(DeviceCertificateStatus) DeviceCertificateStatusList = _reflection.GeneratedProtocolMessageType('DeviceCertificateStatusList', (_message.Message,), dict( DESCRIPTOR = _DEVICECERTIFICATESTATUSLIST, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:DeviceCertificateStatusList) )) _sym_db.RegisterMessage(DeviceCertificateStatusList) EncryptedClientIdentification = _reflection.GeneratedProtocolMessageType('EncryptedClientIdentification', (_message.Message,), dict( DESCRIPTOR = _ENCRYPTEDCLIENTIDENTIFICATION, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:EncryptedClientIdentification) )) _sym_db.RegisterMessage(EncryptedClientIdentification) LicenseIdentification = _reflection.GeneratedProtocolMessageType('LicenseIdentification', (_message.Message,), dict( DESCRIPTOR = _LICENSEIDENTIFICATION, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseIdentification) )) _sym_db.RegisterMessage(LicenseIdentification) License = _reflection.GeneratedProtocolMessageType('License', (_message.Message,), dict( Policy = _reflection.GeneratedProtocolMessageType('Policy', (_message.Message,), dict( DESCRIPTOR = _LICENSE_POLICY, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:License.Policy) )) , KeyContainer = _reflection.GeneratedProtocolMessageType('KeyContainer', (_message.Message,), dict( OutputProtection = _reflection.GeneratedProtocolMessageType('OutputProtection', (_message.Message,), dict( DESCRIPTOR = _LICENSE_KEYCONTAINER_OUTPUTPROTECTION, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:License.KeyContainer.OutputProtection) )) , KeyControl = _reflection.GeneratedProtocolMessageType('KeyControl', (_message.Message,), dict( DESCRIPTOR = _LICENSE_KEYCONTAINER_KEYCONTROL, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:License.KeyContainer.KeyControl) )) , OperatorSessionKeyPermissions = _reflection.GeneratedProtocolMessageType('OperatorSessionKeyPermissions', (_message.Message,), dict( DESCRIPTOR = _LICENSE_KEYCONTAINER_OPERATORSESSIONKEYPERMISSIONS, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:License.KeyContainer.OperatorSessionKeyPermissions) )) , VideoResolutionConstraint = _reflection.GeneratedProtocolMessageType('VideoResolutionConstraint', (_message.Message,), dict( DESCRIPTOR = _LICENSE_KEYCONTAINER_VIDEORESOLUTIONCONSTRAINT, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:License.KeyContainer.VideoResolutionConstraint) )) , DESCRIPTOR = _LICENSE_KEYCONTAINER, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:License.KeyContainer) )) , DESCRIPTOR = _LICENSE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:License) )) _sym_db.RegisterMessage(License) _sym_db.RegisterMessage(License.Policy) _sym_db.RegisterMessage(License.KeyContainer) _sym_db.RegisterMessage(License.KeyContainer.OutputProtection) _sym_db.RegisterMessage(License.KeyContainer.KeyControl) _sym_db.RegisterMessage(License.KeyContainer.OperatorSessionKeyPermissions) _sym_db.RegisterMessage(License.KeyContainer.VideoResolutionConstraint) LicenseError = _reflection.GeneratedProtocolMessageType('LicenseError', (_message.Message,), dict( DESCRIPTOR = _LICENSEERROR, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseError) )) _sym_db.RegisterMessage(LicenseError) LicenseRequest = _reflection.GeneratedProtocolMessageType('LicenseRequest', (_message.Message,), dict( ContentIdentification = _reflection.GeneratedProtocolMessageType('ContentIdentification', (_message.Message,), dict( CENC = _reflection.GeneratedProtocolMessageType('CENC', (_message.Message,), dict( DESCRIPTOR = _LICENSEREQUEST_CONTENTIDENTIFICATION_CENC, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequest.ContentIdentification.CENC) )) , WebM = _reflection.GeneratedProtocolMessageType('WebM', (_message.Message,), dict( DESCRIPTOR = _LICENSEREQUEST_CONTENTIDENTIFICATION_WEBM, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequest.ContentIdentification.WebM) )) , ExistingLicense = _reflection.GeneratedProtocolMessageType('ExistingLicense', (_message.Message,), dict( DESCRIPTOR = _LICENSEREQUEST_CONTENTIDENTIFICATION_EXISTINGLICENSE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequest.ContentIdentification.ExistingLicense) )) , DESCRIPTOR = _LICENSEREQUEST_CONTENTIDENTIFICATION, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequest.ContentIdentification) )) , DESCRIPTOR = _LICENSEREQUEST, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequest) )) _sym_db.RegisterMessage(LicenseRequest) _sym_db.RegisterMessage(LicenseRequest.ContentIdentification) _sym_db.RegisterMessage(LicenseRequest.ContentIdentification.CENC) _sym_db.RegisterMessage(LicenseRequest.ContentIdentification.WebM) _sym_db.RegisterMessage(LicenseRequest.ContentIdentification.ExistingLicense) LicenseRequestRaw = _reflection.GeneratedProtocolMessageType('LicenseRequestRaw', (_message.Message,), dict( ContentIdentification = _reflection.GeneratedProtocolMessageType('ContentIdentification', (_message.Message,), dict( CENC = _reflection.GeneratedProtocolMessageType('CENC', (_message.Message,), dict( DESCRIPTOR = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_CENC, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequestRaw.ContentIdentification.CENC) )) , WebM = _reflection.GeneratedProtocolMessageType('WebM', (_message.Message,), dict( DESCRIPTOR = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_WEBM, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequestRaw.ContentIdentification.WebM) )) , ExistingLicense = _reflection.GeneratedProtocolMessageType('ExistingLicense', (_message.Message,), dict( DESCRIPTOR = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION_EXISTINGLICENSE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequestRaw.ContentIdentification.ExistingLicense) )) , DESCRIPTOR = _LICENSEREQUESTRAW_CONTENTIDENTIFICATION, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequestRaw.ContentIdentification) )) , DESCRIPTOR = _LICENSEREQUESTRAW, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:LicenseRequestRaw) )) _sym_db.RegisterMessage(LicenseRequestRaw) _sym_db.RegisterMessage(LicenseRequestRaw.ContentIdentification) _sym_db.RegisterMessage(LicenseRequestRaw.ContentIdentification.CENC) _sym_db.RegisterMessage(LicenseRequestRaw.ContentIdentification.WebM) _sym_db.RegisterMessage(LicenseRequestRaw.ContentIdentification.ExistingLicense) ProvisionedDeviceInfo = _reflection.GeneratedProtocolMessageType('ProvisionedDeviceInfo', (_message.Message,), dict( DESCRIPTOR = _PROVISIONEDDEVICEINFO, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:ProvisionedDeviceInfo) )) _sym_db.RegisterMessage(ProvisionedDeviceInfo) ProvisioningOptions = _reflection.GeneratedProtocolMessageType('ProvisioningOptions', (_message.Message,), dict( DESCRIPTOR = _PROVISIONINGOPTIONS, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:ProvisioningOptions) )) _sym_db.RegisterMessage(ProvisioningOptions) ProvisioningRequest = _reflection.GeneratedProtocolMessageType('ProvisioningRequest', (_message.Message,), dict( DESCRIPTOR = _PROVISIONINGREQUEST, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:ProvisioningRequest) )) _sym_db.RegisterMessage(ProvisioningRequest) ProvisioningResponse = _reflection.GeneratedProtocolMessageType('ProvisioningResponse', (_message.Message,), dict( DESCRIPTOR = _PROVISIONINGRESPONSE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:ProvisioningResponse) )) _sym_db.RegisterMessage(ProvisioningResponse) RemoteAttestation = _reflection.GeneratedProtocolMessageType('RemoteAttestation', (_message.Message,), dict( DESCRIPTOR = _REMOTEATTESTATION, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:RemoteAttestation) )) _sym_db.RegisterMessage(RemoteAttestation) SessionInit = _reflection.GeneratedProtocolMessageType('SessionInit', (_message.Message,), dict( DESCRIPTOR = _SESSIONINIT, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SessionInit) )) _sym_db.RegisterMessage(SessionInit) SessionState = _reflection.GeneratedProtocolMessageType('SessionState', (_message.Message,), dict( DESCRIPTOR = _SESSIONSTATE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SessionState) )) _sym_db.RegisterMessage(SessionState) SignedCertificateStatusList = _reflection.GeneratedProtocolMessageType('SignedCertificateStatusList', (_message.Message,), dict( DESCRIPTOR = _SIGNEDCERTIFICATESTATUSLIST, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SignedCertificateStatusList) )) _sym_db.RegisterMessage(SignedCertificateStatusList) SignedDeviceCertificate = _reflection.GeneratedProtocolMessageType('SignedDeviceCertificate', (_message.Message,), dict( DESCRIPTOR = _SIGNEDDEVICECERTIFICATE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SignedDeviceCertificate) )) _sym_db.RegisterMessage(SignedDeviceCertificate) SignedProvisioningMessage = _reflection.GeneratedProtocolMessageType('SignedProvisioningMessage', (_message.Message,), dict( DESCRIPTOR = _SIGNEDPROVISIONINGMESSAGE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SignedProvisioningMessage) )) _sym_db.RegisterMessage(SignedProvisioningMessage) SignedMessage = _reflection.GeneratedProtocolMessageType('SignedMessage', (_message.Message,), dict( DESCRIPTOR = _SIGNEDMESSAGE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SignedMessage) )) _sym_db.RegisterMessage(SignedMessage) WidevineCencHeader = _reflection.GeneratedProtocolMessageType('WidevineCencHeader', (_message.Message,), dict( DESCRIPTOR = _WIDEVINECENCHEADER, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:WidevineCencHeader) )) _sym_db.RegisterMessage(WidevineCencHeader) SignedLicenseRequest = _reflection.GeneratedProtocolMessageType('SignedLicenseRequest', (_message.Message,), dict( DESCRIPTOR = _SIGNEDLICENSEREQUEST, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SignedLicenseRequest) )) _sym_db.RegisterMessage(SignedLicenseRequest) SignedLicenseRequestRaw = _reflection.GeneratedProtocolMessageType('SignedLicenseRequestRaw', (_message.Message,), dict( DESCRIPTOR = _SIGNEDLICENSEREQUESTRAW, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SignedLicenseRequestRaw) )) _sym_db.RegisterMessage(SignedLicenseRequestRaw) SignedLicense = _reflection.GeneratedProtocolMessageType('SignedLicense', (_message.Message,), dict( DESCRIPTOR = _SIGNEDLICENSE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SignedLicense) )) _sym_db.RegisterMessage(SignedLicense) SignedServiceCertificate = _reflection.GeneratedProtocolMessageType('SignedServiceCertificate', (_message.Message,), dict( DESCRIPTOR = _SIGNEDSERVICECERTIFICATE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:SignedServiceCertificate) )) _sym_db.RegisterMessage(SignedServiceCertificate) FileHashes = _reflection.GeneratedProtocolMessageType('FileHashes', (_message.Message,), dict( Signature = _reflection.GeneratedProtocolMessageType('Signature', (_message.Message,), dict( DESCRIPTOR = _FILEHASHES_SIGNATURE, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:FileHashes.Signature) )) , DESCRIPTOR = _FILEHASHES, __module__ = 'pywidevine.cdm.formats.wv_proto2_pb2' # @@protoc_insertion_point(class_scope:FileHashes) )) _sym_db.RegisterMessage(FileHashes) _sym_db.RegisterMessage(FileHashes.Signature) # @@protoc_insertion_point(module_scope) ================================================ FILE: README.md ================================================ # Dumper Dumper is a Frida script to dump L3 CDMs from any Android device. ## ** IMPORTANT ** The function parameters can differ between CDM versions. The default is [4] but you may have to change this for your specific version in the [script.js](./Helpers/script.js). ## Prerequisites - Rooted Android device - [Installed Frida server on the Android device]((https://frida.re/docs/android/)) - Installed [platform-tools ADB/Fastboot](https://developer.android.com/studio/releases/platform-tools) on the PC - Installed [Python 3](https://www.python.org/downloads/) on the PC - `CDM_VERSION` retrieved from the [DRM Info app](https://play.google.com/store/apps/details?id=com.androidfung.drminfo). ## Requirements: Use pip to install the dependencies: `pip3 install -r requirements.txt` ## Usage: * Enable USB debugging on the Android device and connect it to the PC * [Start frida-server on the Android device](https://frida.re/docs/android/) * Execute dump_keys.py on the PC * Start streaming some DRM-protected content on the Android device e.g. [Bitmovin](https://bitmovin.com/demos/drm) The script will hook every function in your widevine 'libwvhidl.so'/'libwvaidl.so' modules by default, effectively brute forcing the private key function name. ``` python3 dump_keys.py ``` You can pass the function name to hook using the `--function-name` argument. You can use [this post](https://forum.videohelp.com/threads/404219-How-To-Dump-L3-CDM-From-Android-Device-s-(ONLY-Talk-About-Dumping-L3-CDMS)/page6#post2646150) to retrive it by yourself. ``` python3 dump_keys.py --function-name 'polorucp' ``` The script defaults to `args[4]` if no `--cdm-version` is provided. This will only have an effect if your version is `16.1.0` or `17.0.0`. ``` python3 dump_keys.py --cdm-version '16.1.0' ``` You can pass the `.so` -module name using the `--module-name` argument. By default it looks in the `libwvhidl.so` and `libwvaidl.so` files. It can have multiple values. Its name can change depending on the version and SoC including but not limited to: `libwvaidl.so`, `libwvhidl.so`, `libwvdrmengine.so`, `libwvm.so`, `libdrmwvmplugin.so` [source](https://arxiv.org/abs/2204.09298). You can find your module name in the /vendor/lib64/ or /vendor/lib/ directories using an ADB shell. ``` python3 dump_keys.py --module-name 'libwvhidl.so' --module-name 'libwvaidl.so' ``` ## Options: ``` -h, --help Print this help text and exit. --cdm-version The CDM version of the device e.g. '16.1.0'. --function-name The name of the function to hook to retrieve the private key. --module-name The name of the widevine `.so` modules. ``` ## Scenario: 1. You've got the function name 2. You've got the private key 3. Client ID extracted 4. Script closed The following files will be created after a successful dump: - `client_id.bin` - Device identification - `private_key.pem` - RSA private key ## Known Working Versions: * Android 9 * CDM 14.0.0 * Android 10 * CDM 15.0.0 * Android 11 * CDM 16.0.0 * Android 12 * CDM 16.1.0 * Android 13 * CDM 17.0.0 ## Temporary disabling L1 to use L3 instead A few phone brands let us use the L1 keybox even after unlocking the bootloader (like Xiaomi). In this case, installation of a Magisk module called [liboemcrypto-disabler](https://github.com/umylive/liboemcrypto-disabler) is necessary. ## Credits Thanks to the original author of the code. ================================================ FILE: dump_keys.py ================================================ #!/usr/bin/env python3 import argparse import time import logging from Helpers.Device import Device logging.basicConfig( format='%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %I:%M:%S %p', level=logging.DEBUG, ) def main(): parser = argparse.ArgumentParser(description='Android Widevine L3 dumper.') parser.add_argument('--cdm-version', help='The CDM version of the device e.g. \'14.0.0\'', default='14.0.0') parser.add_argument('--function-name', help='The name of the function to hook to retrieve the private key.', default='') parser.add_argument('--module-name', nargs='+', type=str, help='The names of the widevine `.so` modules', default=["libwvaidl.so", "libwvhidl.so"] ) args = parser.parse_args() dynamic_function_name = args.function_name cdm_version = args.cdm_version module_names = args.module_name logger = logging.getLogger("main") device = Device(dynamic_function_name, cdm_version, module_names) logger.info('Connected to %s', device.name) logger.info('Scanning all processes') for process in device.usb_device.enumerate_processes(): if 'drm' in process.name: for library in device.find_widevine_process(process.name): device.hook_to_process(process.name, library) logger.info('Functions hooked, now open the DRM stream test on Bitmovin from your Android device! https://bitmovin.com/demos/drm') if __name__ == '__main__': main() while True: time.sleep(1000) ================================================ FILE: requirements.txt ================================================ frida protobuf == 3.19.3 pycryptodome