Loading drm/libmediadrm/CryptoHalAidl.cpp +7 −8 Original line number Original line Diff line number Diff line Loading @@ -41,7 +41,7 @@ using ::aidl::android::hardware::drm::Uuid; using ::aidl::android::hardware::common::Ashmem; using ::aidl::android::hardware::common::Ashmem; using ::android::sp; using ::android::sp; using ::android::DrmUtils::toStatusTAidl; using ::android::DrmUtils::statusAidlToStatusT; using ::android::hardware::hidl_array; using ::android::hardware::hidl_array; using ::android::hardware::hidl_handle; using ::android::hardware::hidl_handle; using ::android::hardware::hidl_memory; using ::android::hardware::hidl_memory; Loading Loading @@ -281,7 +281,7 @@ status_t CryptoHalAidl::setMediaDrmSession(const Vector<uint8_t>& sessionId) { } } auto err = mPlugin->setMediaDrmSession(toStdVec(sessionId)); auto err = mPlugin->setMediaDrmSession(toStdVec(sessionId)); return err.isOk() ? toStatusTAidl(err.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(err); } } ssize_t CryptoHalAidl::decrypt(const uint8_t keyId[16], const uint8_t iv[16], ssize_t CryptoHalAidl::decrypt(const uint8_t keyId[16], const uint8_t iv[16], Loading Loading @@ -350,13 +350,12 @@ ssize_t CryptoHalAidl::decrypt(const uint8_t keyId[16], const uint8_t iv[16], std::vector<uint8_t> keyIdAidl(toStdVec(keyId, 16)); std::vector<uint8_t> keyIdAidl(toStdVec(keyId, 16)); std::vector<uint8_t> ivAidl(toStdVec(iv, 16)); std::vector<uint8_t> ivAidl(toStdVec(iv, 16)); DecryptResult result; DecryptResult result; err = mPlugin->decrypt(secure, keyIdAidl, ivAidl, aMode, aPattern, stdSubSamples, ::ndk::ScopedAStatus statusAidl = mPlugin->decrypt(secure, keyIdAidl, ivAidl, aMode, aPattern, stdSubSamples, hidlSharedBufferToAidlSharedBuffer(hSource), offset, hidlSharedBufferToAidlSharedBuffer(hSource), offset, hidlDestinationBufferToAidlDestinationBuffer(hDestination), &result) hidlDestinationBufferToAidlDestinationBuffer(hDestination), &result); .isOk() ? OK : DEAD_OBJECT; err = statusAidlToStatusT(statusAidl); *errorDetailMsg = toString8(result.detailedError); *errorDetailMsg = toString8(result.detailedError); if (err != OK) { if (err != OK) { ALOGE("Failed on decrypt, error message:%s, bytes written:%d", result.detailedError.c_str(), ALOGE("Failed on decrypt, error message:%s, bytes written:%d", result.detailedError.c_str(), Loading drm/libmediadrm/DrmHalAidl.cpp +40 −41 Original line number Original line Diff line number Diff line Loading @@ -28,7 +28,7 @@ #include <mediadrm/DrmSessionManager.h> #include <mediadrm/DrmSessionManager.h> #include <mediadrm/DrmUtils.h> #include <mediadrm/DrmUtils.h> using ::android::DrmUtils::toStatusTAidl; using ::android::DrmUtils::statusAidlToStatusT; using ::aidl::android::hardware::drm::DrmMetricNamedValue; using ::aidl::android::hardware::drm::DrmMetricNamedValue; using ::aidl::android::hardware::drm::DrmMetricValue; using ::aidl::android::hardware::drm::DrmMetricValue; Loading Loading @@ -511,7 +511,7 @@ status_t DrmHalAidl::openSession(DrmPlugin::SecurityLevel level, Vector<uint8_t> ::ndk::ScopedAStatus status = mPlugin->openSession(aSecurityLevel, &aSessionId); ::ndk::ScopedAStatus status = mPlugin->openSession(aSecurityLevel, &aSessionId); if (status.isOk()) sessionId = toVector(aSessionId); if (status.isOk()) sessionId = toVector(aSessionId); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); if (err == ERROR_DRM_RESOURCE_BUSY && retry) { if (err == ERROR_DRM_RESOURCE_BUSY && retry) { mLock.unlock(); mLock.unlock(); Loading Loading @@ -545,6 +545,7 @@ status_t DrmHalAidl::closeSession(Vector<uint8_t> const& sessionId) { std::vector<uint8_t> sessionIdAidl = toStdVec(sessionId); std::vector<uint8_t> sessionIdAidl = toStdVec(sessionId); ::ndk::ScopedAStatus status = mPlugin->closeSession(sessionIdAidl); ::ndk::ScopedAStatus status = mPlugin->closeSession(sessionIdAidl); status_t response = statusAidlToStatusT(status); if (status.isOk()) { if (status.isOk()) { DrmSessionManager::Instance()->removeSession(sessionId); DrmSessionManager::Instance()->removeSession(sessionId); for (auto i = mOpenSessions.begin(); i != mOpenSessions.end(); i++) { for (auto i = mOpenSessions.begin(); i != mOpenSessions.end(); i++) { Loading @@ -554,14 +555,11 @@ status_t DrmHalAidl::closeSession(Vector<uint8_t> const& sessionId) { } } } } status_t response = toStatusTAidl(status.getServiceSpecificError()); mMetrics.SetSessionEnd(sessionId); mMetrics.SetSessionEnd(sessionId); mMetrics.mCloseSessionCounter.Increment(response); return response; } } mMetrics.mCloseSessionCounter.Increment(DEAD_OBJECT); mMetrics.mCloseSessionCounter.Increment(response); return DEAD_OBJECT; return response; } } status_t DrmHalAidl::getKeyRequest(Vector<uint8_t> const& sessionId, status_t DrmHalAidl::getKeyRequest(Vector<uint8_t> const& sessionId, Loading Loading @@ -603,7 +601,7 @@ status_t DrmHalAidl::getKeyRequest(Vector<uint8_t> const& sessionId, *keyRequestType = toKeyRequestType(keyRequest.requestType); *keyRequestType = toKeyRequestType(keyRequest.requestType); } } err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); keyRequestTimer.SetAttribute(err); keyRequestTimer.SetAttribute(err); return err; return err; } } Loading @@ -626,7 +624,7 @@ status_t DrmHalAidl::provideKeyResponse(Vector<uint8_t> const& sessionId, mPlugin->provideKeyResponse(sessionIdAidl, responseAidl, &keySetIdsAidl); mPlugin->provideKeyResponse(sessionIdAidl, responseAidl, &keySetIdsAidl); if (status.isOk()) keySetId = toVector(keySetIdsAidl.keySetId); if (status.isOk()) keySetId = toVector(keySetIdsAidl.keySetId); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); keyResponseTimer.SetAttribute(err); keyResponseTimer.SetAttribute(err); return err; return err; } } Loading @@ -636,7 +634,7 @@ status_t DrmHalAidl::removeKeys(Vector<uint8_t> const& keySetId) { INIT_CHECK(); INIT_CHECK(); ::ndk::ScopedAStatus status = mPlugin->removeKeys(toStdVec(keySetId)); ::ndk::ScopedAStatus status = mPlugin->removeKeys(toStdVec(keySetId)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::restoreKeys(Vector<uint8_t> const& sessionId, status_t DrmHalAidl::restoreKeys(Vector<uint8_t> const& sessionId, Loading @@ -649,7 +647,7 @@ status_t DrmHalAidl::restoreKeys(Vector<uint8_t> const& sessionId, KeySetId keySetIdsAidl; KeySetId keySetIdsAidl; keySetIdsAidl.keySetId = toStdVec(keySetId); keySetIdsAidl.keySetId = toStdVec(keySetId); ::ndk::ScopedAStatus status = mPlugin->restoreKeys(toStdVec(sessionId), keySetIdsAidl); ::ndk::ScopedAStatus status = mPlugin->restoreKeys(toStdVec(sessionId), keySetIdsAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::queryKeyStatus(Vector<uint8_t> const& sessionId, status_t DrmHalAidl::queryKeyStatus(Vector<uint8_t> const& sessionId, Loading @@ -664,7 +662,7 @@ status_t DrmHalAidl::queryKeyStatus(Vector<uint8_t> const& sessionId, infoMap = toKeyedVector(infoMapAidl); infoMap = toKeyedVector(infoMapAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getProvisionRequest(String8 const& certType, String8 const& certAuthority, status_t DrmHalAidl::getProvisionRequest(String8 const& certType, String8 const& certAuthority, Loading @@ -681,7 +679,7 @@ status_t DrmHalAidl::getProvisionRequest(String8 const& certType, String8 const& request = toVector(requestAidl.request); request = toVector(requestAidl.request); defaultUrl = toString8(requestAidl.defaultUrl); defaultUrl = toString8(requestAidl.defaultUrl); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); mMetrics.mGetProvisionRequestCounter.Increment(err); mMetrics.mGetProvisionRequestCounter.Increment(err); return err; return err; } } Loading @@ -698,7 +696,7 @@ status_t DrmHalAidl::provideProvisionResponse(Vector<uint8_t> const& response, certificate = toVector(result.certificate); certificate = toVector(result.certificate); wrappedKey = toVector(result.wrappedKey); wrappedKey = toVector(result.wrappedKey); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); mMetrics.mProvideProvisionResponseCounter.Increment(err); mMetrics.mProvideProvisionResponseCounter.Increment(err); return err; return err; } } Loading @@ -712,7 +710,7 @@ status_t DrmHalAidl::getSecureStops(List<Vector<uint8_t>>& secureStops) { secureStops = toSecureStops(result); secureStops = toSecureStops(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getSecureStopIds(List<Vector<uint8_t>>& secureStopIds) { status_t DrmHalAidl::getSecureStopIds(List<Vector<uint8_t>>& secureStopIds) { Loading @@ -724,7 +722,7 @@ status_t DrmHalAidl::getSecureStopIds(List<Vector<uint8_t>>& secureStopIds) { secureStopIds = toSecureStopIds(result); secureStopIds = toSecureStopIds(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getSecureStop(Vector<uint8_t> const& ssid, Vector<uint8_t>& secureStop) { status_t DrmHalAidl::getSecureStop(Vector<uint8_t> const& ssid, Vector<uint8_t>& secureStop) { Loading @@ -739,7 +737,7 @@ status_t DrmHalAidl::getSecureStop(Vector<uint8_t> const& ssid, Vector<uint8_t>& secureStop = toVector(result.opaqueData); secureStop = toVector(result.opaqueData); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::releaseSecureStops(Vector<uint8_t> const& ssRelease) { status_t DrmHalAidl::releaseSecureStops(Vector<uint8_t> const& ssRelease) { Loading @@ -750,7 +748,7 @@ status_t DrmHalAidl::releaseSecureStops(Vector<uint8_t> const& ssRelease) { ssId.opaqueData = toStdVec(ssRelease); ssId.opaqueData = toStdVec(ssRelease); ::ndk::ScopedAStatus status = mPlugin->releaseSecureStops(ssId); ::ndk::ScopedAStatus status = mPlugin->releaseSecureStops(ssId); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::removeSecureStop(Vector<uint8_t> const& ssid) { status_t DrmHalAidl::removeSecureStop(Vector<uint8_t> const& ssid) { Loading @@ -761,7 +759,7 @@ status_t DrmHalAidl::removeSecureStop(Vector<uint8_t> const& ssid) { SecureStopId ssidAidl; SecureStopId ssidAidl; ssidAidl.secureStopId = toStdVec(ssid); ssidAidl.secureStopId = toStdVec(ssid); ::ndk::ScopedAStatus status = mPlugin->removeSecureStop(ssidAidl); ::ndk::ScopedAStatus status = mPlugin->removeSecureStop(ssidAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::removeAllSecureStops() { status_t DrmHalAidl::removeAllSecureStops() { Loading @@ -769,7 +767,7 @@ status_t DrmHalAidl::removeAllSecureStops() { INIT_CHECK(); INIT_CHECK(); ::ndk::ScopedAStatus status = mPlugin->releaseAllSecureStops(); ::ndk::ScopedAStatus status = mPlugin->releaseAllSecureStops(); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getHdcpLevels(DrmPlugin::HdcpLevel* connected, status_t DrmHalAidl::getHdcpLevels(DrmPlugin::HdcpLevel* connected, Loading @@ -790,7 +788,7 @@ status_t DrmHalAidl::getHdcpLevels(DrmPlugin::HdcpLevel* connected, *connected = toHdcpLevel(lvlsAidl.connectedLevel); *connected = toHdcpLevel(lvlsAidl.connectedLevel); *max = toHdcpLevel(lvlsAidl.maxLevel); *max = toHdcpLevel(lvlsAidl.maxLevel); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getNumberOfSessions(uint32_t* open, uint32_t* max) const { status_t DrmHalAidl::getNumberOfSessions(uint32_t* open, uint32_t* max) const { Loading @@ -810,7 +808,7 @@ status_t DrmHalAidl::getNumberOfSessions(uint32_t* open, uint32_t* max) const { *open = result.currentSessions; *open = result.currentSessions; *max = result.maxSessions; *max = result.maxSessions; return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getSecurityLevel(Vector<uint8_t> const& sessionId, status_t DrmHalAidl::getSecurityLevel(Vector<uint8_t> const& sessionId, Loading @@ -829,7 +827,7 @@ status_t DrmHalAidl::getSecurityLevel(Vector<uint8_t> const& sessionId, *level = toSecurityLevel(result); *level = toSecurityLevel(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getOfflineLicenseKeySetIds(List<Vector<uint8_t>>& keySetIds) const { status_t DrmHalAidl::getOfflineLicenseKeySetIds(List<Vector<uint8_t>>& keySetIds) const { Loading @@ -841,7 +839,7 @@ status_t DrmHalAidl::getOfflineLicenseKeySetIds(List<Vector<uint8_t>>& keySetIds keySetIds = toKeySetIds(result); keySetIds = toKeySetIds(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::removeOfflineLicense(Vector<uint8_t> const& keySetId) { status_t DrmHalAidl::removeOfflineLicense(Vector<uint8_t> const& keySetId) { Loading @@ -851,7 +849,7 @@ status_t DrmHalAidl::removeOfflineLicense(Vector<uint8_t> const& keySetId) { KeySetId keySetIdAidl; KeySetId keySetIdAidl; keySetIdAidl.keySetId = toStdVec(keySetId); keySetIdAidl.keySetId = toStdVec(keySetId); ::ndk::ScopedAStatus status = mPlugin->removeOfflineLicense(keySetIdAidl); ::ndk::ScopedAStatus status = mPlugin->removeOfflineLicense(keySetIdAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getOfflineLicenseState(Vector<uint8_t> const& keySetId, status_t DrmHalAidl::getOfflineLicenseState(Vector<uint8_t> const& keySetId, Loading @@ -869,7 +867,7 @@ status_t DrmHalAidl::getOfflineLicenseState(Vector<uint8_t> const& keySetId, *licenseState = toOfflineLicenseState(result); *licenseState = toOfflineLicenseState(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getPropertyString(String8 const& name, String8& value) const { status_t DrmHalAidl::getPropertyString(String8 const& name, String8& value) const { Loading @@ -887,7 +885,7 @@ status_t DrmHalAidl::getPropertyStringInternal(String8 const& name, String8& val value = toString8(result); value = toString8(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getPropertyByteArray(String8 const& name, Vector<uint8_t>& value) const { status_t DrmHalAidl::getPropertyByteArray(String8 const& name, Vector<uint8_t>& value) const { Loading @@ -907,7 +905,7 @@ status_t DrmHalAidl::getPropertyByteArrayInternal(String8 const& name, ::ndk::ScopedAStatus status = mPlugin->getPropertyByteArray(toStdString(name), &result); ::ndk::ScopedAStatus status = mPlugin->getPropertyByteArray(toStdString(name), &result); value = toVector(result); value = toVector(result); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); if (name == kPropertyDeviceUniqueId) { if (name == kPropertyDeviceUniqueId) { mMetrics.mGetDeviceUniqueIdCounter.Increment(err); mMetrics.mGetDeviceUniqueIdCounter.Increment(err); } } Loading @@ -919,7 +917,7 @@ status_t DrmHalAidl::setPropertyString(String8 const& name, String8 const& value INIT_CHECK(); INIT_CHECK(); ::ndk::ScopedAStatus status = mPlugin->setPropertyString(toStdString(name), toStdString(value)); ::ndk::ScopedAStatus status = mPlugin->setPropertyString(toStdString(name), toStdString(value)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::setPropertyByteArray(String8 const& name, Vector<uint8_t> const& value) const { status_t DrmHalAidl::setPropertyByteArray(String8 const& name, Vector<uint8_t> const& value) const { Loading @@ -927,7 +925,7 @@ status_t DrmHalAidl::setPropertyByteArray(String8 const& name, Vector<uint8_t> c INIT_CHECK(); INIT_CHECK(); ::ndk::ScopedAStatus status = mPlugin->setPropertyByteArray(toStdString(name), toStdVec(value)); ::ndk::ScopedAStatus status = mPlugin->setPropertyByteArray(toStdString(name), toStdVec(value)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getMetrics(const sp<IDrmMetricsConsumer>& consumer) { status_t DrmHalAidl::getMetrics(const sp<IDrmMetricsConsumer>& consumer) { Loading Loading @@ -963,7 +961,7 @@ status_t DrmHalAidl::getMetrics(const sp<IDrmMetricsConsumer>& consumer) { consumer->consumeHidlMetrics(vendor, pluginMetrics); consumer->consumeHidlMetrics(vendor, pluginMetrics); } } err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); return err; return err; } } Loading @@ -977,7 +975,7 @@ status_t DrmHalAidl::setCipherAlgorithm(Vector<uint8_t> const& sessionId, ::ndk::ScopedAStatus status = ::ndk::ScopedAStatus status = mPlugin->setCipherAlgorithm(toStdVec(sessionId), toStdString(algorithm)); mPlugin->setCipherAlgorithm(toStdVec(sessionId), toStdString(algorithm)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::setMacAlgorithm(Vector<uint8_t> const& sessionId, String8 const& algorithm) { status_t DrmHalAidl::setMacAlgorithm(Vector<uint8_t> const& sessionId, String8 const& algorithm) { Loading @@ -988,7 +986,7 @@ status_t DrmHalAidl::setMacAlgorithm(Vector<uint8_t> const& sessionId, String8 c ::ndk::ScopedAStatus status = ::ndk::ScopedAStatus status = mPlugin->setMacAlgorithm(toStdVec(sessionId), toStdString(algorithm)); mPlugin->setMacAlgorithm(toStdVec(sessionId), toStdString(algorithm)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::encrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, status_t DrmHalAidl::encrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, Loading @@ -1005,7 +1003,7 @@ status_t DrmHalAidl::encrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> c output = toVector(result); output = toVector(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::decrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, status_t DrmHalAidl::decrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, Loading @@ -1022,7 +1020,7 @@ status_t DrmHalAidl::decrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> c output = toVector(result); output = toVector(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::sign(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, status_t DrmHalAidl::sign(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, Loading @@ -1038,7 +1036,7 @@ status_t DrmHalAidl::sign(Vector<uint8_t> const& sessionId, Vector<uint8_t> cons signature = toVector(result); signature = toVector(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::verify(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, status_t DrmHalAidl::verify(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, Loading @@ -1052,7 +1050,7 @@ status_t DrmHalAidl::verify(Vector<uint8_t> const& sessionId, Vector<uint8_t> co ::ndk::ScopedAStatus status = mPlugin->verify(toStdVec(sessionId), toStdVec(keyId), ::ndk::ScopedAStatus status = mPlugin->verify(toStdVec(sessionId), toStdVec(keyId), toStdVec(message), toStdVec(signature), &match); toStdVec(message), toStdVec(signature), &match); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::signRSA(Vector<uint8_t> const& sessionId, String8 const& algorithm, status_t DrmHalAidl::signRSA(Vector<uint8_t> const& sessionId, String8 const& algorithm, Loading @@ -1070,7 +1068,7 @@ status_t DrmHalAidl::signRSA(Vector<uint8_t> const& sessionId, String8 const& al signature = toVector(result); signature = toVector(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::requiresSecureDecoder(const char* mime, bool* required) const { status_t DrmHalAidl::requiresSecureDecoder(const char* mime, bool* required) const { Loading @@ -1095,12 +1093,13 @@ status_t DrmHalAidl::requiresSecureDecoder(const char* mime, DrmPlugin::Security auto aLevel = toAidlSecurityLevel(securityLevel); auto aLevel = toAidlSecurityLevel(securityLevel); std::string mimeAidl(mime); std::string mimeAidl(mime); ::ndk::ScopedAStatus status = mPlugin->requiresSecureDecoder(mimeAidl, aLevel, required); ::ndk::ScopedAStatus status = mPlugin->requiresSecureDecoder(mimeAidl, aLevel, required); status_t err = statusAidlToStatusT(status); if (!status.isOk()) { if (!status.isOk()) { DrmUtils::LOG2BE("requiresSecureDecoder txn failed: %d", status.getServiceSpecificError()); DrmUtils::LOG2BE("requiresSecureDecoder txn failed: %d", status.getServiceSpecificError()); return DEAD_OBJECT; } } return OK; return err; } } status_t DrmHalAidl::setPlaybackId(Vector<uint8_t> const& sessionId, const char* playbackId) { status_t DrmHalAidl::setPlaybackId(Vector<uint8_t> const& sessionId, const char* playbackId) { Loading @@ -1108,7 +1107,7 @@ status_t DrmHalAidl::setPlaybackId(Vector<uint8_t> const& sessionId, const char* INIT_CHECK(); INIT_CHECK(); std::string playbackIdAidl(playbackId); std::string playbackIdAidl(playbackId); ::ndk::ScopedAStatus status = mPlugin->setPlaybackId(toStdVec(sessionId), playbackIdAidl); ::ndk::ScopedAStatus status = mPlugin->setPlaybackId(toStdVec(sessionId), playbackIdAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getLogMessages(Vector<drm::V1_4::LogMessage>& logs) const { status_t DrmHalAidl::getLogMessages(Vector<drm::V1_4::LogMessage>& logs) const { Loading drm/libmediadrm/DrmHalHidl.cpp +3 −2 Original line number Original line Diff line number Diff line Loading @@ -330,13 +330,14 @@ void DrmHalHidl::cleanup() { std::vector<sp<IDrmFactory>> DrmHalHidl::makeDrmFactories() { std::vector<sp<IDrmFactory>> DrmHalHidl::makeDrmFactories() { static std::vector<sp<IDrmFactory>> factories(DrmUtils::MakeDrmFactories()); static std::vector<sp<IDrmFactory>> factories(DrmUtils::MakeDrmFactories()); if (factories.size() == 0) { if (factories.size() == 0) { // must be in passthrough mode, load the default passthrough service DrmUtils::LOG2BI("No hidl drm factories found"); // could be in passthrough mode, load the default passthrough service auto passthrough = IDrmFactory::getService(); auto passthrough = IDrmFactory::getService(); if (passthrough != NULL) { if (passthrough != NULL) { DrmUtils::LOG2BI("makeDrmFactories: using default passthrough drm instance"); DrmUtils::LOG2BI("makeDrmFactories: using default passthrough drm instance"); factories.push_back(passthrough); factories.push_back(passthrough); } else { } else { DrmUtils::LOG2BE("Failed to find any drm factories"); DrmUtils::LOG2BE("Failed to find passthrough drm factories"); } } } } return factories; return factories; Loading drm/libmediadrm/interface/mediadrm/DrmUtils.h +4 −2 Original line number Original line Diff line number Diff line Loading @@ -186,8 +186,10 @@ inline status_t toStatusT(const android::hardware::Return<T> &status) { return toStatusT_1_4(err); return toStatusT_1_4(err); } } inline status_t toStatusTAidl(int32_t serviceError) { inline status_t statusAidlToStatusT(::ndk::ScopedAStatus &statusAidl) { auto status = static_cast<StatusAidl>(serviceError); if (statusAidl.isOk()) return OK; if (statusAidl.getExceptionCode() != EX_SERVICE_SPECIFIC) return DEAD_OBJECT; auto status = static_cast<StatusAidl>(statusAidl.getServiceSpecificError()); switch (status) { switch (status) { case StatusAidl::OK: case StatusAidl::OK: return OK; return OK; Loading drm/mediadrm/plugins/clearkey/aidl/DrmPlugin.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -175,7 +175,7 @@ void DrmPlugin::installSecureStop(const std::vector<uint8_t>& sessionId) { UNUSED(in_optionalParameters); UNUSED(in_optionalParameters); KeyRequestType keyRequestType = KeyRequestType::UNKNOWN; KeyRequestType keyRequestType = KeyRequestType::UNKNOWN; std::string defaultUrl(""); std::string defaultUrl("https://default.url"); _aidl_return->request = {}; _aidl_return->request = {}; _aidl_return->requestType = keyRequestType; _aidl_return->requestType = keyRequestType; Loading Loading
drm/libmediadrm/CryptoHalAidl.cpp +7 −8 Original line number Original line Diff line number Diff line Loading @@ -41,7 +41,7 @@ using ::aidl::android::hardware::drm::Uuid; using ::aidl::android::hardware::common::Ashmem; using ::aidl::android::hardware::common::Ashmem; using ::android::sp; using ::android::sp; using ::android::DrmUtils::toStatusTAidl; using ::android::DrmUtils::statusAidlToStatusT; using ::android::hardware::hidl_array; using ::android::hardware::hidl_array; using ::android::hardware::hidl_handle; using ::android::hardware::hidl_handle; using ::android::hardware::hidl_memory; using ::android::hardware::hidl_memory; Loading Loading @@ -281,7 +281,7 @@ status_t CryptoHalAidl::setMediaDrmSession(const Vector<uint8_t>& sessionId) { } } auto err = mPlugin->setMediaDrmSession(toStdVec(sessionId)); auto err = mPlugin->setMediaDrmSession(toStdVec(sessionId)); return err.isOk() ? toStatusTAidl(err.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(err); } } ssize_t CryptoHalAidl::decrypt(const uint8_t keyId[16], const uint8_t iv[16], ssize_t CryptoHalAidl::decrypt(const uint8_t keyId[16], const uint8_t iv[16], Loading Loading @@ -350,13 +350,12 @@ ssize_t CryptoHalAidl::decrypt(const uint8_t keyId[16], const uint8_t iv[16], std::vector<uint8_t> keyIdAidl(toStdVec(keyId, 16)); std::vector<uint8_t> keyIdAidl(toStdVec(keyId, 16)); std::vector<uint8_t> ivAidl(toStdVec(iv, 16)); std::vector<uint8_t> ivAidl(toStdVec(iv, 16)); DecryptResult result; DecryptResult result; err = mPlugin->decrypt(secure, keyIdAidl, ivAidl, aMode, aPattern, stdSubSamples, ::ndk::ScopedAStatus statusAidl = mPlugin->decrypt(secure, keyIdAidl, ivAidl, aMode, aPattern, stdSubSamples, hidlSharedBufferToAidlSharedBuffer(hSource), offset, hidlSharedBufferToAidlSharedBuffer(hSource), offset, hidlDestinationBufferToAidlDestinationBuffer(hDestination), &result) hidlDestinationBufferToAidlDestinationBuffer(hDestination), &result); .isOk() ? OK : DEAD_OBJECT; err = statusAidlToStatusT(statusAidl); *errorDetailMsg = toString8(result.detailedError); *errorDetailMsg = toString8(result.detailedError); if (err != OK) { if (err != OK) { ALOGE("Failed on decrypt, error message:%s, bytes written:%d", result.detailedError.c_str(), ALOGE("Failed on decrypt, error message:%s, bytes written:%d", result.detailedError.c_str(), Loading
drm/libmediadrm/DrmHalAidl.cpp +40 −41 Original line number Original line Diff line number Diff line Loading @@ -28,7 +28,7 @@ #include <mediadrm/DrmSessionManager.h> #include <mediadrm/DrmSessionManager.h> #include <mediadrm/DrmUtils.h> #include <mediadrm/DrmUtils.h> using ::android::DrmUtils::toStatusTAidl; using ::android::DrmUtils::statusAidlToStatusT; using ::aidl::android::hardware::drm::DrmMetricNamedValue; using ::aidl::android::hardware::drm::DrmMetricNamedValue; using ::aidl::android::hardware::drm::DrmMetricValue; using ::aidl::android::hardware::drm::DrmMetricValue; Loading Loading @@ -511,7 +511,7 @@ status_t DrmHalAidl::openSession(DrmPlugin::SecurityLevel level, Vector<uint8_t> ::ndk::ScopedAStatus status = mPlugin->openSession(aSecurityLevel, &aSessionId); ::ndk::ScopedAStatus status = mPlugin->openSession(aSecurityLevel, &aSessionId); if (status.isOk()) sessionId = toVector(aSessionId); if (status.isOk()) sessionId = toVector(aSessionId); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); if (err == ERROR_DRM_RESOURCE_BUSY && retry) { if (err == ERROR_DRM_RESOURCE_BUSY && retry) { mLock.unlock(); mLock.unlock(); Loading Loading @@ -545,6 +545,7 @@ status_t DrmHalAidl::closeSession(Vector<uint8_t> const& sessionId) { std::vector<uint8_t> sessionIdAidl = toStdVec(sessionId); std::vector<uint8_t> sessionIdAidl = toStdVec(sessionId); ::ndk::ScopedAStatus status = mPlugin->closeSession(sessionIdAidl); ::ndk::ScopedAStatus status = mPlugin->closeSession(sessionIdAidl); status_t response = statusAidlToStatusT(status); if (status.isOk()) { if (status.isOk()) { DrmSessionManager::Instance()->removeSession(sessionId); DrmSessionManager::Instance()->removeSession(sessionId); for (auto i = mOpenSessions.begin(); i != mOpenSessions.end(); i++) { for (auto i = mOpenSessions.begin(); i != mOpenSessions.end(); i++) { Loading @@ -554,14 +555,11 @@ status_t DrmHalAidl::closeSession(Vector<uint8_t> const& sessionId) { } } } } status_t response = toStatusTAidl(status.getServiceSpecificError()); mMetrics.SetSessionEnd(sessionId); mMetrics.SetSessionEnd(sessionId); mMetrics.mCloseSessionCounter.Increment(response); return response; } } mMetrics.mCloseSessionCounter.Increment(DEAD_OBJECT); mMetrics.mCloseSessionCounter.Increment(response); return DEAD_OBJECT; return response; } } status_t DrmHalAidl::getKeyRequest(Vector<uint8_t> const& sessionId, status_t DrmHalAidl::getKeyRequest(Vector<uint8_t> const& sessionId, Loading Loading @@ -603,7 +601,7 @@ status_t DrmHalAidl::getKeyRequest(Vector<uint8_t> const& sessionId, *keyRequestType = toKeyRequestType(keyRequest.requestType); *keyRequestType = toKeyRequestType(keyRequest.requestType); } } err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); keyRequestTimer.SetAttribute(err); keyRequestTimer.SetAttribute(err); return err; return err; } } Loading @@ -626,7 +624,7 @@ status_t DrmHalAidl::provideKeyResponse(Vector<uint8_t> const& sessionId, mPlugin->provideKeyResponse(sessionIdAidl, responseAidl, &keySetIdsAidl); mPlugin->provideKeyResponse(sessionIdAidl, responseAidl, &keySetIdsAidl); if (status.isOk()) keySetId = toVector(keySetIdsAidl.keySetId); if (status.isOk()) keySetId = toVector(keySetIdsAidl.keySetId); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); keyResponseTimer.SetAttribute(err); keyResponseTimer.SetAttribute(err); return err; return err; } } Loading @@ -636,7 +634,7 @@ status_t DrmHalAidl::removeKeys(Vector<uint8_t> const& keySetId) { INIT_CHECK(); INIT_CHECK(); ::ndk::ScopedAStatus status = mPlugin->removeKeys(toStdVec(keySetId)); ::ndk::ScopedAStatus status = mPlugin->removeKeys(toStdVec(keySetId)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::restoreKeys(Vector<uint8_t> const& sessionId, status_t DrmHalAidl::restoreKeys(Vector<uint8_t> const& sessionId, Loading @@ -649,7 +647,7 @@ status_t DrmHalAidl::restoreKeys(Vector<uint8_t> const& sessionId, KeySetId keySetIdsAidl; KeySetId keySetIdsAidl; keySetIdsAidl.keySetId = toStdVec(keySetId); keySetIdsAidl.keySetId = toStdVec(keySetId); ::ndk::ScopedAStatus status = mPlugin->restoreKeys(toStdVec(sessionId), keySetIdsAidl); ::ndk::ScopedAStatus status = mPlugin->restoreKeys(toStdVec(sessionId), keySetIdsAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::queryKeyStatus(Vector<uint8_t> const& sessionId, status_t DrmHalAidl::queryKeyStatus(Vector<uint8_t> const& sessionId, Loading @@ -664,7 +662,7 @@ status_t DrmHalAidl::queryKeyStatus(Vector<uint8_t> const& sessionId, infoMap = toKeyedVector(infoMapAidl); infoMap = toKeyedVector(infoMapAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getProvisionRequest(String8 const& certType, String8 const& certAuthority, status_t DrmHalAidl::getProvisionRequest(String8 const& certType, String8 const& certAuthority, Loading @@ -681,7 +679,7 @@ status_t DrmHalAidl::getProvisionRequest(String8 const& certType, String8 const& request = toVector(requestAidl.request); request = toVector(requestAidl.request); defaultUrl = toString8(requestAidl.defaultUrl); defaultUrl = toString8(requestAidl.defaultUrl); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); mMetrics.mGetProvisionRequestCounter.Increment(err); mMetrics.mGetProvisionRequestCounter.Increment(err); return err; return err; } } Loading @@ -698,7 +696,7 @@ status_t DrmHalAidl::provideProvisionResponse(Vector<uint8_t> const& response, certificate = toVector(result.certificate); certificate = toVector(result.certificate); wrappedKey = toVector(result.wrappedKey); wrappedKey = toVector(result.wrappedKey); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); mMetrics.mProvideProvisionResponseCounter.Increment(err); mMetrics.mProvideProvisionResponseCounter.Increment(err); return err; return err; } } Loading @@ -712,7 +710,7 @@ status_t DrmHalAidl::getSecureStops(List<Vector<uint8_t>>& secureStops) { secureStops = toSecureStops(result); secureStops = toSecureStops(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getSecureStopIds(List<Vector<uint8_t>>& secureStopIds) { status_t DrmHalAidl::getSecureStopIds(List<Vector<uint8_t>>& secureStopIds) { Loading @@ -724,7 +722,7 @@ status_t DrmHalAidl::getSecureStopIds(List<Vector<uint8_t>>& secureStopIds) { secureStopIds = toSecureStopIds(result); secureStopIds = toSecureStopIds(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getSecureStop(Vector<uint8_t> const& ssid, Vector<uint8_t>& secureStop) { status_t DrmHalAidl::getSecureStop(Vector<uint8_t> const& ssid, Vector<uint8_t>& secureStop) { Loading @@ -739,7 +737,7 @@ status_t DrmHalAidl::getSecureStop(Vector<uint8_t> const& ssid, Vector<uint8_t>& secureStop = toVector(result.opaqueData); secureStop = toVector(result.opaqueData); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::releaseSecureStops(Vector<uint8_t> const& ssRelease) { status_t DrmHalAidl::releaseSecureStops(Vector<uint8_t> const& ssRelease) { Loading @@ -750,7 +748,7 @@ status_t DrmHalAidl::releaseSecureStops(Vector<uint8_t> const& ssRelease) { ssId.opaqueData = toStdVec(ssRelease); ssId.opaqueData = toStdVec(ssRelease); ::ndk::ScopedAStatus status = mPlugin->releaseSecureStops(ssId); ::ndk::ScopedAStatus status = mPlugin->releaseSecureStops(ssId); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::removeSecureStop(Vector<uint8_t> const& ssid) { status_t DrmHalAidl::removeSecureStop(Vector<uint8_t> const& ssid) { Loading @@ -761,7 +759,7 @@ status_t DrmHalAidl::removeSecureStop(Vector<uint8_t> const& ssid) { SecureStopId ssidAidl; SecureStopId ssidAidl; ssidAidl.secureStopId = toStdVec(ssid); ssidAidl.secureStopId = toStdVec(ssid); ::ndk::ScopedAStatus status = mPlugin->removeSecureStop(ssidAidl); ::ndk::ScopedAStatus status = mPlugin->removeSecureStop(ssidAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::removeAllSecureStops() { status_t DrmHalAidl::removeAllSecureStops() { Loading @@ -769,7 +767,7 @@ status_t DrmHalAidl::removeAllSecureStops() { INIT_CHECK(); INIT_CHECK(); ::ndk::ScopedAStatus status = mPlugin->releaseAllSecureStops(); ::ndk::ScopedAStatus status = mPlugin->releaseAllSecureStops(); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getHdcpLevels(DrmPlugin::HdcpLevel* connected, status_t DrmHalAidl::getHdcpLevels(DrmPlugin::HdcpLevel* connected, Loading @@ -790,7 +788,7 @@ status_t DrmHalAidl::getHdcpLevels(DrmPlugin::HdcpLevel* connected, *connected = toHdcpLevel(lvlsAidl.connectedLevel); *connected = toHdcpLevel(lvlsAidl.connectedLevel); *max = toHdcpLevel(lvlsAidl.maxLevel); *max = toHdcpLevel(lvlsAidl.maxLevel); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getNumberOfSessions(uint32_t* open, uint32_t* max) const { status_t DrmHalAidl::getNumberOfSessions(uint32_t* open, uint32_t* max) const { Loading @@ -810,7 +808,7 @@ status_t DrmHalAidl::getNumberOfSessions(uint32_t* open, uint32_t* max) const { *open = result.currentSessions; *open = result.currentSessions; *max = result.maxSessions; *max = result.maxSessions; return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getSecurityLevel(Vector<uint8_t> const& sessionId, status_t DrmHalAidl::getSecurityLevel(Vector<uint8_t> const& sessionId, Loading @@ -829,7 +827,7 @@ status_t DrmHalAidl::getSecurityLevel(Vector<uint8_t> const& sessionId, *level = toSecurityLevel(result); *level = toSecurityLevel(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getOfflineLicenseKeySetIds(List<Vector<uint8_t>>& keySetIds) const { status_t DrmHalAidl::getOfflineLicenseKeySetIds(List<Vector<uint8_t>>& keySetIds) const { Loading @@ -841,7 +839,7 @@ status_t DrmHalAidl::getOfflineLicenseKeySetIds(List<Vector<uint8_t>>& keySetIds keySetIds = toKeySetIds(result); keySetIds = toKeySetIds(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::removeOfflineLicense(Vector<uint8_t> const& keySetId) { status_t DrmHalAidl::removeOfflineLicense(Vector<uint8_t> const& keySetId) { Loading @@ -851,7 +849,7 @@ status_t DrmHalAidl::removeOfflineLicense(Vector<uint8_t> const& keySetId) { KeySetId keySetIdAidl; KeySetId keySetIdAidl; keySetIdAidl.keySetId = toStdVec(keySetId); keySetIdAidl.keySetId = toStdVec(keySetId); ::ndk::ScopedAStatus status = mPlugin->removeOfflineLicense(keySetIdAidl); ::ndk::ScopedAStatus status = mPlugin->removeOfflineLicense(keySetIdAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getOfflineLicenseState(Vector<uint8_t> const& keySetId, status_t DrmHalAidl::getOfflineLicenseState(Vector<uint8_t> const& keySetId, Loading @@ -869,7 +867,7 @@ status_t DrmHalAidl::getOfflineLicenseState(Vector<uint8_t> const& keySetId, *licenseState = toOfflineLicenseState(result); *licenseState = toOfflineLicenseState(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getPropertyString(String8 const& name, String8& value) const { status_t DrmHalAidl::getPropertyString(String8 const& name, String8& value) const { Loading @@ -887,7 +885,7 @@ status_t DrmHalAidl::getPropertyStringInternal(String8 const& name, String8& val value = toString8(result); value = toString8(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getPropertyByteArray(String8 const& name, Vector<uint8_t>& value) const { status_t DrmHalAidl::getPropertyByteArray(String8 const& name, Vector<uint8_t>& value) const { Loading @@ -907,7 +905,7 @@ status_t DrmHalAidl::getPropertyByteArrayInternal(String8 const& name, ::ndk::ScopedAStatus status = mPlugin->getPropertyByteArray(toStdString(name), &result); ::ndk::ScopedAStatus status = mPlugin->getPropertyByteArray(toStdString(name), &result); value = toVector(result); value = toVector(result); err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); if (name == kPropertyDeviceUniqueId) { if (name == kPropertyDeviceUniqueId) { mMetrics.mGetDeviceUniqueIdCounter.Increment(err); mMetrics.mGetDeviceUniqueIdCounter.Increment(err); } } Loading @@ -919,7 +917,7 @@ status_t DrmHalAidl::setPropertyString(String8 const& name, String8 const& value INIT_CHECK(); INIT_CHECK(); ::ndk::ScopedAStatus status = mPlugin->setPropertyString(toStdString(name), toStdString(value)); ::ndk::ScopedAStatus status = mPlugin->setPropertyString(toStdString(name), toStdString(value)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::setPropertyByteArray(String8 const& name, Vector<uint8_t> const& value) const { status_t DrmHalAidl::setPropertyByteArray(String8 const& name, Vector<uint8_t> const& value) const { Loading @@ -927,7 +925,7 @@ status_t DrmHalAidl::setPropertyByteArray(String8 const& name, Vector<uint8_t> c INIT_CHECK(); INIT_CHECK(); ::ndk::ScopedAStatus status = mPlugin->setPropertyByteArray(toStdString(name), toStdVec(value)); ::ndk::ScopedAStatus status = mPlugin->setPropertyByteArray(toStdString(name), toStdVec(value)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getMetrics(const sp<IDrmMetricsConsumer>& consumer) { status_t DrmHalAidl::getMetrics(const sp<IDrmMetricsConsumer>& consumer) { Loading Loading @@ -963,7 +961,7 @@ status_t DrmHalAidl::getMetrics(const sp<IDrmMetricsConsumer>& consumer) { consumer->consumeHidlMetrics(vendor, pluginMetrics); consumer->consumeHidlMetrics(vendor, pluginMetrics); } } err = status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; err = statusAidlToStatusT(status); return err; return err; } } Loading @@ -977,7 +975,7 @@ status_t DrmHalAidl::setCipherAlgorithm(Vector<uint8_t> const& sessionId, ::ndk::ScopedAStatus status = ::ndk::ScopedAStatus status = mPlugin->setCipherAlgorithm(toStdVec(sessionId), toStdString(algorithm)); mPlugin->setCipherAlgorithm(toStdVec(sessionId), toStdString(algorithm)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::setMacAlgorithm(Vector<uint8_t> const& sessionId, String8 const& algorithm) { status_t DrmHalAidl::setMacAlgorithm(Vector<uint8_t> const& sessionId, String8 const& algorithm) { Loading @@ -988,7 +986,7 @@ status_t DrmHalAidl::setMacAlgorithm(Vector<uint8_t> const& sessionId, String8 c ::ndk::ScopedAStatus status = ::ndk::ScopedAStatus status = mPlugin->setMacAlgorithm(toStdVec(sessionId), toStdString(algorithm)); mPlugin->setMacAlgorithm(toStdVec(sessionId), toStdString(algorithm)); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::encrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, status_t DrmHalAidl::encrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, Loading @@ -1005,7 +1003,7 @@ status_t DrmHalAidl::encrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> c output = toVector(result); output = toVector(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::decrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, status_t DrmHalAidl::decrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, Loading @@ -1022,7 +1020,7 @@ status_t DrmHalAidl::decrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> c output = toVector(result); output = toVector(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::sign(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, status_t DrmHalAidl::sign(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, Loading @@ -1038,7 +1036,7 @@ status_t DrmHalAidl::sign(Vector<uint8_t> const& sessionId, Vector<uint8_t> cons signature = toVector(result); signature = toVector(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::verify(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, status_t DrmHalAidl::verify(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId, Loading @@ -1052,7 +1050,7 @@ status_t DrmHalAidl::verify(Vector<uint8_t> const& sessionId, Vector<uint8_t> co ::ndk::ScopedAStatus status = mPlugin->verify(toStdVec(sessionId), toStdVec(keyId), ::ndk::ScopedAStatus status = mPlugin->verify(toStdVec(sessionId), toStdVec(keyId), toStdVec(message), toStdVec(signature), &match); toStdVec(message), toStdVec(signature), &match); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::signRSA(Vector<uint8_t> const& sessionId, String8 const& algorithm, status_t DrmHalAidl::signRSA(Vector<uint8_t> const& sessionId, String8 const& algorithm, Loading @@ -1070,7 +1068,7 @@ status_t DrmHalAidl::signRSA(Vector<uint8_t> const& sessionId, String8 const& al signature = toVector(result); signature = toVector(result); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::requiresSecureDecoder(const char* mime, bool* required) const { status_t DrmHalAidl::requiresSecureDecoder(const char* mime, bool* required) const { Loading @@ -1095,12 +1093,13 @@ status_t DrmHalAidl::requiresSecureDecoder(const char* mime, DrmPlugin::Security auto aLevel = toAidlSecurityLevel(securityLevel); auto aLevel = toAidlSecurityLevel(securityLevel); std::string mimeAidl(mime); std::string mimeAidl(mime); ::ndk::ScopedAStatus status = mPlugin->requiresSecureDecoder(mimeAidl, aLevel, required); ::ndk::ScopedAStatus status = mPlugin->requiresSecureDecoder(mimeAidl, aLevel, required); status_t err = statusAidlToStatusT(status); if (!status.isOk()) { if (!status.isOk()) { DrmUtils::LOG2BE("requiresSecureDecoder txn failed: %d", status.getServiceSpecificError()); DrmUtils::LOG2BE("requiresSecureDecoder txn failed: %d", status.getServiceSpecificError()); return DEAD_OBJECT; } } return OK; return err; } } status_t DrmHalAidl::setPlaybackId(Vector<uint8_t> const& sessionId, const char* playbackId) { status_t DrmHalAidl::setPlaybackId(Vector<uint8_t> const& sessionId, const char* playbackId) { Loading @@ -1108,7 +1107,7 @@ status_t DrmHalAidl::setPlaybackId(Vector<uint8_t> const& sessionId, const char* INIT_CHECK(); INIT_CHECK(); std::string playbackIdAidl(playbackId); std::string playbackIdAidl(playbackId); ::ndk::ScopedAStatus status = mPlugin->setPlaybackId(toStdVec(sessionId), playbackIdAidl); ::ndk::ScopedAStatus status = mPlugin->setPlaybackId(toStdVec(sessionId), playbackIdAidl); return status.isOk() ? toStatusTAidl(status.getServiceSpecificError()) : DEAD_OBJECT; return statusAidlToStatusT(status); } } status_t DrmHalAidl::getLogMessages(Vector<drm::V1_4::LogMessage>& logs) const { status_t DrmHalAidl::getLogMessages(Vector<drm::V1_4::LogMessage>& logs) const { Loading
drm/libmediadrm/DrmHalHidl.cpp +3 −2 Original line number Original line Diff line number Diff line Loading @@ -330,13 +330,14 @@ void DrmHalHidl::cleanup() { std::vector<sp<IDrmFactory>> DrmHalHidl::makeDrmFactories() { std::vector<sp<IDrmFactory>> DrmHalHidl::makeDrmFactories() { static std::vector<sp<IDrmFactory>> factories(DrmUtils::MakeDrmFactories()); static std::vector<sp<IDrmFactory>> factories(DrmUtils::MakeDrmFactories()); if (factories.size() == 0) { if (factories.size() == 0) { // must be in passthrough mode, load the default passthrough service DrmUtils::LOG2BI("No hidl drm factories found"); // could be in passthrough mode, load the default passthrough service auto passthrough = IDrmFactory::getService(); auto passthrough = IDrmFactory::getService(); if (passthrough != NULL) { if (passthrough != NULL) { DrmUtils::LOG2BI("makeDrmFactories: using default passthrough drm instance"); DrmUtils::LOG2BI("makeDrmFactories: using default passthrough drm instance"); factories.push_back(passthrough); factories.push_back(passthrough); } else { } else { DrmUtils::LOG2BE("Failed to find any drm factories"); DrmUtils::LOG2BE("Failed to find passthrough drm factories"); } } } } return factories; return factories; Loading
drm/libmediadrm/interface/mediadrm/DrmUtils.h +4 −2 Original line number Original line Diff line number Diff line Loading @@ -186,8 +186,10 @@ inline status_t toStatusT(const android::hardware::Return<T> &status) { return toStatusT_1_4(err); return toStatusT_1_4(err); } } inline status_t toStatusTAidl(int32_t serviceError) { inline status_t statusAidlToStatusT(::ndk::ScopedAStatus &statusAidl) { auto status = static_cast<StatusAidl>(serviceError); if (statusAidl.isOk()) return OK; if (statusAidl.getExceptionCode() != EX_SERVICE_SPECIFIC) return DEAD_OBJECT; auto status = static_cast<StatusAidl>(statusAidl.getServiceSpecificError()); switch (status) { switch (status) { case StatusAidl::OK: case StatusAidl::OK: return OK; return OK; Loading
drm/mediadrm/plugins/clearkey/aidl/DrmPlugin.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -175,7 +175,7 @@ void DrmPlugin::installSecureStop(const std::vector<uint8_t>& sessionId) { UNUSED(in_optionalParameters); UNUSED(in_optionalParameters); KeyRequestType keyRequestType = KeyRequestType::UNKNOWN; KeyRequestType keyRequestType = KeyRequestType::UNKNOWN; std::string defaultUrl(""); std::string defaultUrl("https://default.url"); _aidl_return->request = {}; _aidl_return->request = {}; _aidl_return->requestType = keyRequestType; _aidl_return->requestType = keyRequestType; Loading