Add checks for invalid parameters
Part of VTS test suite validation for the binderized Widevine service Test: Drm VTS test bug:32815560 Change-Id: I0913c0e72487b5fdbf579b9ea3409c13264888fd
This commit is contained in:
@@ -83,6 +83,9 @@ Return<void> WVCryptoPlugin::notifyResolution(
|
|||||||
|
|
||||||
Return<Status> WVCryptoPlugin::setMediaDrmSession(
|
Return<Status> WVCryptoPlugin::setMediaDrmSession(
|
||||||
const hidl_vec<uint8_t>& sessionId) {
|
const hidl_vec<uint8_t>& sessionId) {
|
||||||
|
if (sessionId.size() == 0) {
|
||||||
|
return Status::BAD_VALUE;
|
||||||
|
}
|
||||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||||
if (!mCDM->IsOpenSession(cdmSessionId)) {
|
if (!mCDM->IsOpenSession(cdmSessionId)) {
|
||||||
|
|||||||
@@ -182,11 +182,16 @@ Return<void> WVDrmPlugin::openSession(openSession_cb _hidl_cb) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Return<Status> WVDrmPlugin::closeSession(const hidl_vec<uint8_t>& sessionId) {
|
Return<Status> WVDrmPlugin::closeSession(const hidl_vec<uint8_t>& sessionId) {
|
||||||
|
if (!sessionId.size()) {
|
||||||
|
return Status::BAD_VALUE;
|
||||||
|
}
|
||||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||||
mCDM->CloseSession(cdmSessionId);
|
CdmResponseType res = mCDM->CloseSession(cdmSessionId);
|
||||||
mCryptoSessions.erase(cdmSessionId);
|
mCryptoSessions.erase(cdmSessionId);
|
||||||
|
if (!isCdmResponseTypeSuccess(res)) {
|
||||||
|
return Status::ERROR_DRM_SESSION_NOT_OPENED;
|
||||||
|
}
|
||||||
return Status::OK;
|
return Status::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,6 +203,11 @@ Return<void> WVDrmPlugin::getKeyRequest(
|
|||||||
const hidl_vec<KeyValue>& optionalParameters,
|
const hidl_vec<KeyValue>& optionalParameters,
|
||||||
getKeyRequest_cb _hidl_cb) {
|
getKeyRequest_cb _hidl_cb) {
|
||||||
|
|
||||||
|
if (!scope.size()) {
|
||||||
|
_hidl_cb(Status::BAD_VALUE, hidl_vec<uint8_t>(),
|
||||||
|
KeyRequestType::UNKNOWN, "");
|
||||||
|
return Void();
|
||||||
|
}
|
||||||
KeyRequestType requestType = KeyRequestType::UNKNOWN;
|
KeyRequestType requestType = KeyRequestType::UNKNOWN;
|
||||||
status_t status = android::OK;
|
status_t status = android::OK;
|
||||||
std::string defaultUrl;
|
std::string defaultUrl;
|
||||||
@@ -305,6 +315,10 @@ Return<void> WVDrmPlugin::provideKeyResponse(
|
|||||||
const hidl_vec<uint8_t>& response,
|
const hidl_vec<uint8_t>& response,
|
||||||
provideKeyResponse_cb _hidl_cb) {
|
provideKeyResponse_cb _hidl_cb) {
|
||||||
|
|
||||||
|
if (scope.size() == 0 || response.size() == 0) {
|
||||||
|
_hidl_cb(Status::BAD_VALUE, hidl_vec<uint8_t>());
|
||||||
|
return Void();
|
||||||
|
}
|
||||||
const std::vector<uint8_t> resp = toVector(response);
|
const std::vector<uint8_t> resp = toVector(response);
|
||||||
const std::vector<uint8_t> scopeId = toVector(scope);
|
const std::vector<uint8_t> scopeId = toVector(scope);
|
||||||
|
|
||||||
@@ -354,6 +368,9 @@ Return<void> WVDrmPlugin::provideKeyResponse(
|
|||||||
|
|
||||||
Return<Status> WVDrmPlugin::removeKeys(const hidl_vec<uint8_t>& sessionId) {
|
Return<Status> WVDrmPlugin::removeKeys(const hidl_vec<uint8_t>& sessionId) {
|
||||||
|
|
||||||
|
if (!sessionId.size()) {
|
||||||
|
return Status::BAD_VALUE;
|
||||||
|
}
|
||||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||||
|
|
||||||
@@ -365,6 +382,9 @@ Return<Status> WVDrmPlugin::removeKeys(const hidl_vec<uint8_t>& sessionId) {
|
|||||||
Return<Status> WVDrmPlugin::restoreKeys(const hidl_vec<uint8_t>& sessionId,
|
Return<Status> WVDrmPlugin::restoreKeys(const hidl_vec<uint8_t>& sessionId,
|
||||||
const hidl_vec<uint8_t>& keySetId) {
|
const hidl_vec<uint8_t>& keySetId) {
|
||||||
|
|
||||||
|
if (!sessionId.size() || !keySetId.size()) {
|
||||||
|
return Status::BAD_VALUE;
|
||||||
|
}
|
||||||
const std::vector<uint8_t> kId = toVector(keySetId);
|
const std::vector<uint8_t> kId = toVector(keySetId);
|
||||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||||
@@ -378,6 +398,10 @@ Return<Status> WVDrmPlugin::restoreKeys(const hidl_vec<uint8_t>& sessionId,
|
|||||||
Return<void> WVDrmPlugin::queryKeyStatus(const hidl_vec<uint8_t>& sessionId,
|
Return<void> WVDrmPlugin::queryKeyStatus(const hidl_vec<uint8_t>& sessionId,
|
||||||
queryKeyStatus_cb _hidl_cb) {
|
queryKeyStatus_cb _hidl_cb) {
|
||||||
|
|
||||||
|
if (sessionId.size() == 0) {
|
||||||
|
_hidl_cb(Status::BAD_VALUE, hidl_vec<KeyValue>());
|
||||||
|
return Void();
|
||||||
|
}
|
||||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||||
CdmQueryMap cdmLicenseInfo;
|
CdmQueryMap cdmLicenseInfo;
|
||||||
@@ -439,6 +463,10 @@ Return<void> WVDrmPlugin::provideProvisionResponse(
|
|||||||
const hidl_vec<uint8_t>& response,
|
const hidl_vec<uint8_t>& response,
|
||||||
provideProvisionResponse_cb _hidl_cb) {
|
provideProvisionResponse_cb _hidl_cb) {
|
||||||
|
|
||||||
|
if (!response.size()) {
|
||||||
|
_hidl_cb(Status::BAD_VALUE, hidl_vec<uint8_t>(), hidl_vec<uint8_t>());
|
||||||
|
return Void();
|
||||||
|
}
|
||||||
const std::vector<uint8_t> resp = toVector(response);
|
const std::vector<uint8_t> resp = toVector(response);
|
||||||
std::vector<uint8_t> certificate;
|
std::vector<uint8_t> certificate;
|
||||||
std::vector<uint8_t> wrappedKey;
|
std::vector<uint8_t> wrappedKey;
|
||||||
@@ -479,6 +507,10 @@ Return<void> WVDrmPlugin::getSecureStop(
|
|||||||
const hidl_vec<uint8_t>& secureStopId,
|
const hidl_vec<uint8_t>& secureStopId,
|
||||||
getSecureStop_cb _hidl_cb) {
|
getSecureStop_cb _hidl_cb) {
|
||||||
|
|
||||||
|
if (!secureStopId.size()) {
|
||||||
|
_hidl_cb(Status::BAD_VALUE, SecureStop());
|
||||||
|
return Void();
|
||||||
|
}
|
||||||
const std::vector<uint8_t> id = toVector(secureStopId);
|
const std::vector<uint8_t> id = toVector(secureStopId);
|
||||||
CdmUsageInfo cdmUsageInfo;
|
CdmUsageInfo cdmUsageInfo;
|
||||||
CdmSecureStopId cdmSsId(id.begin(), id.end());
|
CdmSecureStopId cdmSsId(id.begin(), id.end());
|
||||||
@@ -540,6 +572,9 @@ Return<Status> WVDrmPlugin::releaseAllSecureStops() {
|
|||||||
Return<Status> WVDrmPlugin::releaseSecureStop(
|
Return<Status> WVDrmPlugin::releaseSecureStop(
|
||||||
const hidl_vec<uint8_t>& secureStopId) {
|
const hidl_vec<uint8_t>& secureStopId) {
|
||||||
|
|
||||||
|
if (!secureStopId.size()) {
|
||||||
|
return Status::BAD_VALUE;
|
||||||
|
}
|
||||||
const std::vector<uint8_t> ssRelease = toVector(secureStopId);
|
const std::vector<uint8_t> ssRelease = toVector(secureStopId);
|
||||||
CdmUsageInfoReleaseMessage cdmMessage(ssRelease.begin(), ssRelease.end());
|
CdmUsageInfoReleaseMessage cdmMessage(ssRelease.begin(), ssRelease.end());
|
||||||
CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage);
|
CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage);
|
||||||
@@ -735,6 +770,9 @@ Return<Status> WVDrmPlugin::setPropertyByteArray(
|
|||||||
Return<Status> WVDrmPlugin::setCipherAlgorithm(
|
Return<Status> WVDrmPlugin::setCipherAlgorithm(
|
||||||
const hidl_vec<uint8_t>& sessionId, const hidl_string& algorithm) {
|
const hidl_vec<uint8_t>& sessionId, const hidl_string& algorithm) {
|
||||||
|
|
||||||
|
if (sessionId.size() == 0 || algorithm.size() == 0) {
|
||||||
|
return Status::BAD_VALUE;
|
||||||
|
}
|
||||||
std::string algo(algorithm.c_str());
|
std::string algo(algorithm.c_str());
|
||||||
std::vector<uint8_t> sId = toVector(sessionId);
|
std::vector<uint8_t> sId = toVector(sessionId);
|
||||||
|
|
||||||
@@ -757,6 +795,9 @@ Return<Status> WVDrmPlugin::setCipherAlgorithm(
|
|||||||
Return<Status> WVDrmPlugin::setMacAlgorithm(
|
Return<Status> WVDrmPlugin::setMacAlgorithm(
|
||||||
const hidl_vec<uint8_t>& sessionId, const hidl_string& algorithm) {
|
const hidl_vec<uint8_t>& sessionId, const hidl_string& algorithm) {
|
||||||
|
|
||||||
|
if (sessionId.size() == 0 || algorithm.size() == 0) {
|
||||||
|
return Status::BAD_VALUE;
|
||||||
|
}
|
||||||
std::string algo(algorithm.c_str());
|
std::string algo(algorithm.c_str());
|
||||||
std::vector<uint8_t> sId = toVector(sessionId);
|
std::vector<uint8_t> sId = toVector(sessionId);
|
||||||
|
|
||||||
@@ -1001,12 +1042,17 @@ Return<void> WVDrmPlugin::verify(
|
|||||||
}
|
}
|
||||||
|
|
||||||
Return<void> WVDrmPlugin::signRSA(
|
Return<void> WVDrmPlugin::signRSA(
|
||||||
const hidl_vec<uint8_t>& /* sessionId */,
|
const hidl_vec<uint8_t>& sessionId,
|
||||||
const hidl_string& algorithm,
|
const hidl_string& algorithm,
|
||||||
const hidl_vec<uint8_t>& message,
|
const hidl_vec<uint8_t>& message,
|
||||||
const hidl_vec<uint8_t>& wrappedKey,
|
const hidl_vec<uint8_t>& wrappedKey,
|
||||||
signRSA_cb _hidl_cb) {
|
signRSA_cb _hidl_cb) {
|
||||||
|
|
||||||
|
if (sessionId.size() == 0 || algorithm.size() == 0 ||
|
||||||
|
message.size() == 0 || wrappedKey.size() == 0) {
|
||||||
|
_hidl_cb(Status::BAD_VALUE, hidl_vec<uint8_t>());
|
||||||
|
return Void();
|
||||||
|
}
|
||||||
const std::string algo(algorithm.c_str());
|
const std::string algo(algorithm.c_str());
|
||||||
std::vector<uint8_t> signature;
|
std::vector<uint8_t> signature;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user