![]() |
Disk ARchive
2.5.3
Full featured and portable backup and archiving tool
|
this is a partial implementation of the generic_file interface to cypher/decypher data block by block. More...
#include <tronconneuse.hpp>
Inherits libdar::generic_file.
Inherited by libdar::crypto_sym.
Public Member Functions | |
tronconneuse (U_32 block_size, generic_file &encrypted_side, bool no_initial_shift, const archive_version &reading_ver) | |
This is the constructor. More... | |
tronconneuse (const tronconneuse &ref) | |
copy constructor | |
const tronconneuse & | operator= (const tronconneuse &ref) |
assignment operator | |
virtual | ~tronconneuse () |
destructor | |
bool | skippable (skippability direction, const infinint &amount) |
inherited from generic_file | |
bool | skip (const infinint &pos) |
inherited from generic_file | |
bool | skip_to_eof () |
inherited from generic_file | |
bool | skip_relative (S_I x) |
inherited from generic_file | |
infinint | get_position () const |
inherited from generic_file | |
void | write_end_of_file () |
in write_only mode indicate that end of file is reached More... | |
void | set_initial_shift (const infinint &x) |
this method to modify the initial shift. This overrides the constructor "no_initial_shift" of the constructor | |
void | set_callback_trailing_clear_data (infinint(*call_back)(generic_file &below, const archive_version &reading_ver)) |
U_32 | get_clear_block_size () const |
returns the block size give to constructor | |
![]() | |
generic_file (gf_mode m) | |
main constructor | |
generic_file (const generic_file &ref) | |
copy constructor | |
virtual | ~generic_file () throw (Ebug) |
virtual destructor, this let inherited destructor to be called even from a generic_file pointer to an inherited class | |
void | terminate () const |
destructor-like call, except that it is allowed to throw exceptions | |
const generic_file & | operator= (const generic_file &ref) |
assignment operator | |
gf_mode | get_mode () const |
retreive the openning mode for this object | |
virtual void | read_ahead (const infinint &amount) |
void | ignore_read_ahead (bool mode) |
U_I | read (char *a, U_I size) |
read data from the generic_file More... | |
void | write (const char *a, U_I size) |
write data to the generic_file More... | |
void | write (const std::string &arg) |
write a string to the generic_file More... | |
S_I | read_back (char &a) |
skip back one char, read on char and skip back one char | |
S_I | read_forward (char &a) |
read one char | |
virtual void | copy_to (generic_file &ref) |
copy all data from current position to the object in argument | |
virtual void | copy_to (generic_file &ref, const infinint &crc_size, crc *&value) |
copy all data from the current position to the object in argument and computes a CRC value of the transmitted data More... | |
U_32 | copy_to (generic_file &ref, U_32 size) |
small copy (up to 4GB) with CRC calculation | |
infinint | copy_to (generic_file &ref, infinint size) |
copy the given amount to the object in argument | |
bool | diff (generic_file &f, const infinint &me_read_ahead, const infinint &you_read_ahead, const infinint &crc_size, crc *&value) |
compares the contents with the object in argument More... | |
bool | diff (generic_file &f, const infinint &me_read_ahead, const infinint &you_read_ahead, const infinint &crc_size, crc *&value, infinint &err_offset) |
void | reset_crc (const infinint &width) |
reset CRC on read or writen data More... | |
bool | crc_status () const |
to known whether CRC calculation is activated or not | |
crc * | get_crc () |
get CRC of the transfered date since last reset More... | |
void | sync_write () |
write any pending data | |
void | flush_read () |
be ready to read at current position, reseting all pending data for reading, cached and in compression engine for example | |
![]() | |
void * | operator new (size_t n_byte) |
void * | operator new (size_t n_byte, const std::nothrow_t ¬hrow_value) |
void * | operator new[] (size_t n_byte) |
void * | operator new[] (size_t n_byte, const std::nothrow_t ¬hrow_value) |
void * | operator new (size_t n_byte, memory_pool *p) |
void * | operator new[] (size_t n_byte, memory_pool *p) |
void | operator delete (void *ptr, memory_pool *p) |
this operator is called by the compiler if an exception is throw from the constructor of the allocated object | |
void | operator delete[] (void *ptr, memory_pool *p) |
this operator is called by the compiler if an exception is throw from the constructor of the allocated objects | |
void | operator delete (void *ptr) |
this is the usual delete operator, modified to handle allocated objects allocated on a memory pool or not | |
void | operator delete[] (void *ptr) |
this is the usual delete[] operator, modified to handle allocated objects allocated on a memory pool or not | |
Protected Member Functions | |
virtual U_32 | encrypted_block_size_for (U_32 clear_block_size)=0 |
defines the size necessary to encrypt a given amount of clear data More... | |
virtual U_32 | clear_block_allocated_size_for (U_32 clear_block_size)=0 |
it may be necessary by the inherited class have few more bytes allocated after the clear data given for encryption More... | |
virtual U_32 | encrypt_data (const infinint &block_num, const char *clear_buf, const U_32 clear_size, const U_32 clear_allocated, char *crypt_buf, U_32 crypt_size)=0 |
this method encrypts the clear data given More... | |
virtual U_32 | decrypt_data (const infinint &block_num, const char *crypt_buf, const U_32 crypt_size, char *clear_buf, U_32 clear_size)=0 |
this method decyphers data More... | |
const archive_version & | get_reading_version () const |
![]() | |
void | set_mode (gf_mode x) |
bool | is_terminated () const |
![]() | |
memory_pool * | get_pool () const |
template<class T > | |
void | meta_new (T *&ptr, size_t num) |
template<class T > | |
void | meta_delete (T *ptr) |
Additional Inherited Members | |
![]() | |
enum | skippability { skip_backward, skip_forward } |
this is a partial implementation of the generic_file interface to cypher/decypher data block by block.
This class is a pure virtual one, as several calls have to be defined by inherited classes
tronconneuse is either read_only or write_only, read_write is not allowed. The openning mode is defined by encrypted_side's mode. In write_only no skip() is allowed, writing is sequential from the beginning of the file to the end (like writing to a pipe). In read_only all skip() functions are available.
Definition at line 59 of file tronconneuse.hpp.
libdar::tronconneuse::tronconneuse | ( | U_32 | block_size, |
generic_file & | encrypted_side, | ||
bool | no_initial_shift, | ||
const archive_version & | reading_ver | ||
) |
This is the constructor.
[in] | block_size | is the size of block encryption (the size of clear data encrypted toghether). |
[in] | encrypted_side | where encrypted data are read from or written to. |
[in] | no_initial_shift | assume that no unencrypted data is located at the begining of the underlying file, else this is the position of the encrypted_side at the time of this call that is used as initial_shift |
[in] | reading_ver | version of the archive format |
|
protectedpure virtual |
it may be necessary by the inherited class have few more bytes allocated after the clear data given for encryption
[in] | clear_block_size | is the size in byte of the clear data that will be asked to encrypt. |
Implemented in libdar::crypto_sym.
Referenced by get_clear_block_size().
|
protectedpure virtual |
this method decyphers data
[in] | block_num | block number of the data to decrypt. |
[in] | crypt_buf | pointer to the first byte of encrypted data. |
[in] | crypt_size | size of encrypted data to decrypt. |
[in,out] | clear_buf | pointer where to put clear data. |
[in] | clear_size | allocated size of clear_buf. |
Implemented in libdar::crypto_sym.
Referenced by get_clear_block_size().
|
protectedpure virtual |
this method encrypts the clear data given
block_num | is the number of the block to which correspond the given data, This is an informational field for inherited classes. | |
[in] | clear_buf | points to the first byte of clear data to encrypt. |
[in] | clear_size | is the length in byte of data to encrypt. |
[in] | clear_allocated | is the size of the allocated memory (modifiable bytes) in clear_buf: clear_block_allocated_size_for(clear_size) |
[in,out] | crypt_buf | is the area where to put corresponding encrypted data. |
[in] | crypt_size | is the allocated memory size for crypt_buf: encrypted_block_size_for(clear_size) |
Implemented in libdar::crypto_sym.
Referenced by get_clear_block_size().
|
protectedpure virtual |
defines the size necessary to encrypt a given amount of clear data
[in] | clear_block_size | is the size of the clear block to encrypt. |
Implemented in libdar::crypto_sym.
Referenced by get_clear_block_size().
|
inline |
let the caller give a callback function that given a generic_file with cyphered data, is able to return the offset of the first clear byte located after all the cyphered data, this callback function is used (if defined by the following method), when reaching End of File.
Definition at line 109 of file tronconneuse.hpp.
|
inline |
in write_only mode indicate that end of file is reached
this call must be called in write mode to purge the internal cache before deleting the object (else some data may be lost) no further write call is allowed
Definition at line 99 of file tronconneuse.hpp.
References libdar::generic_file::is_terminated().