Added an OTA keybox provisioner.
[ Merge of http://go/wvgerrit/133729 ] [ Cherry pick of http://ag/15836224 ] The OtaKeyboxProvisioner is a system-wide provisioner for sharing the provisioning workflow between CDM engines. Bug: 189232882 Test: GtsMediaTestCases Change-Id: I873af3087cc05e1831bdd1d2c14fb002b73e6902 Added keybox provisioning proto fields. [ Merge of http://go/wvgerrit/133730 and http://go/ag/15113032 ] This CL copies over the required license_protocol.proto changes that are required for OTA keybox provisioning. These fields are defined in the server-side certificate_provisioning.proto, defined in http://cl/377533774. Note, changes are slightly different from server proto due to the RVC version of license_protocol.proto being out of date with SC and newer changes. Bug: 189232882 Test: run_x86_64_tests Change-Id: I55fcf6a7ac2ba4b6026b9acc63e822ff33c431d9 Added OTA keybox provisioning device files. [ Merge of http://go/wvgerrit/133743 and http://go/ag/15421141 ] This change adds a new set of proto messages/fields the CDM's device files for recording device and engine information around OTA keybox provisioning (OKP). To make cleanup and thread protection possible, there is a single file which will contain all the information for the device as a whole and each CDM engine tied to an app/origin. Bug: 189232882 Test: Linux unit tests Change-Id: Iaf80cd6342f32657e04416750d9b278d935821a5 Client ID for OKP requests. [ Merge of http://go/wvgerrit/133744 and http://go/ag/15645331 ] Extended the CDM ClientIdentification class to support a subset of client info used for OKP requests. Bug: 189232882 Test: Android unit tests Change-Id: I6aafb4f2164efe69bc733ece0a912f0e91893b91
This commit is contained in:
@@ -66,35 +66,44 @@ using video_widevine::ProvisioningRequest;
|
||||
using video_widevine::ProvisioningResponse;
|
||||
using video_widevine::SignedProvisioningMessage;
|
||||
|
||||
CdmResponseType ClientIdentification::Init(CryptoSession* crypto_session) {
|
||||
CdmResponseType ClientIdentification::InitForProvisioning(
|
||||
CryptoSession* crypto_session) {
|
||||
if (crypto_session == nullptr) {
|
||||
LOGE("Crypto session not provided");
|
||||
return PARAMETER_NULL;
|
||||
}
|
||||
|
||||
is_license_request_ = false;
|
||||
crypto_session_ = crypto_session;
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
CdmResponseType ClientIdentification::Init(const std::string& client_token,
|
||||
CryptoSession* crypto_session) {
|
||||
CdmResponseType ClientIdentification::InitForLicenseRequest(
|
||||
const std::string& client_token, CryptoSession* crypto_session) {
|
||||
if (crypto_session == nullptr) {
|
||||
LOGE("Crypto session not provided");
|
||||
return PARAMETER_NULL;
|
||||
}
|
||||
|
||||
if (client_token.empty()) {
|
||||
LOGE("Client token is empty");
|
||||
return PARAMETER_NULL;
|
||||
}
|
||||
|
||||
is_license_request_ = true;
|
||||
client_token_ = client_token;
|
||||
crypto_session_ = crypto_session;
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
CdmResponseType ClientIdentification::InitForOtaKeyboxProvisioning(
|
||||
CryptoSession* crypto_session) {
|
||||
if (crypto_session == nullptr) {
|
||||
LOGE("Crypto session not provided");
|
||||
return PARAMETER_NULL;
|
||||
}
|
||||
is_okp_request_ = true;
|
||||
crypto_session_ = crypto_session;
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the ClientIdentification message token type for provisioning request.
|
||||
* NOTE: a DRM Cert should never be presented to the provisioning server.
|
||||
@@ -107,7 +116,7 @@ CdmResponseType ClientIdentification::Prepare(
|
||||
client_id->set_type(
|
||||
video_widevine::ClientIdentification::DRM_DEVICE_CERTIFICATE);
|
||||
client_id->set_token(client_token_);
|
||||
} else {
|
||||
} else if (!is_okp_request_) {
|
||||
video_widevine::ClientIdentification::TokenType token_type;
|
||||
if (!GetProvisioningTokenType(&token_type)) {
|
||||
LOGE("Failed to get provisioning token type");
|
||||
@@ -189,6 +198,11 @@ CdmResponseType ClientIdentification::Prepare(
|
||||
client_id->set_provider_client_token(provider_client_token);
|
||||
}
|
||||
|
||||
if (is_okp_request_) {
|
||||
// Capabilities is not important for OTA keybox provisionining.
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
ClientCapabilities* client_capabilities =
|
||||
client_id->mutable_client_capabilities();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user