Conscience Core
crypto.h
Go to the documentation of this file.
1 #ifndef crypto_H_
2 #define crypto_H_
3 
4 #include <string>
5 #include <vector>
6 #include <filesystem>
7 
8 namespace fs = std::filesystem;
9 using std::string, std::vector, std::begin, std::exception;
10 
11 namespace conscience_utils::crypto {
12 
13  class CryptoException : public exception {
14  public:
15  CryptoException(const string &message) throw()
16  : message(message) {
17  }
18  const char *what() const throw() {
19  return message.c_str();
20  }
21  const string getMessage() const {
22  return message;
23  }
24 
25  private:
26  const string message;
27  };
31  vector<unsigned char>* encryptAES256CBC(const unsigned char *bytes, int bytesCount, const string &key, const string &iv);
32  vector<unsigned char>* encryptAES256CBC(const string &plainText, const string &key, const string &iv);
33  string decryptAES256CBC(const vector<unsigned char>& encryptedChars, string key, string iv);
34 
35  void generateAES256KeyAndIVFromPassword(const string &password, string &key, string &iv);
36 
41  vector<unsigned char>* encryptAES256CBCWithPassword(const string &plainText, const string &password);
42  string decryptAES256CBCWithPassword(const vector<unsigned char>& encryptedChars, const string &password);
43 
47  string encodeBase64(const unsigned char *buffer, unsigned int bufferLen);
48  vector<unsigned char>* decodeBase64(const string &);
49 
50  string hashFileMd5(const fs::path &filePath);
51  string hashMd5(const string &input);
52  string hashSha512(const string &input);
53 
66  string hashUniqueSimpleShift(const string &input);
67 }
68 
69 #endif
conscience_utils::crypto::generateAES256KeyAndIVFromPassword
void generateAES256KeyAndIVFromPassword(const string &password, string &key, string &iv)
Definition: crypto.cpp:140
conscience_utils::crypto::CryptoException::getMessage
const string getMessage() const
Definition: crypto.h:21
conscience_utils::crypto
Definition: crypto.cpp:16
conscience_utils::crypto::CryptoException::what
const char * what() const
Definition: crypto.h:18
conscience_utils::crypto::decryptAES256CBC
string decryptAES256CBC(const vector< unsigned char > &encryptedChars, string key, string iv)
Definition: crypto.cpp:85
conscience_utils::crypto::encryptAES256CBCWithPassword
vector< unsigned char > * encryptAES256CBCWithPassword(const string &plainText, const string &password)
Definition: crypto.cpp:151
conscience_utils::crypto::hashSha512
string hashSha512(const string &input)
Definition: crypto.cpp:330
conscience_utils::crypto::encodeBase64
string encodeBase64(const unsigned char *buf, unsigned int bufLen)
Definition: crypto.cpp:176
conscience_utils::crypto::decryptAES256CBCWithPassword
string decryptAES256CBCWithPassword(const vector< unsigned char > &encryptedChars, const string &password)
Definition: crypto.cpp:159
conscience_utils::crypto::hashFileMd5
string hashFileMd5(const fs::path &filePath)
Definition: crypto.cpp:261
conscience_utils::crypto::CryptoException
Definition: crypto.h:13
conscience_utils::crypto::hashUniqueSimpleShift
string hashUniqueSimpleShift(const string &input)
"Perfect" hash function by shifting each character by 1000.
Definition: crypto.cpp:355
conscience_utils::crypto::CryptoException::CryptoException
CryptoException(const string &message)
Definition: crypto.h:15
conscience_utils::crypto::decodeBase64
vector< unsigned char > * decodeBase64(const string &encodedString)
Definition: crypto.cpp:217
conscience_utils::crypto::hashMd5
string hashMd5(const string &input)
Definition: crypto.cpp:315
conscience_utils::crypto::encryptAES256CBC
vector< unsigned char > * encryptAES256CBC(const unsigned char *bytes, int bytesCount, const string &key, const string &iv)
Definition: crypto.cpp:32