Merge "Delete secure stops by key set ID."
This commit is contained in:
@@ -199,7 +199,7 @@ class DeviceFiles {
|
||||
std::string* provider_session_token);
|
||||
|
||||
virtual bool DeleteUsageInfo(const std::string& usage_info_file_name,
|
||||
const std::string& provider_session_token);
|
||||
const CdmKeySetId& key_set_id);
|
||||
|
||||
// Deletes a set of provider sessions from the specified usage info.
|
||||
// Sessions removed are based on the provided |key_set_ids|. If
|
||||
|
||||
@@ -1685,7 +1685,7 @@ CdmResponseType CdmEngine::RemoveAllUsageInfo(
|
||||
}
|
||||
|
||||
if (!handle.DeleteUsageInfo(DeviceFiles::GetUsageInfoFileName(app_id),
|
||||
usage_data[0].provider_session_token)) {
|
||||
usage_data[0].key_set_id)) {
|
||||
LOGW("Failed to delete usage info");
|
||||
break;
|
||||
}
|
||||
@@ -1737,25 +1737,17 @@ CdmResponseType CdmEngine::RemoveUsageInfo(
|
||||
new CdmSession(file_system_, metrics_->AddSession()));
|
||||
usage_session_->Init(usage_property_set_.get());
|
||||
|
||||
CdmKeyMessage license_request;
|
||||
CdmKeyResponse license_response;
|
||||
UsageEntry usage_entry;
|
||||
UsageEntryIndex usage_entry_index;
|
||||
std::string drm_certificate;
|
||||
CryptoWrappedKey wrapped_private_key;
|
||||
|
||||
if (!handle.RetrieveUsageInfo(
|
||||
DeviceFiles::GetUsageInfoFileName(app_id), provider_session_token,
|
||||
&license_request, &license_response, &usage_entry,
|
||||
&usage_entry_index, &drm_certificate, &wrapped_private_key)) {
|
||||
DeviceFiles::CdmUsageData usage_data;
|
||||
if (!handle.RetrieveUsageInfo(DeviceFiles::GetUsageInfoFileName(app_id),
|
||||
provider_session_token, &usage_data)) {
|
||||
// Try other security level
|
||||
continue;
|
||||
}
|
||||
|
||||
if (usage_session_->SupportsUsageTable()) {
|
||||
status = usage_session_->DeleteUsageEntry(usage_entry_index);
|
||||
status = usage_session_->DeleteUsageEntry(usage_data.usage_entry_index);
|
||||
if (!handle.DeleteUsageInfo(DeviceFiles::GetUsageInfoFileName(app_id),
|
||||
provider_session_token)) {
|
||||
usage_data.key_set_id)) {
|
||||
status = CdmResponseType(REMOVE_USAGE_INFO_ERROR_1);
|
||||
}
|
||||
usage_session_.reset();
|
||||
|
||||
@@ -1025,8 +1025,7 @@ bool CdmSession::DeleteLicenseFile() {
|
||||
std::string app_id;
|
||||
GetApplicationId(&app_id);
|
||||
return file_handle_->DeleteUsageInfo(
|
||||
DeviceFiles::GetUsageInfoFileName(app_id),
|
||||
license_parser_->provider_session_token());
|
||||
DeviceFiles::GetUsageInfoFileName(app_id), key_set_id_);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -824,7 +824,7 @@ CdmResponseType CdmUsageTable::StoreEntry(UsageEntryIndex entry_index,
|
||||
}
|
||||
device_files->DeleteUsageInfo(
|
||||
entry_info_list_[entry_index].usage_info_file_name,
|
||||
provider_session_token);
|
||||
entry_info_list_[entry_index].key_set_id);
|
||||
if (!device_files->StoreUsageInfo(
|
||||
provider_session_token, key_request, key_response,
|
||||
entry_info_list_[entry_index].usage_info_file_name,
|
||||
|
||||
@@ -1128,7 +1128,7 @@ bool DeviceFiles::GetProviderSessionToken(const std::string& app_id,
|
||||
}
|
||||
|
||||
bool DeviceFiles::DeleteUsageInfo(const std::string& usage_info_file_name,
|
||||
const std::string& provider_session_token) {
|
||||
const CdmKeySetId& key_set_id) {
|
||||
RETURN_FALSE_IF_UNINITIALIZED();
|
||||
video_widevine_client::sdk::File file;
|
||||
if (RetrieveHashedFile(usage_info_file_name, &file) != kNoError) {
|
||||
@@ -1140,17 +1140,19 @@ bool DeviceFiles::DeleteUsageInfo(const std::string& usage_info_file_name,
|
||||
int index = 0;
|
||||
bool found = false;
|
||||
for (; index < usage_info->sessions_size(); ++index) {
|
||||
if (usage_info->sessions(index).token() == provider_session_token) {
|
||||
const auto& session = usage_info->sessions(index);
|
||||
if (session.key_set_id() == key_set_id) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
LOGE("Unable to find provider session token: pst = %s",
|
||||
wvutil::b2a_hex(provider_session_token).c_str());
|
||||
LOGE("Unable to find usage info: key_set_id = %s", IdToString(key_set_id));
|
||||
return false;
|
||||
}
|
||||
LOGD("Deleting usage info: key_set_id = %s, pst = %s", IdToString(key_set_id),
|
||||
wvutil::b2a_hex(usage_info->sessions(index).token()).c_str());
|
||||
|
||||
google::protobuf::RepeatedPtrField<UsageInfo_ProviderSession>* sessions =
|
||||
usage_info->mutable_sessions();
|
||||
|
||||
@@ -394,7 +394,7 @@ class MockDeviceFiles : public DeviceFiles {
|
||||
MOCK_METHOD(bool, StoreUsageTableInfo,
|
||||
(const UsageTableHeader&, const std::vector<CdmUsageEntryInfo>&),
|
||||
(override));
|
||||
MOCK_METHOD(bool, DeleteUsageInfo, (const std::string&, const std::string&),
|
||||
MOCK_METHOD(bool, DeleteUsageInfo, (const std::string&, const CdmKeySetId&),
|
||||
(override));
|
||||
MOCK_METHOD(bool, DeleteMultipleUsageInfoByKeySetIds,
|
||||
(const std::string&, const std::vector<std::string>&),
|
||||
|
||||
Reference in New Issue
Block a user