From 51f47b2e14f238ce1d394ecfe7a8281e6e971cb8 Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Fri, 17 Sep 2021 09:37:12 -0700 Subject: [PATCH] Assume Keybox provisioning type if OTA Keybox is supported. [ Merge of http://go/wvgerrit/133943 and http://go/wvgerrit/134043 ] Certain OEMCrypto implementations will not report their provisioning method if the keybox is invalid. If the OEMCrypto implementation supports OTA keybox provisioning and does not report its provisioning method, then keybox provisioning is assumed. Bug: 187646550 Test: unit/integration/GtsMediaTestCases Change-Id: Ie7753546e53fc73fd59803958e88edf416ee5336 --- libwvdrmengine/cdm/core/src/crypto_session.cpp | 5 +++++ libwvdrmengine/cdm/core/src/ota_keybox_provisioner.cpp | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index 3bcee3ce..11d5d9f3 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -301,6 +301,11 @@ CdmResponseType CryptoSession::GetProvisioningMethod( break; case OEMCrypto_ProvisioningError: default: + if (static_cast(method) == 0 && needs_keybox_provisioning_) { + LOGW("Overriding provisioning method, assuming keybox"); + type = kClientTokenKeybox; + break; + } LOGE("OEMCrypto_GetProvisioningMethod failed: method = %d", static_cast(method)); metrics_->oemcrypto_provisioning_method_.SetError(method); diff --git a/libwvdrmengine/cdm/core/src/ota_keybox_provisioner.cpp b/libwvdrmengine/cdm/core/src/ota_keybox_provisioner.cpp index 180ab424..af5e367e 100644 --- a/libwvdrmengine/cdm/core/src/ota_keybox_provisioner.cpp +++ b/libwvdrmengine/cdm/core/src/ota_keybox_provisioner.cpp @@ -162,6 +162,8 @@ CdmResponseType OtaKeyboxProvisioner::GetProvisioningRequest( static_cast(result)); client_id->Clear(); } + LOGI("OTA request generated"); + LOGV("ota_request_data = %s", b2a_hex(ota_request_data).c_str()); OtaRequest* ota_request = prov_request.mutable_android_ota_keybox_request(); ota_request->set_ota_request(ota_request_data); @@ -255,8 +257,8 @@ CdmResponseType OtaKeyboxProvisioner::HandleProvisioningResponse( const CdmResponseType result = crypto_session_->LoadOtaProvisioning( kProductionKeybox, ota_response_data); if (result == NO_ERROR) { - LOGV("OTA response successfully processed: ota_response_data = %s", - b2a_hex(ota_response_data).c_str()); + LOGI("OTA response successfully processed"); + LOGV("ota_response_data = %s", b2a_hex(ota_response_data).c_str()); fallback_policy_->MarkProvisioned(); response_received_ = true; } else {