| /* |
| * 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 <android/hardware/drm/1.0/IDrmPlugin.h> |
| #include <android/hardware/drm/1.0/IDrmPluginListener.h> |
| #include <hidl/Status.h> |
| #include <media/drm/DrmAPI.h> |
| |
| 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<void> openSession(openSession_cb _hidl_cb) override; |
| |
| Return<Status> closeSession(const hidl_vec<uint8_t>& sessionId) override; |
| |
| Return<void> getKeyRequest(const hidl_vec<uint8_t>& scope, |
| const hidl_vec<uint8_t>& initData, const hidl_string& mimeType, |
| KeyType keyType, const hidl_vec<KeyValue>& optionalParameters, |
| getKeyRequest_cb _hidl_cb) override; |
| |
| Return<void> provideKeyResponse(const hidl_vec<uint8_t>& scope, |
| const hidl_vec<uint8_t>& response, provideKeyResponse_cb _hidl_cb) |
| override; |
| |
| Return<Status> removeKeys(const hidl_vec<uint8_t>& sessionId) override; |
| |
| Return<Status> restoreKeys(const hidl_vec<uint8_t>& sessionId, |
| const hidl_vec<uint8_t>& keySetId) override; |
| |
| Return<void> queryKeyStatus(const hidl_vec<uint8_t>& sessionId, |
| queryKeyStatus_cb _hidl_cb) override; |
| |
| Return<void> getProvisionRequest(const hidl_string& certificateType, |
| const hidl_string& certificateAuthority, |
| getProvisionRequest_cb _hidl_cb) override; |
| |
| Return<void> provideProvisionResponse(const hidl_vec<uint8_t>& response, |
| provideProvisionResponse_cb _hidl_cb) override; |
| |
| Return<void> getSecureStops(getSecureStops_cb _hidl_cb) override; |
| |
| Return<void> getSecureStop(const hidl_vec<uint8_t>& secureStopId, |
| getSecureStop_cb _hidl_cb) override; |
| |
| Return<Status> releaseAllSecureStops() override; |
| |
| Return<Status> releaseSecureStop(const hidl_vec<uint8_t>& secureStopId) |
| override; |
| |
| Return<void> getPropertyString(const hidl_string& propertyName, |
| getPropertyString_cb _hidl_cb) override; |
| |
| Return<void> getPropertyByteArray(const hidl_string& propertyName, |
| getPropertyByteArray_cb _hidl_cb) override; |
| |
| Return<Status> setPropertyString(const hidl_string& propertyName, |
| const hidl_string& value) override; |
| |
| Return<Status> setPropertyByteArray(const hidl_string& propertyName, |
| const hidl_vec<uint8_t>& value) override; |
| |
| Return<Status> setCipherAlgorithm(const hidl_vec<uint8_t>& sessionId, |
| const hidl_string& algorithm) override; |
| |
| Return<Status> setMacAlgorithm(const hidl_vec<uint8_t>& sessionId, |
| const hidl_string& algorithm) override; |
| |
| Return<void> encrypt(const hidl_vec<uint8_t>& sessionId, |
| const hidl_vec<uint8_t>& keyId, const hidl_vec<uint8_t>& input, |
| const hidl_vec<uint8_t>& iv, encrypt_cb _hidl_cb) override; |
| |
| Return<void> decrypt(const hidl_vec<uint8_t>& sessionId, |
| const hidl_vec<uint8_t>& keyId, const hidl_vec<uint8_t>& input, |
| const hidl_vec<uint8_t>& iv, decrypt_cb _hidl_cb) override; |
| |
| Return<void> sign(const hidl_vec<uint8_t>& sessionId, |
| const hidl_vec<uint8_t>& keyId, const hidl_vec<uint8_t>& message, |
| sign_cb _hidl_cb) override; |
| |
| Return<void> verify(const hidl_vec<uint8_t>& sessionId, |
| const hidl_vec<uint8_t>& keyId, const hidl_vec<uint8_t>& message, |
| const hidl_vec<uint8_t>& signature, verify_cb _hidl_cb) override; |
| |
| Return<void> signRSA(const hidl_vec<uint8_t>& sessionId, |
| const hidl_string& algorithm, const hidl_vec<uint8_t>& message, |
| const hidl_vec<uint8_t>& wrappedkey, signRSA_cb _hidl_cb) override; |
| |
| Return<void> setListener(const sp<IDrmPluginListener>& listener) override; |
| |
| Return<void> sendEvent(EventType eventType, |
| const hidl_vec<uint8_t>& sessionId, const hidl_vec<uint8_t>& data) |
| override; |
| |
| Return<void> sendExpirationUpdate(const hidl_vec<uint8_t>& sessionId, |
| int64_t expiryTimeInMS) override; |
| |
| Return<void> sendKeysChange(const hidl_vec<uint8_t>& sessionId, |
| const hidl_vec<KeyStatus>& keyStatusList, bool hasNewUsableKey) |
| override; |
| |
| // Methods from android::DrmPluginListener follow |
| |
| virtual void sendEvent(android::DrmPlugin::EventType eventType, int extra, |
| Vector<uint8_t> const *sessionId, Vector<uint8_t> const *data); |
| |
| virtual void sendExpirationUpdate(Vector<uint8_t> const *sessionId, |
| int64_t expiryTimeInMS); |
| |
| virtual void sendKeysChange(Vector<uint8_t> const *sessionId, |
| Vector<android::DrmPlugin::KeyStatus> const *keyStatusList, |
| bool hasNewUsableKey); |
| |
| private: |
| android::DrmPlugin *mLegacyPlugin; |
| sp<IDrmPluginListener> 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 |