diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/Encryption.hpp | 29 | ||||
-rwxr-xr-x | include/utils.hpp | 6 |
2 files changed, 35 insertions, 0 deletions
diff --git a/include/Encryption.hpp b/include/Encryption.hpp new file mode 100644 index 0000000..b70687d --- /dev/null +++ b/include/Encryption.hpp @@ -0,0 +1,29 @@ +#pragma once + +/* + * Encrypts/decrypts data using xchacha20 + */ + +#include <string> + +namespace odhtdb +{ + const int NONCE_BYTE_SIZE = 24; + + struct EncryptedData + { + char nonce[NONCE_BYTE_SIZE]; + std::string data; + }; + + using EncryptionKey = char[32]; + + // Stores randomly generated encryption key in @output + void generateEncryptionKey(EncryptionKey *output); + + // Returns 0 on success, storing encrypted data in @output + int encrypt(EncryptedData *output, const EncryptionKey *key, const void *data, size_t dataSize); + + // Returns 0 on success, storing decrypted data in @output + int decrypt(std::string *output, const EncryptionKey *key, const EncryptedData *encryptedData); +} diff --git a/include/utils.hpp b/include/utils.hpp new file mode 100755 index 0000000..01e478d --- /dev/null +++ b/include/utils.hpp @@ -0,0 +1,6 @@ +#pragma once + +// Disable copying for a class or struct +#define DISABLE_COPY(ClassName) \ + ClassName(ClassName&) = delete; \ + ClassName& operator = (ClassName&) = delete; |