#ifndef FILE_ACCESS_ENCRYPTED_H #define FILE_ACCESS_ENCRYPTED_H #include "os/file_access.h" class FileAccessEncrypted : public FileAccess { public: enum Mode { MODE_READ, MODE_WRITE_AES256, MODE_MAX }; private: Mode mode; Vector key; bool writing; FileAccess *file; size_t base; size_t length; Vector data; mutable size_t pos; mutable bool eofed; public: Error open_and_parse(FileAccess *p_base,const Vector& p_key,Mode p_mode); Error open_and_parse_password(FileAccess *p_base,const String& p_key,Mode p_mode); virtual Error _open(const String& p_path, int p_mode_flags); ///< open a file virtual void close(); ///< close a file virtual bool is_open() const; ///< true when file is open virtual void seek(size_t p_position); ///< seek to a given position virtual void seek_end(int64_t p_position=0); ///< seek from the end of file virtual size_t get_pos() const; ///< get position in the file virtual size_t get_len() const; ///< get size of the file virtual bool eof_reached() const; ///< reading passed EOF virtual uint8_t get_8() const; ///< get a byte virtual int get_buffer(uint8_t *p_dst, int p_length) const; virtual Error get_error() const; ///< get last error virtual void store_8(uint8_t p_dest); ///< store a byte virtual void store_buffer(const uint8_t *p_src,int p_length); ///< store an array of bytes virtual bool file_exists(const String& p_name); ///< return true if a file exists virtual uint64_t _get_modified_time(const String& p_file); FileAccessEncrypted(); ~FileAccessEncrypted(); }; #endif // FILE_ACCESS_ENCRYPTED_H