Remove dependencies from frameworks C++ containers.
Replace AString, KeyedVector, List, String8 and Vector with stl containers. Remove corresponding frameworks libraries. Test: Play Movies & TV (streaming and pinning) Test: Netflix Test: unit tests bug: 34677927 Change-Id: I125f45054987d69bbca59c1ffdcbe8add38c3c13
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
#define LOG_TAG "WVCdm"
|
||||
#include <utils/Log.h>
|
||||
|
||||
#include <list>
|
||||
|
||||
#include "WVDrmPlugin.h"
|
||||
#include "TypeConvert.h"
|
||||
|
||||
@@ -13,7 +15,6 @@
|
||||
#include "mapErrors-inl.h"
|
||||
#include "media/stagefright/MediaErrors.h"
|
||||
#include "openssl/sha.h"
|
||||
#include "utils/List.h"
|
||||
#include "wv_cdm_constants.h"
|
||||
|
||||
namespace {
|
||||
@@ -42,8 +43,6 @@ using ::android::hardware::drm::V1_0::widevine::toStatus;
|
||||
using ::android::hardware::drm::V1_0::widevine::toVector;
|
||||
using ::android::hardware::Void;
|
||||
|
||||
using android::List;
|
||||
|
||||
using wvcdm::kDefaultCdmIdentifier;
|
||||
using wvcdm::CdmAppParameterMap;
|
||||
using wvcdm::CdmCertificateType;
|
||||
@@ -65,10 +64,9 @@ using wvcdm::SecurityLevel;
|
||||
|
||||
namespace {
|
||||
|
||||
Vector<uint8_t> StrToVector(const std::string& str) {
|
||||
Vector<uint8_t> vector;
|
||||
vector.appendArray(reinterpret_cast<const uint8_t*>(str.data()), str.size());
|
||||
return vector;
|
||||
std::vector<uint8_t> StrToVector(const std::string& str) {
|
||||
std::vector<uint8_t> vec(str.begin(), str.end());
|
||||
return vec;
|
||||
}
|
||||
|
||||
KeyRequestType ConvertFromCdmKeyRequestType(
|
||||
@@ -131,7 +129,7 @@ WVDrmPlugin::~WVDrmPlugin() {
|
||||
|
||||
Return<void> WVDrmPlugin::openSession(openSession_cb _hidl_cb) {
|
||||
status_t status = android::OK;
|
||||
Vector<uint8_t> sessionId;
|
||||
std::vector<uint8_t> sessionId;
|
||||
|
||||
CdmSessionId cdmSessionId;
|
||||
CdmResponseType res =
|
||||
@@ -185,7 +183,7 @@ Return<void> WVDrmPlugin::openSession(openSession_cb _hidl_cb) {
|
||||
|
||||
Return<Status> WVDrmPlugin::closeSession(const hidl_vec<uint8_t>& sessionId) {
|
||||
|
||||
const Vector<uint8_t> sId = toVector(sessionId);
|
||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
mCDM->CloseSession(cdmSessionId);
|
||||
mCryptoSessions.erase(cdmSessionId);
|
||||
@@ -202,9 +200,9 @@ Return<void> WVDrmPlugin::getKeyRequest(
|
||||
|
||||
KeyRequestType requestType = KeyRequestType::UNKNOWN;
|
||||
status_t status = android::OK;
|
||||
String8 defaultUrl;
|
||||
Vector<uint8_t> request;
|
||||
const Vector<uint8_t> scopeId = toVector(scope);
|
||||
std::string defaultUrl;
|
||||
std::vector<uint8_t> request;
|
||||
const std::vector<uint8_t> scopeId = toVector(scope);
|
||||
|
||||
CdmLicenseType cdmLicenseType;
|
||||
CdmSessionId cdmSessionId;
|
||||
@@ -220,7 +218,7 @@ Return<void> WVDrmPlugin::getKeyRequest(
|
||||
cdmKeySetId.assign(scopeId.begin(), scopeId.end());
|
||||
} else {
|
||||
_hidl_cb(Status::BAD_VALUE, toHidlVec(request), KeyRequestType::UNKNOWN,
|
||||
defaultUrl.string());
|
||||
defaultUrl.c_str());
|
||||
return Void();
|
||||
}
|
||||
|
||||
@@ -266,11 +264,11 @@ Return<void> WVDrmPlugin::getKeyRequest(
|
||||
|
||||
CdmAppParameterMap cdmParameters;
|
||||
for (size_t i = 0; i < optionalParameters.size(); ++i) {
|
||||
const String8& key = String8(optionalParameters[i].key);
|
||||
const String8& value = String8(optionalParameters[i].value);
|
||||
const std::string& key(optionalParameters[i].key);
|
||||
const std::string& value(optionalParameters[i].value);
|
||||
|
||||
std::string cdmKey(key.string(), key.size());
|
||||
std::string cdmValue(value.string(), value.size());
|
||||
std::string cdmKey(key.c_str(), key.size());
|
||||
std::string cdmValue(value.c_str(), value.size());
|
||||
|
||||
cdmParameters[cdmKey] = cdmValue;
|
||||
}
|
||||
@@ -285,7 +283,7 @@ Return<void> WVDrmPlugin::getKeyRequest(
|
||||
|
||||
if (isCdmResponseTypeSuccess(res)) {
|
||||
defaultUrl.clear();
|
||||
defaultUrl.setTo(keyRequest.url.data(), keyRequest.url.size());
|
||||
defaultUrl.assign(keyRequest.url.data(), keyRequest.url.size());
|
||||
|
||||
request = StrToVector(keyRequest.message);
|
||||
}
|
||||
@@ -298,7 +296,7 @@ Return<void> WVDrmPlugin::getKeyRequest(
|
||||
status = mapAndNotifyOfCdmResponseType(scopeId, res);
|
||||
}
|
||||
_hidl_cb(toStatus(status), toHidlVec(request), requestType,
|
||||
defaultUrl.string());
|
||||
defaultUrl.c_str());
|
||||
return Void();
|
||||
}
|
||||
|
||||
@@ -307,19 +305,19 @@ Return<void> WVDrmPlugin::provideKeyResponse(
|
||||
const hidl_vec<uint8_t>& response,
|
||||
provideKeyResponse_cb _hidl_cb) {
|
||||
|
||||
const Vector<uint8_t> resp = toVector(response);
|
||||
const Vector<uint8_t> scopeId = toVector(scope);
|
||||
const std::vector<uint8_t> resp = toVector(response);
|
||||
const std::vector<uint8_t> scopeId = toVector(scope);
|
||||
|
||||
CdmKeySetId cdmKeySetId;
|
||||
CdmSessionId cdmSessionId;
|
||||
CdmKeyResponse cdmResponse(resp.begin(), resp.end());
|
||||
|
||||
bool isRequest = (memcmp(scopeId.array(), wvcdm::SESSION_ID_PREFIX,
|
||||
bool isRequest = (memcmp(scopeId.data(), wvcdm::SESSION_ID_PREFIX,
|
||||
sizeof(wvcdm::SESSION_ID_PREFIX) - 1) == 0);
|
||||
bool isRelease = (memcmp(scopeId.array(), wvcdm::KEY_SET_ID_PREFIX,
|
||||
bool isRelease = (memcmp(scopeId.data(), wvcdm::KEY_SET_ID_PREFIX,
|
||||
sizeof(wvcdm::KEY_SET_ID_PREFIX) - 1) == 0);
|
||||
|
||||
Vector<uint8_t> keySetId;
|
||||
std::vector<uint8_t> keySetId;
|
||||
|
||||
if (isRequest) {
|
||||
cdmSessionId.assign(scopeId.begin(), scopeId.end());
|
||||
@@ -356,7 +354,7 @@ Return<void> WVDrmPlugin::provideKeyResponse(
|
||||
|
||||
Return<Status> WVDrmPlugin::removeKeys(const hidl_vec<uint8_t>& sessionId) {
|
||||
|
||||
const Vector<uint8_t> sId = toVector(sessionId);
|
||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
|
||||
CdmResponseType res = mCDM->RemoveKeys(cdmSessionId);
|
||||
@@ -367,8 +365,8 @@ Return<Status> WVDrmPlugin::removeKeys(const hidl_vec<uint8_t>& sessionId) {
|
||||
Return<Status> WVDrmPlugin::restoreKeys(const hidl_vec<uint8_t>& sessionId,
|
||||
const hidl_vec<uint8_t>& keySetId) {
|
||||
|
||||
const Vector<uint8_t> kId = toVector(keySetId);
|
||||
const Vector<uint8_t> sId = toVector(sessionId);
|
||||
const std::vector<uint8_t> kId = toVector(keySetId);
|
||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
CdmKeySetId cdmKeySetId(kId.begin(), kId.end());
|
||||
|
||||
@@ -380,13 +378,13 @@ Return<Status> WVDrmPlugin::restoreKeys(const hidl_vec<uint8_t>& sessionId,
|
||||
Return<void> WVDrmPlugin::queryKeyStatus(const hidl_vec<uint8_t>& sessionId,
|
||||
queryKeyStatus_cb _hidl_cb) {
|
||||
|
||||
const Vector<uint8_t> sId = toVector(sessionId);
|
||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
CdmQueryMap cdmLicenseInfo;
|
||||
|
||||
CdmResponseType res = mCDM->QueryKeyStatus(cdmSessionId, &cdmLicenseInfo);
|
||||
|
||||
Vector<KeyValue> infoMapVec;
|
||||
std::vector<KeyValue> infoMapVec;
|
||||
if (isCdmResponseTypeSuccess(res)) {
|
||||
infoMapVec.clear();
|
||||
|
||||
@@ -396,8 +394,8 @@ Return<Status> WVDrmPlugin::restoreKeys(const hidl_vec<uint8_t>& sessionId,
|
||||
++iter) {
|
||||
const std::string& cdmKey = iter->first;
|
||||
const std::string& cdmValue = iter->second;
|
||||
keyValuePair.key = String8(cdmKey.data(), cdmKey.size());
|
||||
keyValuePair.value = String8(cdmValue.data(), cdmValue.size());
|
||||
keyValuePair.key = std::string(cdmKey.data(), cdmKey.size());
|
||||
keyValuePair.value = std::string(cdmValue.data(), cdmValue.size());
|
||||
infoMapVec.push_back(keyValuePair);
|
||||
}
|
||||
}
|
||||
@@ -424,12 +422,12 @@ Return<Status> WVDrmPlugin::restoreKeys(const hidl_vec<uint8_t>& sessionId,
|
||||
CdmResponseType res = mCDM->GetProvisioningRequest(
|
||||
cdmCertType, cdmCertAuthority, mCdmIdentifierBuilder.get_identifier(),
|
||||
&cdmProvisionRequest, &cdmDefaultUrl);
|
||||
String8 defaultUrl;
|
||||
Vector<uint8_t> request;
|
||||
std::string defaultUrl;
|
||||
std::vector<uint8_t> request;
|
||||
if (isCdmResponseTypeSuccess(res)) {
|
||||
request = StrToVector(cdmProvisionRequest);
|
||||
defaultUrl.clear();
|
||||
defaultUrl.setTo(cdmDefaultUrl.data(), cdmDefaultUrl.size());
|
||||
defaultUrl.assign(cdmDefaultUrl.data(), cdmDefaultUrl.size());
|
||||
}
|
||||
|
||||
_hidl_cb(toStatus(mapCdmResponseType(res)), toHidlVec(request),
|
||||
@@ -441,9 +439,9 @@ Return<void> WVDrmPlugin::provideProvisionResponse(
|
||||
const hidl_vec<uint8_t>& response,
|
||||
provideProvisionResponse_cb _hidl_cb) {
|
||||
|
||||
const Vector<uint8_t> resp = toVector(response);
|
||||
Vector<uint8_t> certificate;
|
||||
Vector<uint8_t> wrappedKey;
|
||||
const std::vector<uint8_t> resp = toVector(response);
|
||||
std::vector<uint8_t> certificate;
|
||||
std::vector<uint8_t> wrappedKey;
|
||||
|
||||
CdmProvisioningResponse cdmResponse(resp.begin(), resp.end());
|
||||
if (cdmResponse == kSpecialUnprovisionResponse) {
|
||||
@@ -481,7 +479,7 @@ Return<void> WVDrmPlugin::getSecureStop(
|
||||
const hidl_vec<uint8_t>& secureStopId,
|
||||
getSecureStop_cb _hidl_cb) {
|
||||
|
||||
const Vector<uint8_t> id = toVector(secureStopId);
|
||||
const std::vector<uint8_t> id = toVector(secureStopId);
|
||||
CdmUsageInfo cdmUsageInfo;
|
||||
CdmSecureStopId cdmSsId(id.begin(), id.end());
|
||||
CdmResponseType res = mCDM->GetUsageInfo(
|
||||
@@ -489,14 +487,12 @@ Return<void> WVDrmPlugin::getSecureStop(
|
||||
|
||||
SecureStop secureStop;
|
||||
if (isCdmResponseTypeSuccess(res)) {
|
||||
|
||||
Vector<uint8_t> cdmStopVec;
|
||||
std::vector<uint8_t> cdmStopVec;
|
||||
for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin();
|
||||
iter != cdmUsageInfo.end();
|
||||
++iter) {
|
||||
const std::string& cdmStop = *iter;
|
||||
cdmStopVec.appendArray(reinterpret_cast<const uint8_t*>(cdmStop.data()),
|
||||
cdmStop.size());
|
||||
cdmStopVec = StrToVector(cdmStop);
|
||||
}
|
||||
secureStop.opaqueData = toHidlVec(cdmStopVec);
|
||||
}
|
||||
@@ -507,7 +503,7 @@ Return<void> WVDrmPlugin::getSecureStop(
|
||||
|
||||
Return<void> WVDrmPlugin::getSecureStops(getSecureStops_cb _hidl_cb) {
|
||||
|
||||
List<Vector<uint8_t> > secureStops;
|
||||
std::list<std::vector<uint8_t> > secureStops;
|
||||
|
||||
CdmUsageInfo cdmUsageInfo;
|
||||
CdmResponseType res =
|
||||
@@ -523,8 +519,8 @@ Return<void> WVDrmPlugin::getSecureStops(getSecureStops_cb _hidl_cb) {
|
||||
}
|
||||
}
|
||||
|
||||
Vector<SecureStop> secureStopsVec;
|
||||
List<Vector<uint8_t> >::iterator iter = secureStops.begin();
|
||||
std::vector<SecureStop> secureStopsVec;
|
||||
std::list<std::vector<uint8_t> >::iterator iter = secureStops.begin();
|
||||
while (iter != secureStops.end()) {
|
||||
SecureStop secureStop;
|
||||
secureStop.opaqueData = toHidlVec(*iter++);
|
||||
@@ -544,7 +540,7 @@ Return<Status> WVDrmPlugin::releaseAllSecureStops() {
|
||||
Return<Status> WVDrmPlugin::releaseSecureStop(
|
||||
const hidl_vec<uint8_t>& secureStopId) {
|
||||
|
||||
const Vector<uint8_t> ssRelease = toVector(secureStopId);
|
||||
const std::vector<uint8_t> ssRelease = toVector(secureStopId);
|
||||
CdmUsageInfoReleaseMessage cdmMessage(ssRelease.begin(), ssRelease.end());
|
||||
CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage);
|
||||
return toStatus(mapCdmResponseType(res));
|
||||
@@ -553,8 +549,8 @@ Return<Status> WVDrmPlugin::releaseSecureStop(
|
||||
Return<void> WVDrmPlugin::getPropertyString(const hidl_string& propertyName,
|
||||
getPropertyString_cb _hidl_cb) {
|
||||
status_t status = android::OK;
|
||||
String8 name(propertyName);
|
||||
String8 value;
|
||||
std::string name(propertyName.c_str());
|
||||
std::string value;
|
||||
|
||||
if (name == "vendor") {
|
||||
value = "Google";
|
||||
@@ -603,11 +599,11 @@ Return<void> WVDrmPlugin::getPropertyString(const hidl_string& propertyName,
|
||||
} else if (name == "origin") {
|
||||
value = mCdmIdentifierBuilder.origin().c_str();
|
||||
} else {
|
||||
ALOGE("App requested unknown string property %s", name.string());
|
||||
ALOGE("App requested unknown string property %s", name.c_str());
|
||||
status = android::ERROR_DRM_CANNOT_HANDLE;
|
||||
}
|
||||
|
||||
_hidl_cb(toStatus(status), value.string());
|
||||
_hidl_cb(toStatus(status), value.c_str());
|
||||
return Void();
|
||||
}
|
||||
|
||||
@@ -616,8 +612,8 @@ Return<void> WVDrmPlugin::getPropertyByteArray(
|
||||
getPropertyByteArray_cb _hidl_cb) {
|
||||
|
||||
status_t status = android::OK;
|
||||
String8 name(propertyName);
|
||||
Vector<uint8_t> value;
|
||||
std::string name(propertyName.c_str());
|
||||
std::vector<uint8_t> value;
|
||||
|
||||
if (name == "deviceUniqueId") {
|
||||
value = StrToVector(mCdmIdentifierBuilder.get_device_unique_id());
|
||||
@@ -626,7 +622,7 @@ Return<void> WVDrmPlugin::getPropertyByteArray(
|
||||
} else if (name == "serviceCertificate") {
|
||||
value = StrToVector(mPropertySet.service_certificate());
|
||||
} else {
|
||||
ALOGE("App requested unknown byte array property %s", name.string());
|
||||
ALOGE("App requested unknown byte array property %s", name.c_str());
|
||||
status = android::ERROR_DRM_CANNOT_HANDLE;
|
||||
}
|
||||
|
||||
@@ -636,8 +632,8 @@ Return<void> WVDrmPlugin::getPropertyByteArray(
|
||||
|
||||
Return<Status> WVDrmPlugin::setPropertyString(const hidl_string& propertyName,
|
||||
const hidl_string& value) {
|
||||
String8 name(propertyName);
|
||||
String8 _value(value);
|
||||
std::string name(propertyName.c_str());
|
||||
std::string _value(value.c_str());
|
||||
|
||||
if (name == "securityLevel") {
|
||||
if (mCryptoSessions.size() == 0) {
|
||||
@@ -661,7 +657,7 @@ Return<Status> WVDrmPlugin::setPropertyString(const hidl_string& propertyName,
|
||||
} else if (_value == kResetSecurityLevel) {
|
||||
mPropertySet.set_security_level(kResetSecurityLevel);
|
||||
} else {
|
||||
ALOGE("App requested invalid security level %s", _value.string());
|
||||
ALOGE("App requested invalid security level %s", _value.c_str());
|
||||
return Status::BAD_VALUE;
|
||||
}
|
||||
} else {
|
||||
@@ -674,7 +670,7 @@ Return<Status> WVDrmPlugin::setPropertyString(const hidl_string& propertyName,
|
||||
} else if (_value == kDisable) {
|
||||
mPropertySet.set_use_privacy_mode(false);
|
||||
} else {
|
||||
ALOGE("App requested unknown privacy mode %s", _value.string());
|
||||
ALOGE("App requested unknown privacy mode %s", _value.c_str());
|
||||
return Status::BAD_VALUE;
|
||||
}
|
||||
} else if (name == "sessionSharing") {
|
||||
@@ -684,7 +680,7 @@ Return<Status> WVDrmPlugin::setPropertyString(const hidl_string& propertyName,
|
||||
} else if (_value == kDisable) {
|
||||
mPropertySet.set_is_session_sharing_enabled(false);
|
||||
} else {
|
||||
ALOGE("App requested unknown sharing type %s", _value.string());
|
||||
ALOGE("App requested unknown sharing type %s", _value.c_str());
|
||||
return Status::BAD_VALUE;
|
||||
}
|
||||
} else {
|
||||
@@ -693,7 +689,7 @@ Return<Status> WVDrmPlugin::setPropertyString(const hidl_string& propertyName,
|
||||
}
|
||||
} else if (name == "appId") {
|
||||
if (mCryptoSessions.size() == 0) {
|
||||
mPropertySet.set_app_id(_value.string());
|
||||
mPropertySet.set_app_id(_value.c_str());
|
||||
} else {
|
||||
ALOGE("App tried to set the application id while sessions are opened.");
|
||||
return toStatus(kErrorSessionIsOpen);
|
||||
@@ -703,12 +699,12 @@ Return<Status> WVDrmPlugin::setPropertyString(const hidl_string& propertyName,
|
||||
ALOGE("App tried to set the origin while sessions are opened.");
|
||||
return toStatus(kErrorSessionIsOpen);
|
||||
} else {
|
||||
if (!mCdmIdentifierBuilder.set_origin(_value.string())) {
|
||||
if (!mCdmIdentifierBuilder.set_origin(_value.c_str())) {
|
||||
return Status::BAD_VALUE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ALOGE("App set unknown string property %s", name.string());
|
||||
ALOGE("App set unknown string property %s", name.c_str());
|
||||
return Status::ERROR_DRM_CANNOT_HANDLE;
|
||||
}
|
||||
|
||||
@@ -718,18 +714,18 @@ Return<Status> WVDrmPlugin::setPropertyString(const hidl_string& propertyName,
|
||||
Return<Status> WVDrmPlugin::setPropertyByteArray(
|
||||
const hidl_string& propertyName, const hidl_vec<uint8_t>& value) {
|
||||
|
||||
String8 name(propertyName);
|
||||
Vector<uint8_t> _value = toVector(value);
|
||||
std::string name(propertyName.c_str());
|
||||
std::vector<uint8_t> _value = toVector(value);
|
||||
|
||||
if (name == "serviceCertificate") {
|
||||
std::string cert(_value.begin(), _value.end());
|
||||
if (_value.isEmpty() || mCDM->IsValidServiceCertificate(cert)) {
|
||||
if (_value.empty() || mCDM->IsValidServiceCertificate(cert)) {
|
||||
mPropertySet.set_service_certificate(cert);
|
||||
} else {
|
||||
return Status::BAD_VALUE;
|
||||
}
|
||||
} else {
|
||||
ALOGE("App set unknown byte array property %s", name.string());
|
||||
ALOGE("App set unknown byte array property %s", name.c_str());
|
||||
return Status::ERROR_DRM_CANNOT_HANDLE;
|
||||
}
|
||||
|
||||
@@ -739,8 +735,8 @@ Return<Status> WVDrmPlugin::setPropertyByteArray(
|
||||
Return<Status> WVDrmPlugin::setCipherAlgorithm(
|
||||
const hidl_vec<uint8_t>& sessionId, const hidl_string& algorithm) {
|
||||
|
||||
String8 algo(algorithm);
|
||||
Vector<uint8_t> sId = toVector(sessionId);
|
||||
std::string algo(algorithm.c_str());
|
||||
std::vector<uint8_t> sId = toVector(sessionId);
|
||||
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
if (!mCryptoSessions.count(cdmSessionId)) {
|
||||
@@ -761,8 +757,8 @@ Return<Status> WVDrmPlugin::setCipherAlgorithm(
|
||||
Return<Status> WVDrmPlugin::setMacAlgorithm(
|
||||
const hidl_vec<uint8_t>& sessionId, const hidl_string& algorithm) {
|
||||
|
||||
String8 algo(algorithm);
|
||||
Vector<uint8_t> sId = toVector(sessionId);
|
||||
std::string algo(algorithm.c_str());
|
||||
std::vector<uint8_t> sId = toVector(sessionId);
|
||||
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
if (!mCryptoSessions.count(cdmSessionId)) {
|
||||
@@ -787,8 +783,8 @@ Return<void> WVDrmPlugin::encrypt(
|
||||
const hidl_vec<uint8_t>& iv,
|
||||
encrypt_cb _hidl_cb) {
|
||||
|
||||
const Vector<uint8_t> sId = toVector(sessionId);
|
||||
Vector<uint8_t> output;
|
||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||
std::vector<uint8_t> output;
|
||||
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
if (!mCryptoSessions.count(cdmSessionId)) {
|
||||
@@ -803,9 +799,9 @@ Return<void> WVDrmPlugin::encrypt(
|
||||
return Void();
|
||||
}
|
||||
|
||||
const Vector<uint8_t> _keyId = toVector(keyId);
|
||||
const std::vector<uint8_t> _keyId = toVector(keyId);
|
||||
OEMCryptoResult res = mCrypto->selectKey(cryptoSession.oecSessionId(),
|
||||
_keyId.array(), _keyId.size());
|
||||
_keyId.data(), _keyId.size());
|
||||
|
||||
if (res != OEMCrypto_SUCCESS) {
|
||||
ALOGE("OEMCrypto_SelectKey failed with %u", res);
|
||||
@@ -814,13 +810,13 @@ Return<void> WVDrmPlugin::encrypt(
|
||||
return Void();
|
||||
}
|
||||
|
||||
const Vector<uint8_t> _input = toVector(input);
|
||||
const Vector<uint8_t> _iv = toVector(iv);
|
||||
const std::vector<uint8_t> _input = toVector(input);
|
||||
const std::vector<uint8_t> _iv = toVector(iv);
|
||||
output.resize(_input.size());
|
||||
|
||||
res = mCrypto->encrypt(cryptoSession.oecSessionId(), _input.array(),
|
||||
_input.size(), _iv.array(),
|
||||
cryptoSession.cipherAlgorithm(), output.editArray());
|
||||
res = mCrypto->encrypt(cryptoSession.oecSessionId(), _input.data(),
|
||||
_input.size(), _iv.data(),
|
||||
cryptoSession.cipherAlgorithm(), output.data());
|
||||
|
||||
if (res == OEMCrypto_SUCCESS) {
|
||||
_hidl_cb(Status::OK, toHidlVec(output));
|
||||
@@ -839,8 +835,8 @@ Return<void> WVDrmPlugin::decrypt(
|
||||
const hidl_vec<uint8_t>& iv,
|
||||
decrypt_cb _hidl_cb) {
|
||||
|
||||
const Vector<uint8_t> sId = toVector(sessionId);
|
||||
Vector<uint8_t> output;
|
||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||
std::vector<uint8_t> output;
|
||||
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
if (!mCryptoSessions.count(cdmSessionId)) {
|
||||
@@ -855,9 +851,9 @@ Return<void> WVDrmPlugin::decrypt(
|
||||
return Void();
|
||||
}
|
||||
|
||||
const Vector<uint8_t> _keyId = toVector(keyId);
|
||||
const std::vector<uint8_t> _keyId = toVector(keyId);
|
||||
OEMCryptoResult res = mCrypto->selectKey(cryptoSession.oecSessionId(),
|
||||
_keyId.array(), _keyId.size());
|
||||
_keyId.data(), _keyId.size());
|
||||
|
||||
if (res != OEMCrypto_SUCCESS) {
|
||||
ALOGE("OEMCrypto_SelectKey failed with %u", res);
|
||||
@@ -866,13 +862,13 @@ Return<void> WVDrmPlugin::decrypt(
|
||||
return Void();
|
||||
}
|
||||
|
||||
const Vector<uint8_t> _input = toVector(input);
|
||||
const Vector<uint8_t> _iv = toVector(iv);
|
||||
const std::vector<uint8_t> _input = toVector(input);
|
||||
const std::vector<uint8_t> _iv = toVector(iv);
|
||||
output.resize(_input.size());
|
||||
|
||||
res = mCrypto->decrypt(cryptoSession.oecSessionId(), _input.array(),
|
||||
_input.size(), _iv.array(),
|
||||
cryptoSession.cipherAlgorithm(), output.editArray());
|
||||
res = mCrypto->decrypt(cryptoSession.oecSessionId(), _input.data(),
|
||||
_input.size(), _iv.data(),
|
||||
cryptoSession.cipherAlgorithm(), output.data());
|
||||
|
||||
if (res == OEMCrypto_SUCCESS) {
|
||||
_hidl_cb(Status::OK, toHidlVec(output));
|
||||
@@ -890,8 +886,8 @@ Return<void> WVDrmPlugin::sign(
|
||||
const hidl_vec<uint8_t>& message,
|
||||
sign_cb _hidl_cb) {
|
||||
|
||||
const Vector<uint8_t> sId = toVector(sessionId);
|
||||
Vector<uint8_t> signature;
|
||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||
std::vector<uint8_t> signature;
|
||||
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
if (!mCryptoSessions.count(cdmSessionId)) {
|
||||
@@ -906,9 +902,9 @@ Return<void> WVDrmPlugin::sign(
|
||||
return Void();
|
||||
}
|
||||
|
||||
const Vector<uint8_t> _keyId = toVector(keyId);
|
||||
const std::vector<uint8_t> _keyId = toVector(keyId);
|
||||
OEMCryptoResult res = mCrypto->selectKey(cryptoSession.oecSessionId(),
|
||||
_keyId.array(), _keyId.size());
|
||||
_keyId.data(), _keyId.size());
|
||||
|
||||
if (res != OEMCrypto_SUCCESS) {
|
||||
ALOGE("OEMCrypto_SelectKey failed with %u", res);
|
||||
@@ -919,8 +915,8 @@ Return<void> WVDrmPlugin::sign(
|
||||
|
||||
size_t signatureSize = 0;
|
||||
|
||||
const Vector<uint8_t> msg = toVector(message);
|
||||
res = mCrypto->sign(cryptoSession.oecSessionId(), msg.array(),
|
||||
const std::vector<uint8_t> msg = toVector(message);
|
||||
res = mCrypto->sign(cryptoSession.oecSessionId(), msg.data(),
|
||||
msg.size(), cryptoSession.macAlgorithm(),
|
||||
NULL, &signatureSize);
|
||||
|
||||
@@ -938,9 +934,9 @@ Return<void> WVDrmPlugin::sign(
|
||||
|
||||
signature.resize(signatureSize);
|
||||
|
||||
res = mCrypto->sign(cryptoSession.oecSessionId(), msg.array(),
|
||||
res = mCrypto->sign(cryptoSession.oecSessionId(), msg.data(),
|
||||
msg.size(), cryptoSession.macAlgorithm(),
|
||||
signature.editArray(), &signatureSize);
|
||||
signature.data(), &signatureSize);
|
||||
|
||||
if (res == OEMCrypto_SUCCESS) {
|
||||
_hidl_cb(Status::OK, toHidlVec(signature));
|
||||
@@ -960,7 +956,7 @@ Return<void> WVDrmPlugin::verify(
|
||||
verify_cb _hidl_cb) {
|
||||
|
||||
bool match = false;
|
||||
const Vector<uint8_t> sId = toVector(sessionId);
|
||||
const std::vector<uint8_t> sId = toVector(sessionId);
|
||||
|
||||
CdmSessionId cdmSessionId(sId.begin(), sId.end());
|
||||
if (!mCryptoSessions.count(cdmSessionId)) {
|
||||
@@ -975,9 +971,9 @@ Return<void> WVDrmPlugin::verify(
|
||||
return Void();
|
||||
}
|
||||
|
||||
const Vector<uint8_t> _keyId = toVector(keyId);
|
||||
const std::vector<uint8_t> _keyId = toVector(keyId);
|
||||
OEMCryptoResult res = mCrypto->selectKey(cryptoSession.oecSessionId(),
|
||||
_keyId.array(), _keyId.size());
|
||||
_keyId.data(), _keyId.size());
|
||||
|
||||
if (res != OEMCrypto_SUCCESS) {
|
||||
ALOGE("OEMCrypto_SelectKey failed with %u", res);
|
||||
@@ -985,11 +981,11 @@ Return<void> WVDrmPlugin::verify(
|
||||
return Void();
|
||||
}
|
||||
|
||||
const Vector<uint8_t> _message = toVector(message);
|
||||
const Vector<uint8_t> _signature = toVector(signature);
|
||||
res = mCrypto->verify(cryptoSession.oecSessionId(), _message.array(),
|
||||
const std::vector<uint8_t> _message = toVector(message);
|
||||
const std::vector<uint8_t> _signature = toVector(signature);
|
||||
res = mCrypto->verify(cryptoSession.oecSessionId(), _message.data(),
|
||||
_message.size(), cryptoSession.macAlgorithm(),
|
||||
_signature.array(), _signature.size());
|
||||
_signature.data(), _signature.size());
|
||||
|
||||
if (res == OEMCrypto_SUCCESS) {
|
||||
match = true;
|
||||
@@ -1011,8 +1007,8 @@ Return<void> WVDrmPlugin::signRSA(
|
||||
const hidl_vec<uint8_t>& wrappedKey,
|
||||
signRSA_cb _hidl_cb) {
|
||||
|
||||
const String8 algo(algorithm);
|
||||
Vector<uint8_t> signature;
|
||||
const std::string algo(algorithm.c_str());
|
||||
std::vector<uint8_t> signature;
|
||||
|
||||
RSA_Padding_Scheme padding_scheme;
|
||||
if (algo == "RSASSA-PSS-SHA1") {
|
||||
@@ -1020,16 +1016,16 @@ Return<void> WVDrmPlugin::signRSA(
|
||||
} else if (algo == "PKCS1-BlockType1") {
|
||||
padding_scheme = kSign_PKCS1_Block1;
|
||||
} else {
|
||||
ALOGE("Unknown RSA Algorithm %s", algo.string());
|
||||
ALOGE("Unknown RSA Algorithm %s", algo.c_str());
|
||||
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, toHidlVec(signature));
|
||||
return Void();
|
||||
}
|
||||
|
||||
const Vector<uint8_t> msg = toVector(message);
|
||||
const Vector<uint8_t> _wrappedKey = toVector(wrappedKey);
|
||||
OEMCryptoResult res = mCrypto->signRSA(_wrappedKey.array(),
|
||||
const std::vector<uint8_t> msg = toVector(message);
|
||||
const std::vector<uint8_t> _wrappedKey = toVector(wrappedKey);
|
||||
OEMCryptoResult res = mCrypto->signRSA(_wrappedKey.data(),
|
||||
_wrappedKey.size(),
|
||||
msg.array(), msg.size(),
|
||||
msg.data(), msg.size(),
|
||||
signature,
|
||||
padding_scheme);
|
||||
|
||||
@@ -1082,7 +1078,7 @@ Return<void> WVDrmPlugin::sendKeysChange(
|
||||
}
|
||||
|
||||
void WVDrmPlugin::OnSessionRenewalNeeded(const CdmSessionId& cdmSessionId) {
|
||||
const Vector<uint8_t> sessionId = StrToVector(cdmSessionId);
|
||||
const std::vector<uint8_t> sessionId = StrToVector(cdmSessionId);
|
||||
const hidl_vec<uint8_t> data; // data is ignored
|
||||
const hidl_vec<uint8_t> sid = toHidlVec(sessionId);
|
||||
sendEvent(EventType::KEY_NEEDED, sid, data);
|
||||
@@ -1092,7 +1088,7 @@ void WVDrmPlugin::OnSessionKeysChange(const CdmSessionId& cdmSessionId,
|
||||
const CdmKeyStatusMap& cdmKeysStatus,
|
||||
bool hasNewUsableKey) {
|
||||
bool expired = false;
|
||||
Vector<KeyStatus> keyStatusList;
|
||||
std::vector<KeyStatus> keyStatusList;
|
||||
for (CdmKeyStatusMap::const_iterator it = cdmKeysStatus.begin();
|
||||
it != cdmKeysStatus.end(); ++it) {
|
||||
const KeyId& keyId = it->first;
|
||||
@@ -1105,7 +1101,7 @@ void WVDrmPlugin::OnSessionKeysChange(const CdmSessionId& cdmSessionId,
|
||||
keyStatusList.push_back(keyStatus);
|
||||
}
|
||||
|
||||
const Vector<uint8_t> sessionId = StrToVector(cdmSessionId);
|
||||
const std::vector<uint8_t> sessionId = StrToVector(cdmSessionId);
|
||||
const hidl_vec<uint8_t> data; // data is ignored
|
||||
const hidl_vec<uint8_t> sid = toHidlVec(sessionId);
|
||||
sendKeysChange(sid, toHidlVec(keyStatusList), hasNewUsableKey);
|
||||
@@ -1117,7 +1113,7 @@ void WVDrmPlugin::OnSessionKeysChange(const CdmSessionId& cdmSessionId,
|
||||
|
||||
void WVDrmPlugin::OnExpirationUpdate(const CdmSessionId& cdmSessionId,
|
||||
int64_t newExpiryTimeSeconds) {
|
||||
const Vector<uint8_t> sessionId = StrToVector(cdmSessionId);
|
||||
const std::vector<uint8_t> sessionId = StrToVector(cdmSessionId);
|
||||
int64_t newExpiryTimeMilliseconds =
|
||||
newExpiryTimeSeconds == wvcdm::NEVER_EXPIRES
|
||||
? newExpiryTimeSeconds : newExpiryTimeSeconds * 1000;
|
||||
@@ -1148,16 +1144,7 @@ status_t WVDrmPlugin::queryProperty(SecurityLevel securityLevel,
|
||||
}
|
||||
|
||||
status_t WVDrmPlugin::queryProperty(const std::string& property,
|
||||
String8& string8_value) const {
|
||||
std::string string_value;
|
||||
status_t status = queryProperty(property, string_value);
|
||||
if (status != android::OK) return status;
|
||||
string8_value = string_value.c_str();
|
||||
return android::OK;
|
||||
}
|
||||
|
||||
status_t WVDrmPlugin::queryProperty(const std::string& property,
|
||||
Vector<uint8_t>& vector_value) const {
|
||||
std::vector<uint8_t>& vector_value) const {
|
||||
std::string string_value;
|
||||
status_t status = queryProperty(property, string_value);
|
||||
if (status != android::OK) return status;
|
||||
@@ -1166,7 +1153,7 @@ status_t WVDrmPlugin::queryProperty(const std::string& property,
|
||||
}
|
||||
|
||||
status_t WVDrmPlugin::mapAndNotifyOfCdmResponseType(
|
||||
const Vector<uint8_t>& sessionId,
|
||||
const std::vector<uint8_t>& sessionId,
|
||||
CdmResponseType res) {
|
||||
|
||||
const hidl_vec<uint8_t> data; // data is ignored
|
||||
@@ -1180,7 +1167,7 @@ status_t WVDrmPlugin::mapAndNotifyOfCdmResponseType(
|
||||
}
|
||||
|
||||
status_t WVDrmPlugin::mapAndNotifyOfOEMCryptoResult(
|
||||
const Vector<uint8_t>& sessionId,
|
||||
const std::vector<uint8_t>& sessionId,
|
||||
OEMCryptoResult res) {
|
||||
|
||||
const hidl_vec<uint8_t> data; // data is ignored
|
||||
@@ -1218,8 +1205,8 @@ status_t WVDrmPlugin::mapOEMCryptoResult(OEMCryptoResult res) {
|
||||
}
|
||||
}
|
||||
|
||||
bool WVDrmPlugin::initDataResemblesPSSH(const Vector<uint8_t>& initData) {
|
||||
const uint8_t* const initDataArray = initData.array();
|
||||
bool WVDrmPlugin::initDataResemblesPSSH(const std::vector<uint8_t>& initData) {
|
||||
const uint8_t* const initDataArray = initData.data();
|
||||
|
||||
// Extract the size field
|
||||
const uint8_t* const sizeField = &initDataArray[0];
|
||||
|
||||
Reference in New Issue
Block a user