Android CDM: Restored secure stop tests.

[ Semi-revert of http://ag/20183443 ]
[ Merge of http://go/wvgerrit/168898 ]

These tests were removed from Android last quarter; however, they
now need to be restored.  These tests will be removed in Android V.

To help with ambiguity around where the CDM is operating on a single
or set of usage info messages, the variables have been renamed to
propery indicate plurality.

Bug: 263319220
Test: cdm_extended_duration_test
Test: request_license_test
Test: libwvdrmdrmplugin_hal_test
Change-Id: I38b16dd5811069fafaeab5ffc19d0f8a8095f0cf
This commit is contained in:
Alex Dale
2023-03-23 22:03:21 -07:00
parent 5ed89d16e2
commit e928670c85
11 changed files with 1842 additions and 343 deletions

View File

@@ -84,8 +84,8 @@ using wvcdm::CdmProvisioningResponse;
using wvcdm::CdmQueryMap;
using wvcdm::CdmSecureStopId;
using wvcdm::CdmSecurityLevel;
using wvcdm::CdmUsageInfo;
using wvcdm::CdmUsageInfoReleaseMessage;
using wvcdm::CdmUsageReport;
using wvcdm::CdmUsageReportList;
using wvcdm::kDefaultCdmIdentifier;
using wvcdm::KeyId;
using wvcdm::RequestedSecurityLevel;
@@ -672,73 +672,55 @@ Status WVDrmPlugin::unprovisionDevice() {
::ndk::ScopedAStatus WVDrmPlugin::getSecureStop(
const ::aidl::android::hardware::drm::SecureStopId& in_secureStopId,
::aidl::android::hardware::drm::SecureStop* _aidl_return) {
if (!in_secureStopId.secureStopId.size()) {
*_aidl_return = SecureStop();
*_aidl_return = SecureStop();
if (in_secureStopId.secureStopId.empty()) {
return toNdkScopedAStatus(Status::BAD_VALUE);
}
vector<uint8_t> cdmStopVec;
SecureStop secureStop;
CdmIdentifier identifier;
auto status = mCdmIdentifierBuilder.getCdmIdentifier(&identifier);
if (status != Status::OK) {
*_aidl_return = SecureStop();
return toNdkScopedAStatus(status);
}
CdmUsageInfo cdmUsageInfo;
CdmSecureStopId cdmSsId(in_secureStopId.secureStopId.begin(),
in_secureStopId.secureStopId.end());
const CdmSecureStopId cdmSsId(in_secureStopId.secureStopId.begin(),
in_secureStopId.secureStopId.end());
CdmUsageReport cdmUsageReport;
CdmResponseType res = mCDM->GetUsageInfo(mPropertySet.app_id(), cdmSsId,
identifier, &cdmUsageInfo);
identifier, &cdmUsageReport);
SecureStop secureStop;
if (isCdmResponseTypeSuccess(res)) {
for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin();
iter != cdmUsageInfo.end(); ++iter) {
const std::string& cdmStop = *iter;
cdmStopVec = StrToVector(cdmStop);
}
secureStop.opaqueData = cdmStopVec;
secureStop.opaqueData = StrToVector(cdmUsageReport);
*_aidl_return = std::move(secureStop);
}
*_aidl_return = secureStop;
return toNdkScopedAStatus(mapCdmResponseType(res));
}
::ndk::ScopedAStatus WVDrmPlugin::getSecureStops(
vector<::aidl::android::hardware::drm::SecureStop>* _aidl_return) {
std::list<vector<uint8_t>> secureStops;
vector<SecureStop> secureStopsVec;
_aidl_return->clear();
CdmIdentifier identifier;
auto status = mCdmIdentifierBuilder.getCdmIdentifier(&identifier);
if (status != Status::OK) {
*_aidl_return = secureStopsVec;
return toNdkScopedAStatus(status);
}
CdmUsageInfo cdmUsageInfo;
CdmResponseType res =
mCDM->GetUsageInfo(mPropertySet.app_id(), identifier, &cdmUsageInfo);
CdmUsageReportList cdmUsageReports;
const CdmResponseType res =
mCDM->GetUsageInfo(mPropertySet.app_id(), identifier, &cdmUsageReports);
vector<SecureStop> secureStops;
if (isCdmResponseTypeSuccess(res)) {
secureStops.clear();
for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin();
iter != cdmUsageInfo.end(); ++iter) {
const std::string& cdmStop = *iter;
secureStops.push_back(StrToVector(cdmStop));
for (const CdmUsageReport& cdmUsageReport : cdmUsageReports) {
SecureStop secureStop;
secureStop.opaqueData = StrToVector(cdmUsageReport);
secureStops.push_back(std::move(secureStop));
}
}
*_aidl_return = std::move(secureStops);
std::list<vector<uint8_t>>::iterator iter = secureStops.begin();
while (iter != secureStops.end()) {
SecureStop secureStop;
secureStop.opaqueData = *iter++;
secureStopsVec.push_back(secureStop);
}
*_aidl_return = secureStopsVec;
return toNdkScopedAStatus(mapCdmResponseType(res));
}
@@ -763,8 +745,8 @@ Status WVDrmPlugin::unprovisionDevice() {
return toNdkScopedAStatus(status);
}
CdmUsageInfoReleaseMessage cdmMessage(in_secureStopId.secureStopId.begin(),
in_secureStopId.secureStopId.end());
const CdmKeyResponse cdmMessage(in_secureStopId.secureStopId.begin(),
in_secureStopId.secureStopId.end());
CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage, identifier);
return toNdkScopedAStatus(mapCdmResponseType(res));
}
@@ -832,9 +814,10 @@ Status WVDrmPlugin::unprovisionDevice() {
return toNdkScopedAStatus(status);
}
const vector<uint8_t> data = in_ssRelease.opaqueData;
CdmUsageInfoReleaseMessage cdmMessage(data.begin(), data.end());
CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage, identifier);
const vector<uint8_t>& data = in_ssRelease.opaqueData;
const CdmKeyResponse cdmMessage(data.begin(), data.end());
// Only releases a single secure stop.
const CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage, identifier);
return toNdkScopedAStatus(mapCdmResponseType(res));
}
@@ -850,10 +833,10 @@ Status WVDrmPlugin::unprovisionDevice() {
return toNdkScopedAStatus(status);
}
CdmSecureStopId id(in_secureStopId.secureStopId.begin(),
in_secureStopId.secureStopId.end());
CdmResponseType res =
mCDM->RemoveUsageInfo(mPropertySet.app_id(), identifier, id);
const CdmSecureStopId ssid(in_secureStopId.secureStopId.begin(),
in_secureStopId.secureStopId.end());
const CdmResponseType res =
mCDM->RemoveUsageInfo(mPropertySet.app_id(), identifier, ssid);
return toNdkScopedAStatus(mapCdmResponseType(res));
}
@@ -864,7 +847,7 @@ Status WVDrmPlugin::unprovisionDevice() {
return toNdkScopedAStatus(status);
}
CdmResponseType res =
const CdmResponseType res =
mCDM->RemoveAllUsageInfo(mPropertySet.app_id(), identifier);
return toNdkScopedAStatus(mapCdmResponseType(res));
}