Report provider client token
[ Merge of http://go/wvgerrit/71103 ] A content provider may specify a provider client token in a license. This is a client token generated by a provider. If present in a license, they will now be included in a license renewal request. Bug: 34386290 Test: WV unit/integration tests Change-Id: I3db303ea4d8b4ff4495393be4015b49e13db2ffc
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
|
||||
namespace {
|
||||
|
||||
const std::string kEmptyString;
|
||||
|
||||
// URL for Google Provisioning Server.
|
||||
// The provisioning server supplies the certificate that is needed
|
||||
// to communicate with the License Server.
|
||||
@@ -200,7 +202,7 @@ CdmResponseType CertificateProvisioning::GetProvisioningRequest(
|
||||
provisioning_request.mutable_client_id();
|
||||
|
||||
CdmAppParameterMap app_parameter;
|
||||
status = id.Prepare(app_parameter, client_id);
|
||||
status = id.Prepare(app_parameter, kEmptyString, client_id);
|
||||
if (status != NO_ERROR) return status;
|
||||
|
||||
if (!service_certificate_->has_certificate()) {
|
||||
|
||||
@@ -73,6 +73,7 @@ CdmResponseType ClientIdentification::Init(const std::string& client_token,
|
||||
*/
|
||||
CdmResponseType ClientIdentification::Prepare(
|
||||
const CdmAppParameterMap& app_parameters,
|
||||
const std::string& provider_client_token,
|
||||
video_widevine::ClientIdentification* client_id) {
|
||||
|
||||
if (is_license_request_) {
|
||||
@@ -147,6 +148,10 @@ CdmResponseType ClientIdentification::Prepare(
|
||||
ss << (uint32_t)crypto_session_->GetSecurityPatchLevel();
|
||||
client_info->set_value(ss.str());
|
||||
|
||||
if (!provider_client_token.empty()) {
|
||||
client_id->set_provider_client_token(provider_client_token);
|
||||
}
|
||||
|
||||
ClientIdentification_ClientCapabilities* client_capabilities =
|
||||
client_id->mutable_client_capabilities();
|
||||
|
||||
|
||||
@@ -23,12 +23,15 @@
|
||||
#include "wv_cdm_constants.h"
|
||||
|
||||
namespace {
|
||||
|
||||
const uint32_t kFourCcCbc1 = 0x63626331;
|
||||
const uint32_t kFourCcCbcs = 0x63626373;
|
||||
const uint32_t kFourCcLittleEndianCbc1 = 0x31636263;
|
||||
const uint32_t kFourCcLittleEndianCbcs = 0x73636263;
|
||||
const uint32_t kFourCcCenc = 0x63656e63;
|
||||
|
||||
const std::string kEmptyString;
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace wvcdm {
|
||||
@@ -304,7 +307,7 @@ CdmResponseType CdmLicense::PrepareKeyRequest(
|
||||
|
||||
LicenseRequest license_request;
|
||||
CdmResponseType status;
|
||||
status = PrepareClientId(app_parameters, &license_request);
|
||||
status = PrepareClientId(app_parameters, kEmptyString, &license_request);
|
||||
if (NO_ERROR != status) return status;
|
||||
|
||||
status =
|
||||
@@ -398,7 +401,9 @@ CdmResponseType CdmLicense::PrepareKeyUpdateRequest(
|
||||
license_request.set_request_time(clock_->GetCurrentTime());
|
||||
|
||||
if (renew_with_client_id_) {
|
||||
CdmResponseType status = PrepareClientId(app_parameters, &license_request);
|
||||
CdmResponseType status =
|
||||
PrepareClientId(app_parameters, provider_client_token_,
|
||||
&license_request);
|
||||
if (NO_ERROR != status) return status;
|
||||
}
|
||||
|
||||
@@ -577,6 +582,7 @@ CdmResponseType CdmLicense::HandleKeyResponse(
|
||||
return NO_CONTENT_KEY;
|
||||
}
|
||||
license_key_type_ = key_type;
|
||||
provider_client_token_ = license.provider_client_token();
|
||||
|
||||
if (license.has_srm_update()) crypto_session_->LoadSrm(license.srm_update());
|
||||
|
||||
@@ -930,14 +936,16 @@ CdmResponseType CdmLicense::HandleKeyErrorResponse(
|
||||
}
|
||||
|
||||
CdmResponseType CdmLicense::PrepareClientId(
|
||||
const CdmAppParameterMap& app_parameters, LicenseRequest* license_request) {
|
||||
const CdmAppParameterMap& app_parameters,
|
||||
const std::string& provider_client_token,
|
||||
LicenseRequest* license_request) {
|
||||
wvcdm::ClientIdentification id;
|
||||
CdmResponseType status = id.Init(client_token_, device_id_, crypto_session_);
|
||||
if (status != NO_ERROR) return status;
|
||||
|
||||
video_widevine::ClientIdentification* client_id =
|
||||
license_request->mutable_client_id();
|
||||
status = id.Prepare(app_parameters, client_id);
|
||||
status = id.Prepare(app_parameters, provider_client_token, client_id);
|
||||
if (status != NO_ERROR) return status;
|
||||
|
||||
if (Properties::UsePrivacyMode(session_id_)) {
|
||||
|
||||
Reference in New Issue
Block a user