/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ANDROID_HARDWARE_DRM_V1_0__DRMPLUGIN_H #define ANDROID_HARDWARE_DRM_V1_0__DRMPLUGIN_H #include #include #include #include namespace android { namespace hardware { namespace drm { namespace V1_0 { namespace implementation { using ::android::hardware::drm::V1_0::EventType; using ::android::hardware::drm::V1_0::IDrmPlugin; using ::android::hardware::drm::V1_0::IDrmPluginListener; using ::android::hardware::drm::V1_0::KeyRequestType; using ::android::hardware::drm::V1_0::KeyStatus; using ::android::hardware::drm::V1_0::KeyType; using ::android::hardware::drm::V1_0::KeyValue; using ::android::hardware::drm::V1_0::SecureStop; using ::android::hardware::hidl_array; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; using ::android::hardware::Return; using ::android::hardware::Void; using ::android::sp; struct DrmPlugin : public IDrmPlugin, android::DrmPluginListener { DrmPlugin(android::DrmPlugin *plugin) : mLegacyPlugin(plugin) {} ~DrmPlugin() {delete mLegacyPlugin;} // Methods from ::android::hardware::drm::V1_0::IDrmPlugin follow. Return openSession(openSession_cb _hidl_cb) override; Return closeSession(const hidl_vec& sessionId) override; Return getKeyRequest(const hidl_vec& scope, const hidl_vec& initData, const hidl_string& mimeType, KeyType keyType, const hidl_vec& optionalParameters, getKeyRequest_cb _hidl_cb) override; Return provideKeyResponse(const hidl_vec& scope, const hidl_vec& response, provideKeyResponse_cb _hidl_cb) override; Return removeKeys(const hidl_vec& sessionId) override; Return restoreKeys(const hidl_vec& sessionId, const hidl_vec& keySetId) override; Return queryKeyStatus(const hidl_vec& sessionId, queryKeyStatus_cb _hidl_cb) override; Return getProvisionRequest(const hidl_string& certificateType, const hidl_string& certificateAuthority, getProvisionRequest_cb _hidl_cb) override; Return provideProvisionResponse(const hidl_vec& response, provideProvisionResponse_cb _hidl_cb) override; Return getSecureStops(getSecureStops_cb _hidl_cb) override; Return getSecureStop(const hidl_vec& secureStopId, getSecureStop_cb _hidl_cb) override; Return releaseAllSecureStops() override; Return releaseSecureStop(const hidl_vec& secureStopId) override; Return getPropertyString(const hidl_string& propertyName, getPropertyString_cb _hidl_cb) override; Return getPropertyByteArray(const hidl_string& propertyName, getPropertyByteArray_cb _hidl_cb) override; Return setPropertyString(const hidl_string& propertyName, const hidl_string& value) override; Return setPropertyByteArray(const hidl_string& propertyName, const hidl_vec& value) override; Return setCipherAlgorithm(const hidl_vec& sessionId, const hidl_string& algorithm) override; Return setMacAlgorithm(const hidl_vec& sessionId, const hidl_string& algorithm) override; Return encrypt(const hidl_vec& sessionId, const hidl_vec& keyId, const hidl_vec& input, const hidl_vec& iv, encrypt_cb _hidl_cb) override; Return decrypt(const hidl_vec& sessionId, const hidl_vec& keyId, const hidl_vec& input, const hidl_vec& iv, decrypt_cb _hidl_cb) override; Return sign(const hidl_vec& sessionId, const hidl_vec& keyId, const hidl_vec& message, sign_cb _hidl_cb) override; Return verify(const hidl_vec& sessionId, const hidl_vec& keyId, const hidl_vec& message, const hidl_vec& signature, verify_cb _hidl_cb) override; Return signRSA(const hidl_vec& sessionId, const hidl_string& algorithm, const hidl_vec& message, const hidl_vec& wrappedkey, signRSA_cb _hidl_cb) override; Return setListener(const sp& listener) override; Return sendEvent(EventType eventType, const hidl_vec& sessionId, const hidl_vec& data) override; Return sendExpirationUpdate(const hidl_vec& sessionId, int64_t expiryTimeInMS) override; Return sendKeysChange(const hidl_vec& sessionId, const hidl_vec& keyStatusList, bool hasNewUsableKey) override; // Methods from android::DrmPluginListener follow virtual void sendEvent(android::DrmPlugin::EventType eventType, int extra, Vector const *sessionId, Vector const *data); virtual void sendExpirationUpdate(Vector const *sessionId, int64_t expiryTimeInMS); virtual void sendKeysChange(Vector const *sessionId, Vector const *keyStatusList, bool hasNewUsableKey); private: android::DrmPlugin *mLegacyPlugin; sp mListener; DrmPlugin() = delete; DrmPlugin(const DrmPlugin &) = delete; void operator=(const DrmPlugin &) = delete; }; } // namespace implementation } // namespace V1_0 } // namespace drm } // namespace hardware } // namespace android #endif // ANDROID_HARDWARE_DRM_V1_0__DRMPLUGIN_H