Disk ARchive 2.7.14
Full featured and portable backup and archiving tool
Loading...
Searching...
No Matches
src/libdar/crypto.hpp
Go to the documentation of this file.
1//*********************************************************************/
2// dar - disk archive - a backup/restoration program
3// Copyright (C) 2002-2024 Denis Corbin
4//
5// This program is free software; you can redistribute it and/or
6// modify it under the terms of the GNU General Public License
7// as published by the Free Software Foundation; either version 2
8// of the License, or (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program; if not, write to the Free Software
17// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18//
19// to contact the author, see the AUTHOR file
20/*********************************************************************/
21
25
26#ifndef CRYPTO_HPP
27#define CRYPTO_HPP
28
29extern "C"
30{
31
32}
33
34#include "../my_config.h"
35#include <string>
36
37#include "datetime.hpp"
38
39#include <list>
40
41namespace libdar
42{
43
46
48
49 enum class crypto_algo
50 {
51 none,
53 blowfish,
54 aes256,
58 };
59
61
62 struct signator
63 {
64 enum result_t
65 {
66 good, //< good signature
67 bad, //< key correct bug signature tempered
68 unknown_key, //< no key found to check the signature
69 error //< signature failed to be checked for other error
70 };
71 enum key_validity_t
72 {
73 valid, //< the key we have is neither expired nor revoked
74 expired, //< the key we have has expired
75 revoked //< the key we have has been revoked
76 };
77 key_validity_t key_validity; //< validity of the key used to verify the signature
78 result_t result; //< status of the signing
79 std::string fingerprint; //< fingerprint of the key
80 datetime signing_date; //< date of signature
81 datetime signature_expiration_date; //< date of expiration of this signature
82 bool operator < (const signator & ref) const { return fingerprint < ref.fingerprint; };
83 bool operator == (const signator & ref) const { return result == ref.result && key_validity == ref.key_validity && fingerprint == ref.fingerprint && signature_expiration_date == ref.signature_expiration_date; };
84 };
85
87 extern std::string crypto_algo_2_string(crypto_algo algo);
88
90 extern char crypto_algo_2_char(crypto_algo a);
91
93 extern crypto_algo char_2_crypto_algo(char a);
94
95
97 extern bool same_signatories(const std::list<signator> & a, const std::list<signator> & b);
98
100
101} // end of namespace
102
103#endif
char crypto_algo_2_char(crypto_algo a)
convert crypto algo to char
std::string crypto_algo_2_string(crypto_algo algo)
convert crypto algo to readable std::string
crypto_algo char_2_crypto_algo(char a)
convert char to crypto algo
crypto_algo
the different cypher available for encryption (strong or weak)
bool same_signatories(const std::list< signator > &a, const std::list< signator > &b)
return whether the two signators lists match
@ none
no hashing algorithm
@ camellia256
camellia 256 strong encryption
@ aes256
AES 256 strong encryption.
@ blowfish
blowfish strong encryption
@ serpent256
serpent 256 strong encryption
@ scrambling
scrambling weak encryption
@ twofish256
twofish 256 strong encryption
include macro defined by the configure script and some specific additional ones
libdar namespace encapsulate all libdar symbols
this file contains the definition of class datetime that stores unix times in a portable way