// // Copyright 2013 Google Inc. All Rights Reserved. // #ifndef WV_DRM_PLUGIN_H_ #define WV_DRM_PLUGIN_H_ #include "media/drm/DrmAPI.h" #include "media/stagefright/foundation/ABase.h" #include "media/stagefright/foundation/AString.h" #include "utils/Errors.h" #include "utils/KeyedVector.h" #include "utils/List.h" #include "utils/String8.h" #include "utils/Vector.h" #include "wv_content_decryption_module.h" namespace wvdrm { using android::KeyedVector; using android::List; using android::status_t; using android::String8; using android::Vector; class WVDrmPlugin : public android::DrmPlugin { public: WVDrmPlugin(wvcdm::WvContentDecryptionModule* cdm); virtual ~WVDrmPlugin() {} virtual status_t openSession(Vector& sessionId); virtual status_t closeSession(const Vector& sessionId); virtual status_t getKeyRequest( const Vector& sessionId, const Vector& initData, const String8& mimeType, KeyType keyType, const KeyedVector& optionalParameters, Vector& request, String8& defaultUrl); virtual status_t provideKeyResponse(const Vector& sessionId, const Vector& response, Vector& keySetId); virtual status_t removeKeys(const Vector& keySetId); virtual status_t restoreKeys(const Vector& sessionId, const Vector& keySetId); virtual status_t queryKeyStatus( const Vector& sessionId, KeyedVector& infoMap) const; virtual status_t getProvisionRequest(Vector& request, String8& defaultUrl); virtual status_t provideProvisionResponse(const Vector& response); virtual status_t getSecureStops(List >& secureStops); virtual status_t releaseSecureStops(const Vector& ssRelease); virtual status_t getPropertyString(const String8& name, String8& value) const; virtual status_t getPropertyByteArray(const String8& name, Vector& value) const; virtual status_t setPropertyString(const String8& name, const String8& value); virtual status_t setPropertyByteArray(const String8& name, const Vector& value); virtual status_t setCipherAlgorithm(Vector const &sessionId, String8 const &algorithm); virtual status_t setMacAlgorithm(Vector const &sessionId, String8 const &algorithm); virtual status_t encrypt(Vector const &sessionId, Vector const &keyId, Vector const &input, Vector const &iv, Vector &output); virtual status_t decrypt(Vector const &sessionId, Vector const &keyId, Vector const &input, Vector const &iv, Vector &output); virtual status_t sign(Vector const &sessionId, Vector const &keyId, Vector const &message, Vector &signature); virtual status_t verify(Vector const &sessionId, Vector const &keyId, Vector const &message, Vector const &signature, bool &match); private: DISALLOW_EVIL_CONSTRUCTORS(WVDrmPlugin); wvcdm::WvContentDecryptionModule* mCDM; }; } // namespace wvdrm #endif // WV_DRM_PLUGIN_H_