82 lines
3.0 KiB
Protocol Buffer
82 lines
3.0 KiB
Protocol Buffer
////////////////////////////////////////////////////////////////////////////////
|
|
// Copyright 2019 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
|
|
// exchange protocol to support DRM systems native to a device other than
|
|
// Widevine.
|
|
|
|
syntax = "proto2";
|
|
|
|
package widevine;
|
|
|
|
import "protos/public/client_identification.proto";
|
|
import "protos/public/license_protocol.proto";
|
|
|
|
option java_package = "com.google.video.widevine.externallicense";
|
|
option java_multiple_files = true;
|
|
|
|
|
|
enum ExternalLicenseType {
|
|
EXTERNAL_LICENSE_TYPE_UNDEFINED = 0;
|
|
PLAYREADY_LICENSE_NEW = 1;
|
|
PLAYREADY_LICENSE_RENEWAL = 2;
|
|
PLAYREADY_LICENSE_RELEASE = 3;
|
|
}
|
|
|
|
message EncryptedLicenseRequest {
|
|
// Provider ID for which the license request is encrypted (owner of
|
|
// service certificate).
|
|
optional string provider_id = 1;
|
|
// Serial number for the service certificate for which license_request is
|
|
// encrypted.
|
|
optional bytes service_certificate_serial_number = 2;
|
|
// Serialized license request message, encrypted with the privacy key
|
|
// using AES-128-CBC with PKCS#5 padding.
|
|
optional bytes encrypted_license_request = 3;
|
|
// Initialization vector needed to decrypt encrypted_license_request.
|
|
optional bytes encrypted_license_request_iv = 4;
|
|
// AES-128 privacy key, encrypted with the service public key using RSA-OAEP.
|
|
optional bytes encrypted_privacy_key = 5;
|
|
}
|
|
|
|
message ExternalLicenseRequest {
|
|
optional ExternalLicenseType request_type = 1;
|
|
// The license request.
|
|
oneof clear_or_encrypted_request {
|
|
// License request from the client.
|
|
bytes request = 2;
|
|
// Encrypted request from the client.
|
|
EncryptedLicenseRequest encrypted_request = 7;
|
|
}
|
|
oneof clear_or_encrypted_client_id {
|
|
// Information about the device.
|
|
ClientIdentification client_id = 3;
|
|
// Encrypted ClientIdentification message, used for privacy purposes.
|
|
EncryptedClientIdentification encrypted_client_id = 4;
|
|
}
|
|
// Information about the content, including the PSSH data.
|
|
optional LicenseRequest.ContentIdentification content_id = 5;
|
|
// Time of the request in seconds (UTC) as set by the client.
|
|
optional int64 request_time = 6;
|
|
}
|
|
|
|
message ExternalLicense {
|
|
optional ExternalLicenseType license_type = 1;
|
|
// The license representing the license type.
|
|
optional bytes license = 2;
|
|
// Widevine specific policy for renewals and expiry.
|
|
optional License.Policy policy = 3;
|
|
// Time of the request in seconds (UTC) as set in
|
|
// LicenseRequest.request_time. If this time is not set in the request,
|
|
// the local time at the license service is used in this field.
|
|
optional int64 license_start_time = 4;
|
|
// List of key Identifiers associated with this license.
|
|
repeated bytes key_id = 5;
|
|
}
|