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
121 lines
4.7 KiB
Protocol Buffer
121 lines
4.7 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:
|
|
// ClientIdentification messages used by provisioning and license protocols.
|
|
|
|
syntax = "proto2";
|
|
|
|
package widevine;
|
|
|
|
option java_package = "com.google.video.widevine.protos";
|
|
option java_outer_classname = "ClientIdentificationProtos";
|
|
|
|
// ClientIdentification message used to authenticate the client device.
|
|
message ClientIdentification {
|
|
enum TokenType {
|
|
KEYBOX = 0;
|
|
DRM_DEVICE_CERTIFICATE = 1;
|
|
REMOTE_ATTESTATION_CERTIFICATE = 2;
|
|
OEM_DEVICE_CERTIFICATE = 3;
|
|
}
|
|
|
|
message NameValue {
|
|
optional string name = 1;
|
|
optional string value = 2;
|
|
}
|
|
|
|
// Capabilities which not all clients may support. Used for the license
|
|
// exchange protocol only.
|
|
message ClientCapabilities {
|
|
enum HdcpVersion {
|
|
HDCP_NONE = 0;
|
|
HDCP_V1 = 1;
|
|
HDCP_V2 = 2;
|
|
HDCP_V2_1 = 3;
|
|
HDCP_V2_2 = 4;
|
|
HDCP_V2_3 = 5;
|
|
HDCP_NO_DIGITAL_OUTPUT = 0xff;
|
|
}
|
|
|
|
enum CertificateKeyType {
|
|
RSA_2048 = 0;
|
|
RSA_3072 = 1;
|
|
}
|
|
|
|
enum AnalogOutputCapabilities {
|
|
ANALOG_OUTPUT_UNKNOWN = 0;
|
|
ANALOG_OUTPUT_NONE = 1;
|
|
ANALOG_OUTPUT_SUPPORTED = 2;
|
|
ANALOG_OUTPUT_SUPPORTS_CGMS_A = 3;
|
|
}
|
|
|
|
optional bool client_token = 1 [default = false];
|
|
optional bool session_token = 2 [default = false];
|
|
optional bool video_resolution_constraints = 3 [default = false];
|
|
optional HdcpVersion max_hdcp_version = 4 [default = HDCP_NONE];
|
|
optional uint32 oem_crypto_api_version = 5;
|
|
// Client has hardware support for protecting the usage table, such as
|
|
// storing the generation number in secure memory. For Details, see:
|
|
// https://docs.google.com/document/d/1Mm8oB51SYAgry62mEuh_2OEkabikBiS61kN7HsDnh9Y/edit#heading=h.xgjl2srtytjt
|
|
optional bool anti_rollback_usage_table = 6 [default = false];
|
|
// The client shall report |srm_version| if available.
|
|
optional uint32 srm_version = 7;
|
|
// A device may have SRM data, and report a version, but may not be capable
|
|
// of updating SRM data.
|
|
optional bool can_update_srm = 8 [default = false];
|
|
repeated CertificateKeyType supported_certificate_key_type = 9;
|
|
optional AnalogOutputCapabilities analog_output_capabilities = 10
|
|
[default = ANALOG_OUTPUT_UNKNOWN];
|
|
optional bool can_disable_analog_output = 11 [default = false];
|
|
// Clients can indicate a performance level supported by OEMCrypto.
|
|
// This will allow applications and providers to choose an appropriate
|
|
// quality of content to serve. Currently defined tiers are
|
|
// 1 (low), 2 (medium) and 3 (high). Any other value indicate that
|
|
// the resource rating is unavailable or reporting erroneous values
|
|
// for that device. For details see,
|
|
// https://docs.google.com/document/d/1wodSYK-Unj3AgTSXqujWuBCAFC00qF85G1AhfLtqdko
|
|
optional uint32 resource_rating_tier = 12 [default = 0];
|
|
}
|
|
|
|
// Type of factory-provisioned device root of trust. Optional.
|
|
optional TokenType type = 1 [default = KEYBOX];
|
|
// Factory-provisioned device root of trust. Required.
|
|
optional bytes token = 2;
|
|
// Optional client information name/value pairs.
|
|
repeated NameValue client_info = 3;
|
|
// Client token generated by the content provider. Optional.
|
|
optional bytes provider_client_token = 4;
|
|
// Number of licenses received by the client to which the token above belongs.
|
|
// Only present if client_token is specified.
|
|
optional uint32 license_counter = 5;
|
|
// List of non-baseline client capabilities.
|
|
optional ClientCapabilities client_capabilities = 6;
|
|
// Serialized VmpData message. Optional.
|
|
optional bytes vmp_data = 7;
|
|
}
|
|
|
|
// EncryptedClientIdentification message used to hold ClientIdentification
|
|
// messages encrypted for privacy purposes.
|
|
message EncryptedClientIdentification {
|
|
// Provider ID for which the ClientIdentifcation is encrypted (owner of
|
|
// service certificate).
|
|
optional string provider_id = 1;
|
|
// Serial number for the service certificate for which ClientIdentification is
|
|
// encrypted.
|
|
optional bytes service_certificate_serial_number = 2;
|
|
// Serialized ClientIdentification message, encrypted with the privacy key
|
|
// using AES-128-CBC with PKCS#5 padding.
|
|
optional bytes encrypted_client_id = 3;
|
|
// Initialization vector needed to decrypt encrypted_client_id.
|
|
optional bytes encrypted_client_id_iv = 4;
|
|
// AES-128 privacy key, encrypted with the service public key using RSA-OAEP.
|
|
optional bytes encrypted_privacy_key = 5;
|
|
}
|