Changes include: 1. Fix refreshkeys when handling renewal response. 2. Change ECM start detect method. 3. Fix signing key truncation. 4. Reformat C++ code. 5. Return license_id in LICENSE_CAS_READY payload. 6. Expose OEMCrypto API version in the license request. 7. Add support for newly added widevine cas ids. 8. Store content iv and encryption mode info to entitled key. 9. Upgrade ODK library to 16.4.
116 lines
3.0 KiB
Protocol Buffer
116 lines
3.0 KiB
Protocol Buffer
// ----------------------------------------------------------------------------
|
|
// device_files.proto
|
|
// ----------------------------------------------------------------------------
|
|
// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine Master
|
|
// License Agreement.
|
|
//
|
|
// Description:
|
|
// Format of various files stored at the device.
|
|
//
|
|
syntax = "proto2";
|
|
|
|
package video_widevine_client.sdk;
|
|
|
|
// need this if we are using libprotobuf-cpp-2.3.0-lite
|
|
option optimize_for = LITE_RUNTIME;
|
|
|
|
message NameValue {
|
|
optional string name = 1;
|
|
optional string value = 2;
|
|
}
|
|
|
|
message DeviceCertificate {
|
|
optional bytes certificate = 1;
|
|
optional bytes wrapped_private_key = 2;
|
|
}
|
|
|
|
message License {
|
|
enum LicenseState {
|
|
ACTIVE = 1;
|
|
RELEASING = 2;
|
|
}
|
|
|
|
optional LicenseState state = 1;
|
|
optional bytes pssh_data = 2;
|
|
optional bytes license_request = 3;
|
|
optional bytes license = 4;
|
|
optional bytes renewal_request = 5;
|
|
optional bytes renewal = 6;
|
|
optional bytes release_server_url = 7;
|
|
optional int64 playback_start_time = 8 [default = 0];
|
|
optional int64 last_playback_time = 9 [default = 0];
|
|
repeated NameValue app_parameters = 10;
|
|
// This will be 0/missing if the grace period has not expired; otherwise it
|
|
// contains the playback_start_time we should use as an override. This is
|
|
// ignored if there is no grace period.
|
|
optional int64 grace_period_end_time = 11 [default = 0];
|
|
optional bytes usage_entry = 12;
|
|
optional int64 usage_entry_number = 13;
|
|
}
|
|
|
|
message UsageInfo {
|
|
message ProviderSession {
|
|
optional bytes token = 1;
|
|
optional bytes license_request = 2;
|
|
optional bytes license = 3;
|
|
optional bytes key_set_id = 4;
|
|
optional bytes usage_entry = 5;
|
|
optional int64 usage_entry_number = 6;
|
|
}
|
|
|
|
repeated ProviderSession sessions = 1;
|
|
}
|
|
|
|
message HlsAttributes {
|
|
enum Method {
|
|
AES_128 = 1;
|
|
SAMPLE_AES = 2;
|
|
}
|
|
optional Method method = 1;
|
|
optional bytes media_segment_iv = 2;
|
|
}
|
|
|
|
message UsageTableInfo {
|
|
message UsageEntryInfo {
|
|
enum UsageEntryStorage {
|
|
LICENSE = 1;
|
|
USAGE_INFO = 2;
|
|
UNKNOWN = 3;
|
|
}
|
|
|
|
optional UsageEntryStorage storage = 1;
|
|
optional bytes key_set_id = 2;
|
|
optional bytes usage_info_file_name = 3; // hash of the app_id
|
|
}
|
|
|
|
optional bytes usage_table_header = 1;
|
|
repeated UsageEntryInfo usage_entry_info = 2;
|
|
}
|
|
|
|
message File {
|
|
enum FileType {
|
|
DEVICE_CERTIFICATE = 1;
|
|
LICENSE = 2;
|
|
USAGE_INFO = 3;
|
|
HLS_ATTRIBUTES = 4;
|
|
USAGE_TABLE_INFO = 5;
|
|
}
|
|
|
|
enum FileVersion { VERSION_1 = 1; }
|
|
|
|
optional FileType type = 1;
|
|
optional FileVersion version = 2 [default = VERSION_1];
|
|
optional DeviceCertificate device_certificate = 3;
|
|
optional License license = 4;
|
|
optional UsageInfo usage_info = 5;
|
|
optional HlsAttributes hls_attributes = 6;
|
|
optional UsageTableInfo usage_table_info = 7;
|
|
}
|
|
|
|
message HashedFile {
|
|
optional bytes file = 1;
|
|
// A raw (not hex-encoded) SHA256, taken over the bytes of 'file'.
|
|
optional bytes hash = 2;
|
|
}
|