OEMCrypto v16.1
Merge of http://go/wvgerrit/93404 This CL updates the Widevine CDM to support OEMCrypto v16.1 Test: Tested in 16.2 CL Bug: 141247171 Change-Id: I69bd993500f6fb63bf6010c8b0250dc7acc3d71b
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* Copyright 2019 Google LLC. All Rights Reserved. This file and proprietary
|
||||
/* Copyright 2019 Google LLC. All rights reserved. This file and proprietary
|
||||
* source code may only be used and distributed under the Widevine Master
|
||||
* License Agreement.
|
||||
*/
|
||||
@@ -13,12 +12,16 @@
|
||||
#include <string>
|
||||
|
||||
#include "OEMCryptoCENCCommon.h"
|
||||
#include "core_message_deserialize.h"
|
||||
#include "core_message_serialize.h"
|
||||
#include "core_message_types.h"
|
||||
#include "odk.h"
|
||||
#include "odk_serialize.h"
|
||||
#include "oec_util.h"
|
||||
#include "odk_structs.h"
|
||||
#include "odk_structs_priv.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace oec_util;
|
||||
// TODO(b/147297226): remove this: using namespace std;
|
||||
// TODO(b/147297226): remove this: using namespace oec_util;
|
||||
|
||||
typedef std::function<size_t(const uint8_t*, uint8_t*, size_t)> roundtrip_fun;
|
||||
|
||||
@@ -43,7 +46,7 @@ static OEMCryptoResult odk_fun_RenewalRequest(
|
||||
static OEMCryptoResult odk_fun_ProvisioningRequest(
|
||||
uint8_t* out, size_t* size, uint32_t api_version, uint32_t nonce,
|
||||
uint32_t session_id, const ODK_ProvisioningRequest& core_provisioning) {
|
||||
const string& device_id = core_provisioning.device_id;
|
||||
const std::string& device_id = core_provisioning.device_id;
|
||||
return ODK_PrepareCoreProvisioningRequest(
|
||||
out, SIZE_MAX, size, api_version, nonce, session_id,
|
||||
reinterpret_cast<const uint8_t*>(device_id.data()), device_id.size());
|
||||
@@ -52,7 +55,7 @@ static OEMCryptoResult odk_fun_ProvisioningRequest(
|
||||
template <typename T, typename F, typename G>
|
||||
static roundtrip_fun kdo_odk(const F& kdo_fun, const G& odk_fun) {
|
||||
auto roundtrip = [&](const uint8_t* in, uint8_t* out, size_t size) -> size_t {
|
||||
string input(reinterpret_cast<const char*>(in), size);
|
||||
std::string input(reinterpret_cast<const char*>(in), size);
|
||||
T t = {};
|
||||
if (!kdo_fun(input, &t)) {
|
||||
return 0;
|
||||
@@ -93,14 +96,15 @@ static OEMCryptoResult odk_fun_LicenseResponse(
|
||||
const uint8_t* message, size_t message_length, uint32_t api_version,
|
||||
uint32_t nonce, uint32_t session_id, const ODK_ParseLicense_Args* a,
|
||||
ODK_ParsedLicense& parsed_lic) {
|
||||
return ODK_ParseLicense(message, message_length, api_version, nonce,
|
||||
session_id, bool(a->initial_license_load),
|
||||
bool(a->usage_entry_present), &parsed_lic);
|
||||
return ODK_ParseLicense(
|
||||
message, message_length, api_version, nonce, session_id,
|
||||
static_cast<bool>(a->initial_license_load),
|
||||
static_cast<bool>(a->usage_entry_present), &parsed_lic);
|
||||
}
|
||||
|
||||
static bool kdo_fun_LicenseResponse(const ODK_ParseLicense_Args* args,
|
||||
const ODK_ParsedLicense& parsed_lic,
|
||||
string* oemcrypto_core_message) {
|
||||
std::string* oemcrypto_core_message) {
|
||||
const auto& common = args->common;
|
||||
ODK_LicenseRequest core_request{common.api_version, common.nonce,
|
||||
common.session_id};
|
||||
@@ -129,7 +133,7 @@ static OEMCryptoResult odk_fun_RenewalResponse(
|
||||
|
||||
static bool kdo_fun_RenewalResponse(const ODK_ParseRenewal_Args* args,
|
||||
const ODK_RenewalMessage& renewal_msg,
|
||||
string* oemcrypto_core_message) {
|
||||
std::string* oemcrypto_core_message) {
|
||||
const auto& common = args->common;
|
||||
ODK_RenewalRequest core_request{common.api_version, common.nonce,
|
||||
common.session_id, renewal_msg.playback_time};
|
||||
@@ -146,13 +150,14 @@ static OEMCryptoResult odk_fun_ProvisioningResponse(
|
||||
|
||||
static bool kdo_fun_ProvisioningResponse(
|
||||
const ODK_ParseProvisioning_Args* args,
|
||||
const ODK_ParsedProvisioning& parsed_prov, string* oemcrypto_core_message) {
|
||||
const ODK_ParsedProvisioning& parsed_prov,
|
||||
std::string* oemcrypto_core_message) {
|
||||
const auto& common = args->common;
|
||||
assert(args->device_id_length <= sizeof(args->device_id));
|
||||
ODK_ProvisioningRequest core_request{
|
||||
common.api_version, common.nonce, common.session_id,
|
||||
string(reinterpret_cast<const char*>(args->device_id),
|
||||
args->device_id_length)};
|
||||
std::string(reinterpret_cast<const char*>(args->device_id),
|
||||
args->device_id_length)};
|
||||
return CreateCoreProvisioningResponse(parsed_prov, core_request,
|
||||
oemcrypto_core_message);
|
||||
}
|
||||
@@ -177,7 +182,7 @@ static roundtrip_fun odk_kdo(const F& odk_fun, const G& kdo_fun) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
string oemcrypto_core_message;
|
||||
std::string oemcrypto_core_message;
|
||||
if (!kdo_fun(args, t, &oemcrypto_core_message)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user