Adds support for specifying service type when creating a service certificate.
A recent change to the SDK allows for service certificates (DrmCertificate) to also specify a ServiceType indicating which type of service they are supposed to be used on. This CL adds certificate creation service support for this.
-------------
Fix typo in cas proxy SDK.
-------------
Migrate C++ proto_library rules to cc_proto_library.
We update dependency edges of cc_* rules on proto_library() rules to use a cc_proto_library() intermediary in preparation for eliminating proto_library()'s cc support as per []
More information: []
Tested:
TAP --sample for global presubmit queue
[]
-------------
Migrate cc proto_library to cc_proto_library. Also fixes build break introduced by []
-------------
Remove unnecessary #MOE directives
-------------
[Proxy_SDK] Move generateSignature in WvPLSDKEnvironment to signature_util.cc file.
-------------
[SDK]Add service_certificate type check in WVPL LSDK and PROXY SDK.
-------------
[Proxy_SDK] Add new API to get remote_attestation_cert_serial_number for proxy SDK.
-------------
[Proxy_SDK] Add getDrmDeviceId function
-------------
[Proxy_SDK] add getrequesttype function for proxy sdk
-------------
[SDK] Add videoFeature field to WvPLWidevinePsshData in WvPLWidevine.java and wvpl_type.h. Related to []
-------------
Allow specified devices to request licenses even if these devices are in TEST_ONLY state.
This will also override the global setting of TEST_ONLY devices not being allowed to
successfully receive licenses from Widevine License SDK.
-------------
[Proxy_SDK] Add ParseDCSL function and test case.
-------------
[Proxy_SDK] Return non-ok status for service_certificate_request when create proxy sdk session. Add test case in Java test.
-------------
[Proxy_SDK] Add video_feature parsing in GetPsshData function. Also check video_feature when geneateModularDrmLicenseRequest.
-------------
[SDK]Deprecated message_type() function, use request_type() instead.
-------------
Use JDK instead of JRE
The concept of a JRE is going away in JDK 11. The jre/ subdirectory in the JDK will no longer exist and the :jre targets will no longer make sense.
Currently in JDK 8, the JDK is a superset of the JRE (it contains all of the files in the JRE), so this is a safe change.
Tested:
TAP found no affected targets
[]
-------------
Renaming WvPLSDKSession.request_type() API.
Added LICENSE_TYPE_UNSPECIFIED enumeration to WvPLLicenseType.
-------------
Additional VLOG messaging for licensing with TEST_ONLY devices.
-------------
Remove forward declarations of absl names. The style guide bans this, and those names are not for external users to redeclare. External users should include the public headers instead.
-------------
Change Kokoro to use latest bazel version
-------------
Update the abseil build to the December 18 release.
This fixes a problem where the MOE build is failing because there was no definition for node_hash_map.
-------------
[CAS_Proxy]Add WvPLCASProxyEnvironmentJNI.cc and com_google_video_widevine_sdk_wvpl_WvPLCASProxyEnvironment.h file to implement JNI layer for WvPLCASProxyEnvironment.
-------------
Apply changes to sdk to match device certificate status list updates.
Cleans up some of the protos we're using for the new SignedDeviceInfo. Also, adjusts the sdk implementation to reflect the proto and service changes.
-------------
[CAS_PROXY]Add WvPLCASProxyEnvironment.java, WvPLCASProxySession.java and WvPLCASProxyTest.java file.
-------------
Add API to return the DRM service certificate by provider.
-------------
[CAS_PROXY]Implement SetDrmServiceCertificate and SetDeviceCertificateStatusList JNI layer.
-------------
Get DeviceInfo from request.
-------------
CAS Proxy SDK updated to 1.1.5.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=248640225
122 lines
4.8 KiB
Protocol Buffer
122 lines
4.8 KiB
Protocol Buffer
////////////////////////////////////////////////////////////////////////////////
|
||
// Copyright 2016 Google LLC.
|
||
//
|
||
// This software is licensed under the terms defined in the Widevine Master
|
||
// License Agreement. For a copy of this agreement, please contact
|
||
// widevine-licensing@google.com.
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
//
|
||
// Description:
|
||
// Definitions of the protocol buffer messages used in the Widevine License
|
||
// Server SDK.
|
||
|
||
syntax = "proto2";
|
||
|
||
package widevine;
|
||
|
||
import "protos/public/license_protocol.proto";
|
||
import "protos/public/widevine_pssh.proto";
|
||
|
||
option java_package = "com.google.video.widevine.protos";
|
||
|
||
// This message is used to pass optional data on initial license issuance.
|
||
// LINT.IfChange
|
||
message SessionInit {
|
||
optional bytes session_id = 1;
|
||
optional bytes purchase_id = 2;
|
||
// master_signing_key should be 128 bits in length.
|
||
optional bytes master_signing_key = 3;
|
||
// signing_key should be 512 bits in length to be split into two
|
||
// (server || client) HMAC-SHA256 keys.
|
||
optional bytes signing_key = 4;
|
||
optional int64 license_start_time = 5;
|
||
// Client token for the session. This session is for use by the license
|
||
// provider, and is akin to a client cookie. It will be copied to
|
||
// License::provider_client_token, and sent back by the client in
|
||
// ClientIdentification::provider_client_token in all license requests
|
||
// thereafter.
|
||
optional bytes provider_client_token = 6;
|
||
// Session token for the session. This token is for use by the license
|
||
// provider, and is akin to a session cookie. It will be copied to
|
||
// LicenseIdentfication::provider_session_token, and sent back in all
|
||
// license renewal and release requests for the session thereafter.
|
||
optional bytes provider_session_token = 7;
|
||
// If false and the request contains a provider_client_token, use the token
|
||
// from the request even if SessionInit.provider_client_token is specified.
|
||
// If true and the request contains a provider_client_token, use
|
||
// SessionInit.provider_client_token.
|
||
optional bool override_provider_client_token = 8 [default = false];
|
||
// Set true if group key(s) should not be included in the license. If true,
|
||
// the result license will contain keys for the current content only,
|
||
// therefore the license cannot be used to playback other content in the same
|
||
// group.
|
||
optional bool exclude_group_key = 9 [default = false];
|
||
// If set to true, the OEM Crypto API version will be not be reflected in the
|
||
// license response.
|
||
optional bool disable_oem_crypto_api_version_reflection = 10
|
||
[default = false];
|
||
// For testing use only. Service Providers can test how devices are handling
|
||
// the version reflection in KCB (key control block) by specifying the api
|
||
// version that is reflected back in the KCB. If an override is specified,
|
||
// the override value will be used in the KCB instead of the api version
|
||
// specified by the client in client_capabilities.
|
||
// Crypto API version is represented as 4 bytes, for example 'kcxx', where xx
|
||
// is the API version. Some valid values are: 'kc09', kc10', kc14'. Only the
|
||
// first 4 bytes are used and additional bytes are ignored.
|
||
optional bytes override_oem_crypto_api_version = 11;
|
||
}
|
||
|
||
// This message is used by the server to preserve and restore session state.
|
||
message SessionState {
|
||
optional LicenseIdentification license_id = 1;
|
||
optional bytes signing_key = 2;
|
||
optional uint32 keybox_system_id = 3;
|
||
// Provider client token sent back in the license.
|
||
optional bytes provider_client_token = 4;
|
||
// License counter associated with the avove token.
|
||
optional uint32 license_counter = 5;
|
||
}
|
||
|
||
message ContentInfo {
|
||
message ContentInfoEntry {
|
||
message Pssh {
|
||
optional bytes system_id = 1;
|
||
oneof pssh_data {
|
||
// Populated for non-Widevine PSSH boxes.
|
||
bytes raw_data = 2;
|
||
// Populated if system_id matches Widevine’s system ID.
|
||
WidevinePsshData widevine_data = 3;
|
||
}
|
||
}
|
||
|
||
repeated bytes key_ids = 1;
|
||
// Populated if init_data_type = CENC.
|
||
optional Pssh pssh = 2;
|
||
}
|
||
|
||
optional LicenseRequest.ContentIdentification.InitData.InitDataType
|
||
init_data_type = 1;
|
||
repeated ContentInfoEntry content_info_entry = 2;
|
||
}
|
||
|
||
// Usage report sent in a license release.
|
||
message SessionUsage {
|
||
enum ClockSecurityLevel {
|
||
INSECURE_CLOCK = 0;
|
||
SECURE_TIMER = 1;
|
||
SECURE_CLOCK = 2;
|
||
HW_SECURE_CLOCK = 3;
|
||
}
|
||
// Set to true is the license was used.
|
||
optional bool license_used = 1;
|
||
// Set to true is the license was released.
|
||
optional bool license_released = 2;
|
||
optional ClockSecurityLevel clock_security_level = 3;
|
||
optional uint64 seconds_since_license_received = 4;
|
||
// The decrypt values are only set if the license was used.
|
||
optional uint64 seconds_since_first_decrypt = 5;
|
||
optional uint64 seconds_since_last_decrypt = 6;
|
||
optional bytes provider_session_token = 7;
|
||
}
|