summaryrefslogtreecommitdiff
path: root/core/io/file_access_encrypted.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/io/file_access_encrypted.h')
-rw-r--r--core/io/file_access_encrypted.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/core/io/file_access_encrypted.h b/core/io/file_access_encrypted.h
new file mode 100644
index 0000000000..90796eb2e9
--- /dev/null
+++ b/core/io/file_access_encrypted.h
@@ -0,0 +1,63 @@
+#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
+ };
+
+private:
+
+
+ Mode mode;
+ Vector<uint8_t> key;
+ bool writing;
+ FileAccess *file;
+ size_t base;
+ size_t length;
+ Vector<uint8_t> data;
+ size_t pos;
+
+
+public:
+
+
+
+
+ Error open_and_parse(FileAccess *p_base,const Vector<uint8_t>& 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