diff options
Diffstat (limited to 'drm/mediadrm/plugins/clearkey/DrmPlugin.h')
-rw-r--r-- | drm/mediadrm/plugins/clearkey/DrmPlugin.h | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/drm/mediadrm/plugins/clearkey/DrmPlugin.h b/drm/mediadrm/plugins/clearkey/DrmPlugin.h new file mode 100644 index 0000000..27df9cd --- /dev/null +++ b/drm/mediadrm/plugins/clearkey/DrmPlugin.h @@ -0,0 +1,234 @@ +/* + * Copyright (C) 2014 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 CLEARKEY_DRM_PLUGIN_H_ +#define CLEARKEY_DRM_PLUGIN_H_ + +#include <media/drm/DrmAPI.h> +#include <media/stagefright/foundation/ABase.h> +#include <media/stagefright/MediaErrors.h> +#include <utils/Errors.h> +#include <utils/KeyedVector.h> +#include <utils/List.h> +#include <utils/String8.h> +#include <utils/Vector.h> + +#include "SessionLibrary.h" +#include "Utils.h" + +namespace clearkeydrm { + +using android::KeyedVector; +using android::List; +using android::status_t; +using android::String8; +using android::Vector; + +class DrmPlugin : public android::DrmPlugin { +public: + DrmPlugin(SessionLibrary* sessionLibrary) + : mSessionLibrary(sessionLibrary) {} + virtual ~DrmPlugin() {} + + virtual status_t openSession(Vector<uint8_t>& sessionId); + + virtual status_t closeSession(const Vector<uint8_t>& sessionId); + + virtual status_t getKeyRequest( + const Vector<uint8_t>& scope, + const Vector<uint8_t>& initData, + const String8& initDataType, + KeyType keyType, + const KeyedVector<String8, String8>& optionalParameters, + Vector<uint8_t>& request, + String8& defaultUrl); + + virtual status_t provideKeyResponse( + const Vector<uint8_t>& scope, + const Vector<uint8_t>& response, + Vector<uint8_t>& keySetId); + + virtual status_t removeKeys(const Vector<uint8_t>& sessionId) { + UNUSED(sessionId); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t restoreKeys( + const Vector<uint8_t>& sessionId, + const Vector<uint8_t>& keySetId) { + UNUSED(sessionId); + UNUSED(keySetId); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t queryKeyStatus( + const Vector<uint8_t>& sessionId, + KeyedVector<String8, String8>& infoMap) const { + UNUSED(sessionId); + UNUSED(infoMap); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t getProvisionRequest( + const String8& cert_type, + const String8& cert_authority, + Vector<uint8_t>& request, + String8& defaultUrl) { + UNUSED(cert_type); + UNUSED(cert_authority); + UNUSED(request); + UNUSED(defaultUrl); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t provideProvisionResponse( + const Vector<uint8_t>& response, + Vector<uint8_t>& certificate, + Vector<uint8_t>& wrappedKey) { + UNUSED(response); + UNUSED(certificate); + UNUSED(wrappedKey); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t unprovisionDevice() { + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t getSecureStops(List<Vector<uint8_t> >& secureStops) { + UNUSED(secureStops); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t releaseSecureStops(const Vector<uint8_t>& ssRelease) { + UNUSED(ssRelease); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t getPropertyString( + const String8& name, String8& value) const; + + virtual status_t getPropertyByteArray( + const String8& name, Vector<uint8_t>& value) const { + UNUSED(name); + UNUSED(value); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t setPropertyString( + const String8& name, const String8& value) { + UNUSED(name); + UNUSED(value); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t setPropertyByteArray( + const String8& name, const Vector<uint8_t>& value) { + UNUSED(name); + UNUSED(value); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t setCipherAlgorithm( + const Vector<uint8_t>& sessionId, const String8& algorithm) { + UNUSED(sessionId); + UNUSED(algorithm); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t setMacAlgorithm( + const Vector<uint8_t>& sessionId, const String8& algorithm) { + UNUSED(sessionId); + UNUSED(algorithm); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t encrypt( + const Vector<uint8_t>& sessionId, + const Vector<uint8_t>& keyId, + const Vector<uint8_t>& input, + const Vector<uint8_t>& iv, + Vector<uint8_t>& output) { + UNUSED(sessionId); + UNUSED(keyId); + UNUSED(input); + UNUSED(iv); + UNUSED(output); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t decrypt( + const Vector<uint8_t>& sessionId, + const Vector<uint8_t>& keyId, + const Vector<uint8_t>& input, + const Vector<uint8_t>& iv, + Vector<uint8_t>& output) { + UNUSED(sessionId); + UNUSED(keyId); + UNUSED(input); + UNUSED(iv); + UNUSED(output); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t sign( + const Vector<uint8_t>& sessionId, + const Vector<uint8_t>& keyId, + const Vector<uint8_t>& message, + Vector<uint8_t>& signature) { + UNUSED(sessionId); + UNUSED(keyId); + UNUSED(message); + UNUSED(signature); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t verify( + const Vector<uint8_t>& sessionId, + const Vector<uint8_t>& keyId, + const Vector<uint8_t>& message, + const Vector<uint8_t>& signature, bool& match) { + UNUSED(sessionId); + UNUSED(keyId); + UNUSED(message); + UNUSED(signature); + UNUSED(match); + return android::ERROR_DRM_CANNOT_HANDLE; + } + + virtual status_t signRSA( + const Vector<uint8_t>& sessionId, + const String8& algorithm, + const Vector<uint8_t>& message, + const Vector<uint8_t>& wrappedKey, + Vector<uint8_t>& signature) { + UNUSED(sessionId); + UNUSED(algorithm); + UNUSED(message); + UNUSED(wrappedKey); + UNUSED(signature); + return android::ERROR_DRM_CANNOT_HANDLE; + } + +private: + DISALLOW_EVIL_CONSTRUCTORS(DrmPlugin); + + SessionLibrary* mSessionLibrary; +}; + +} // namespace clearkeydrm + +#endif // CLEARKEY_DRM_PLUGIN_H_ |