26 #ifndef HEADER_VERSION_HPP 27 #define HEADER_VERSION_HPP 29 #include "../my_config.h" 67 void set_command_line(
const std::string & line) {
cmd_line = line; };
69 void set_sym_crypto_algo(
const crypto_algo & algo) {
sym = algo; };
80 void set_signed(
bool is_signed) {
arch_signed = is_signed; };
82 void set_salt(
const std::string & arg) {
salt = arg; };
90 const std::string & get_command_line()
const {
return cmd_line; };
96 std::string get_sym_crypto_name()
const;
97 std::string get_asym_crypto_name()
const;
99 const slice_layout *get_slice_layout()
const {
return ref_layout; };
101 const std::string & get_salt()
const {
return salt; };
130 void nullifyptr() noexcept { crypted_key =
nullptr; ref_layout =
nullptr; };
void read(generic_file &f, user_interaction &dialog, bool lax_mode)
read the header or trailer from the archive
bool ciphered
whether the archive is ciphered, even if we do not know its crypto algorithm (old archives) ...
static constexpr U_I FLAG_HAS_AN_SECOND_EXTENDED_SIZE
reserved for future use
archive_version edition
archive format
static constexpr U_I FLAG_ARCHIVE_IS_SIGNED
archive is signed
class generic_file is defined here as well as class fichierthe generic_file interface is widely used ...
bool arch_signed
whether the archive is signed
static constexpr U_I FLAG_SAVED_EA_ROOT
no more used since version "05"
void set_crypted_key(memory_file *key)
the object pointed to by key passes to the responsibility of this header_version object ...
std::string cmd_line
used long ago to store cmd_line, then abandonned, then recycled as a user comment field ...
static constexpr U_I FLAG_INITIAL_OFFSET
whether the header contains the initial offset (size of clear data before encrypted) NOTE : This valu...
This is a pure virtual class that is used by libdar when interaction with the user is required...
std::string salt
used for key derivation
slice_layout * ref_layout
optional field used in isolated catalogues to record the slicing layout of their archive of reference...
the crypto algoritm definition
object describing the slicing of an archive
static constexpr U_I FLAG_SAVED_EA_USER
no more used since version "05"
generic_file stored in memory
static constexpr U_I FLAG_HAS_KDF_PARAM
archive header contains salt and non default interaction count
crypto_algo
the different cypher available for encryption (strong or weak)
compression parameters for API
defines the interaction interface between libdar and users.
static constexpr U_I FLAG_SEQUENCE_MARK
escape sequence marks present for sequential reading
static constexpr U_I FLAG_HAS_REF_SLICING
the header contains the slicing information of the archive of reference (used for isolated catalogue)...
Memory_file is a generic_file class that only uses virtual memory.
bool has_tape_marks
whether the archive contains tape marks aka escape marks aka sequence marks
compression algo_zip
compression algorithm used
static constexpr U_I PRE_FORMAT_10_ITERATION
fixed value used for key derivation before archive format 10
static constexpr U_I FLAG_SCRAMBLED
scrambled or strong encryption used
hash_algo kdf_hash
used for key derivation
void write(generic_file &f) const
write down the object to the archive (as header if wrote at the beginning of the archive, as trailer is at the end)
memory_file * crypted_key
optional field containing the asymmetrically ciphered key used for strong encryption ciphering ...
infinint iteration_count
used for key derivation
switch module to limitint (32 ou 64 bits integers) or infinint
compression
the different compression algorithm available
crypto_algo sym
strong encryption algorithm used for symmetrical encryption
this is the interface class from which all other data transfer classes inherit
infinint initial_offset
defines at which offset starts the archive (passed the archive header), this field is obiously only u...
class archive_version that rules which archive format to follow
hash_algo
hashing algorithm available
void set_slice_layout(slice_layout *layout)
the object pointed to by layout is passed under the responsibility of this header_version object ...
the arbitrary large positive integer class
class archive_version manages the version of the archive format
static constexpr U_I FLAG_HAS_AN_EXTENDED_SIZE
the flag is two bytes length
libdar namespace encapsulate all libdar symbols
static constexpr U_I FLAG_HAS_CRYPTED_KEY
the header contains a symmetrical key encrypted with asymmetrical algorithm
set of datastructures used to interact with a catalogue object