Skip to content
Snippets Groups Projects
Commit b03df3f7 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

aesEncrypt: allow to provide salt

parent 6a6816ad
Branches
Tags
No related merge requests found
...@@ -807,8 +807,11 @@ OPENDHT_PUBLIC inline Blob aesEncrypt(const Blob& data, const Blob& key) { ...@@ -807,8 +807,11 @@ OPENDHT_PUBLIC inline Blob aesEncrypt(const Blob& data, const Blob& key) {
* This function uses `stretchKey` to generate an AES key from the password and a random salt. * This function uses `stretchKey` to generate an AES key from the password and a random salt.
* The result is a bundle including the salt that can be decrypted with `aesDecrypt(data, password)`. * The result is a bundle including the salt that can be decrypted with `aesDecrypt(data, password)`.
* If needed, the salt or encrypted data can be individually extracted from the bundle with `aesGetSalt` and `aesGetEncrypted`. * If needed, the salt or encrypted data can be individually extracted from the bundle with `aesGetSalt` and `aesGetEncrypted`.
* @param data: data to encrypt
* @param password: password to encrypt the data with
* @param salt: optional salt to use for key derivation. If not provided, a random salt will be generated.
*/ */
OPENDHT_PUBLIC Blob aesEncrypt(const Blob& data, std::string_view password); OPENDHT_PUBLIC Blob aesEncrypt(const Blob& data, std::string_view password, const Blob& salt = {});
/** /**
* AES-GCM decryption. * AES-GCM decryption.
......
...@@ -103,11 +103,11 @@ Blob aesEncrypt(const uint8_t* data, size_t data_length, const Blob& key) ...@@ -103,11 +103,11 @@ Blob aesEncrypt(const uint8_t* data, size_t data_length, const Blob& key)
return ret; return ret;
} }
Blob aesEncrypt(const Blob& data, std::string_view password) Blob aesEncrypt(const Blob& data, std::string_view password, const Blob& salt)
{ {
Blob salt; Blob salt_actual = salt;
Blob key = stretchKey(password, salt, 256 / 8); Blob key = stretchKey(password, salt_actual, 256 / 8);
return aesBuildEncrypted(aesEncrypt(data, key), salt); return aesBuildEncrypted(aesEncrypt(data, key), salt_actual);
} }
Blob aesDecrypt(const uint8_t* data, size_t data_length, const Blob& key) Blob aesDecrypt(const uint8_t* data, size_t data_length, const Blob& key)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment