Get desktop application:
View/edit binary Protocol Buffers messages
from x86 (partial), most of it from the ARM version:
Used in:
,optional bytes Token = 2; // by default the client treats this as blob, but it's usually a DeviceCertificate, so for usefulness sake, I'm replacing it with this one:
use this when parsing, "bytes" when building a client id blob
how should we deal with duped names? will have to look at proto docs later
vmp blob goes here
Used in:
Used in:
Used in:
,Used in:
Used in:
Used in:
by default the client treats this as blob, but it's usually a DeviceCertificate, so for usefulness sake, I'm replacing it with this one:
optional SignedDeviceCertificate Token = 2; // use this when parsing, "bytes" when building a client id blob
how should we deal with duped names? will have to look at proto docs later
vmp blob goes here
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
the compiled code reused this as ProvisionedDeviceInfo.WvSecurityLevel, however that is incorrect (compiler aliased it as they're both identical as a structure)
is it bool or int?
service URL for service certificates
Used in:
missing some references,
Used in:
where is 3? is it deprecated?
Used in:
Used in:
, , ,vmp support
Used in:
,Used in:
0 - release, 1 - testing
0 for dlls, 1 for exe, this is field 3 in file
Used in:
duped names, etc
bool?
there might be more, check with newer versions (I see field 7-8 in a lic) this appeared in latest x86:
type unconfirmed fully, but it's likely as WidevineCencHeader describesit (fourcc)
Used in:
duped names, etc
duped names, etc
Used in:
what is this?
Used in:
Used in:
Used in:
,it's most likely a copy of Hdcp version available here, but compiler optimized it away
Used in:
PC default!
Used in:
Used in:
Used in:
changed from uint32 to bool
was uint32
LicenseRequest.RequestType ErrorCode; // clang mismatch
Used in:
Used in:
, ,Used in:
lacking symbols for this
Used in:
Used in:
optional bytes Pssh = 1; // the client's definition is opaque, it doesn't care about the contents, but the PSSH has a clear definition that is understood and requested by the server, thus I'll replace it with:
unfortunately the LicenseType symbols are not present, acceptable value seems to only be 1 (is this persist/don't persist? look into it!)
Used in:
interesting! try to figure out the connection between the usage table blob and KCB!
Used in:
identical to CENC, aside from PSSH and the parent field number used
Used in:
raw pssh hack
Used in:
lacking symbols for this
Used in:
Used in:
the client's definition is opaque, it doesn't care about the contents, but the PSSH has a clear definition that is understood and requested by the server, thus I'll replace it with:
optional WidevineCencHeader Pssh = 1;
unfortunately the LicenseType symbols are not present, acceptable value seems to only be 1 (is this persist/don't persist? look into it!)
Used in:
interesting! try to figure out the connection between the usage table blob and KCB!
Used in:
identical to CENC, aside from PSSH and the parent field number used
Used in:
todo: fill (for this top-level type, it might be impossible/difficult)
Used in:
, , , ,1 is STREAMING/temporary license; on recent versions may go up to 3 (latest x86); it might be persist/don't persist type, unconfirmed
todo: fill (for this top-level type, it might be impossible/difficult) this is just a guess because these globals got lost, but really, do we need more?
Used in:
, ,Used in:
bool?
Used in:
Used in:
Used in:
todo: fill
Used in:
, , , ,todo: fill
(message has no fields)
todo: fill
(message has no fields)
todo: fill
(message has no fields)
Used in:
,optional bytes DeviceCertificate = 1; // again, they use a buffer where it's supposed to be a message, so we'll replace it with what it really is:
how should we deal with duped names? will have to look at proto docs later
has in incorrect overlap with License_KeyContainer_SecurityLevel
this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
often RSA wrapped for licenses
Used in:
remove these when using it outside of protoc: from here on, it's just for testing, these messages don't exist in the binaries, I'm adding them to avoid detecting type programmatically
has in incorrect overlap with License_KeyContainer_SecurityLevel
this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
often RSA wrapped for licenses
Used in:
hack
has in incorrect overlap with License_KeyContainer_SecurityLevel
this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
often RSA wrapped for licenses
Used in:
the root of all messages, from either server or client
has in incorrect overlap with License_KeyContainer_SecurityLevel
this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
often RSA wrapped for licenses
Used in:
todo: may be outdated
has in incorrect overlap with License_KeyContainer_SecurityLevel
this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
often RSA wrapped for licenses
Used in:
This message is copied from google's docs, not reversed:
Used in:
Content provider name.
A content identifier, specified by content provider.
Track type. Acceptable values are SD, HD and AUDIO. Used to differentiate content keys used by an asset.
The name of a registered policy to be used for this asset.
Crypto period index, for media using key rotation.
Optional protected context for group content. The grouped_license is a serialized SignedMessage.
Protection scheme identifying the encryption algorithm. Represented as one of the following 4CC values: 'cenc' (AESCTR), 'cbc1' (AESCBC), 'cens' (AESCTR subsample), 'cbcs' (AESCBC subsample).
Optional. For media using key rotation, this represents the duration of each crypto period in seconds.
Used in: