scrambler.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00027
00028 #ifndef SCRAMBLER_HPP
00029 #define SCRAMBLER_HPP
00030
00031 #include "../my_config.h"
00032 #include <string>
00033 #include "infinint.hpp"
00034 #include "generic_file.hpp"
00035 #include "erreurs.hpp"
00036 #include "infinint.hpp"
00037
00038 namespace libdar
00039 {
00040
00043
00044 class scrambler : public generic_file
00045 {
00046 public:
00047 scrambler(user_interaction & dialog, const std::string & pass, generic_file & hidden_side);
00048 ~scrambler() { if(buffer != NULL) delete [] buffer; };
00049
00050 bool skip(const infinint & pos) { if(ref == NULL) throw SRC_BUG; return ref->skip(pos); };
00051 bool skip_to_eof() { if(ref==NULL) throw SRC_BUG; return ref->skip_to_eof(); };
00052 bool skip_relative(S_I x) { if(ref == NULL) throw SRC_BUG; return ref->skip_relative(x); };
00053 infinint get_position() { if(ref == NULL) throw SRC_BUG; return ref->get_position(); };
00054
00055 protected:
00056 S_I inherited_read(char *a, size_t size);
00057 S_I inherited_write(const char *a, size_t size);
00058
00059 private:
00060 std::string key;
00061 U_32 len;
00062 generic_file *ref;
00063 unsigned char *buffer;
00064 size_t buf_size;
00065 };
00066
00067 }
00068
00069 #endif