diff options
Diffstat (limited to 'include/Encryption.hpp')
-rw-r--r-- | include/Encryption.hpp | 29 |
1 files changed, 29 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); +} |