Add checks for invalid parameters
Part of VTS test suite validation related-to-bug: 32815560 Test: drm hal vts test Change-Id: I52be29cd46f535482a761f98acf6ff28870c061c
This commit is contained in:
@@ -140,9 +140,15 @@ status_t WVDrmPlugin::openSession(Vector<uint8_t>& sessionId) {
|
||||
}
|
||||
|
||||
status_t WVDrmPlugin::closeSession(const Vector<uint8_t>& sessionId) {
|
||||
if (!sessionId.size()) {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
CdmSessionId cdmSessionId(sessionId.begin(), sessionId.end());
|
||||
mCDM->CloseSession(cdmSessionId);
|
||||
CdmResponseType res = mCDM->CloseSession(cdmSessionId);
|
||||
mCryptoSessions.erase(cdmSessionId);
|
||||
if (!isCdmResponseTypeSuccess(res)) {
|
||||
return android::ERROR_DRM_SESSION_NOT_OPENED;
|
||||
}
|
||||
return android::OK;
|
||||
}
|
||||
|
||||
@@ -158,6 +164,9 @@ status_t WVDrmPlugin::getKeyRequest(
|
||||
CdmLicenseType cdmLicenseType;
|
||||
CdmSessionId cdmSessionId;
|
||||
CdmKeySetId cdmKeySetId;
|
||||
if (!scope.size()) {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
if (keyType == kKeyType_Offline) {
|
||||
cdmLicenseType = kLicenseTypeOffline;
|
||||
cdmSessionId.assign(scope.begin(), scope.end());
|
||||
@@ -250,6 +259,9 @@ status_t WVDrmPlugin::provideKeyResponse(
|
||||
const Vector<uint8_t>& scope,
|
||||
const Vector<uint8_t>& response,
|
||||
Vector<uint8_t>& keySetId) {
|
||||
if (scope.size() == 0 || response.size() == 0) {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
CdmSessionId cdmSessionId;
|
||||
CdmKeyResponse cdmResponse(response.begin(), response.end());
|
||||
CdmKeySetId cdmKeySetId;
|
||||
@@ -366,6 +378,9 @@ status_t WVDrmPlugin::provideProvisionResponse(
|
||||
const Vector<uint8_t>& response,
|
||||
Vector<uint8_t>& certificate,
|
||||
Vector<uint8_t>& wrapped_key) {
|
||||
if (!response.size()) {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
CdmProvisioningResponse cdmResponse(response.begin(), response.end());
|
||||
if (cdmResponse == kSpecialUnprovisionResponse) {
|
||||
if (mCdmIdentifier == kDefaultCdmIdentifier) {
|
||||
@@ -394,6 +409,9 @@ status_t WVDrmPlugin::unprovisionDevice() {
|
||||
|
||||
status_t WVDrmPlugin::getSecureStop(const Vector<uint8_t>& ssid,
|
||||
Vector<uint8_t>& secureStop) {
|
||||
if (!ssid.size()) {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
CdmUsageInfo cdmUsageInfo;
|
||||
CdmSecureStopId cdmSsid(ssid.begin(), ssid.end());
|
||||
CdmResponseType res = mCDM->GetUsageInfo(
|
||||
@@ -435,6 +453,9 @@ status_t WVDrmPlugin::releaseAllSecureStops() {
|
||||
}
|
||||
|
||||
status_t WVDrmPlugin::releaseSecureStops(const Vector<uint8_t>& ssRelease) {
|
||||
if (!ssRelease.size()) {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
CdmUsageInfoReleaseMessage cdmMessage(ssRelease.begin(), ssRelease.end());
|
||||
CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage);
|
||||
return mapCdmResponseType(res);
|
||||
@@ -607,6 +628,9 @@ status_t WVDrmPlugin::setPropertyByteArray(const String8& name,
|
||||
|
||||
status_t WVDrmPlugin::setCipherAlgorithm(const Vector<uint8_t>& sessionId,
|
||||
const String8& algorithm) {
|
||||
if (sessionId.size() == 0 || algorithm.size() == 0) {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
CdmSessionId cdmSessionId(sessionId.begin(), sessionId.end());
|
||||
if (!mCryptoSessions.count(cdmSessionId)) {
|
||||
return android::ERROR_DRM_SESSION_NOT_OPENED;
|
||||
@@ -625,6 +649,9 @@ status_t WVDrmPlugin::setCipherAlgorithm(const Vector<uint8_t>& sessionId,
|
||||
|
||||
status_t WVDrmPlugin::setMacAlgorithm(const Vector<uint8_t>& sessionId,
|
||||
const String8& algorithm) {
|
||||
if (sessionId.size() == 0 || algorithm.size() == 0) {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
CdmSessionId cdmSessionId(sessionId.begin(), sessionId.end());
|
||||
if (!mCryptoSessions.count(cdmSessionId)) {
|
||||
return android::ERROR_DRM_SESSION_NOT_OPENED;
|
||||
@@ -810,11 +837,15 @@ status_t WVDrmPlugin::verify(const Vector<uint8_t>& sessionId,
|
||||
}
|
||||
}
|
||||
|
||||
status_t WVDrmPlugin::signRSA(const Vector<uint8_t>& /* sessionId */,
|
||||
status_t WVDrmPlugin::signRSA(const Vector<uint8_t>& sessionId,
|
||||
const String8& algorithm,
|
||||
const Vector<uint8_t>& message,
|
||||
const Vector<uint8_t>& wrappedKey,
|
||||
Vector<uint8_t>& signature) {
|
||||
if (sessionId.size() == 0 || algorithm.size() == 0 ||
|
||||
message.size() == 0 || wrappedKey.size() == 0) {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
RSA_Padding_Scheme padding_scheme;
|
||||
if (algorithm == "RSASSA-PSS-SHA1") {
|
||||
padding_scheme = kSign_RSASSA_PSS;
|
||||
|
||||
Reference in New Issue
Block a user