// Copyright 2013 Google Inc. All Rights Reserved. #ifndef CDM_BASE_WV_CONTENT_DECRYPTION_MODULE_H_ #define CDM_BASE_WV_CONTENT_DECRYPTION_MODULE_H_ #include "wv_cdm_types.h" #include "utils/UniquePtr.h" namespace wvcdm { class CdmEngine; class WvCdmEventListener; class WvContentDecryptionModule { public: WvContentDecryptionModule(); virtual ~WvContentDecryptionModule(); // Session related methods virtual CdmResponseType OpenSession(const CdmKeySystem& key_system, CdmSessionId* session_id); virtual CdmResponseType CloseSession(const CdmSessionId& session_id); // Construct a valid license request. virtual CdmResponseType GenerateKeyRequest(const CdmSessionId& session_id, const CdmInitData& init_data, const CdmLicenseType license_type, CdmAppParameterMap& app_parameters, CdmKeyMessage* key_request); // Accept license response and extract key info. virtual CdmResponseType AddKey(const CdmSessionId& session_id, const CdmKeyResponse& key_data); // Cancel session virtual CdmResponseType CancelKeyRequest(const CdmSessionId& session_id); // Query system information virtual CdmResponseType QueryStatus(CdmQueryMap* key_info); // Query license information virtual CdmResponseType QueryKeyStatus(const CdmSessionId& session_id, CdmQueryMap* key_info); // Query session control information virtual CdmResponseType QueryKeyControlInfo(const CdmSessionId& session_id, CdmQueryMap* key_info); // Provisioning related methods virtual CdmResponseType GetProvisioningRequest( CdmProvisioningRequest* request, std::string* default_url); virtual CdmResponseType HandleProvisioningResponse( CdmProvisioningResponse& response); // Secure stop related methods virtual CdmResponseType GetSecureStops(CdmSecureStops* secure_stops); virtual CdmResponseType ReleaseSecureStops( const CdmSecureStopReleaseMessage& message); // Accept encrypted buffer and return decrypted data. virtual CdmResponseType Decrypt(const CdmSessionId& session_id, bool is_encrypted, const KeyId& key_id, const uint8_t* encrypt_buffer, size_t encrypt_length, const std::vector& iv, size_t block_offset, void* decrypt_buffer, size_t decrypt_buffer_offset); // Event listener related methods virtual bool AttachEventListener(const CdmSessionId& session_id, WvCdmEventListener* listener); virtual bool DetachEventListener(const CdmSessionId& session_id, WvCdmEventListener* listener); private: // instance variables UniquePtr cdm_engine_; CORE_DISALLOW_COPY_AND_ASSIGN(WvContentDecryptionModule); }; } // namespace wvcdm #endif // CDM_BASE_WV_CONTENT_DECRYPTION_MODULE_H_