Implement secure key via KDF for transparent data encryption/decryption #60
This commit is contained in:
@@ -1359,6 +1359,8 @@ auto s3_provider::read_file_bytes(const std::string &api_path, std::size_t size,
|
||||
return ret;
|
||||
}
|
||||
|
||||
auto total_size{utils::string::to_uint64(size_str)};
|
||||
|
||||
utils::hash::hash_256_t data_key;
|
||||
if (legacy_bucket_) {
|
||||
data_key = utils::encryption::generate_key<utils::hash::hash_256_t>(
|
||||
@@ -1366,6 +1368,21 @@ auto s3_provider::read_file_bytes(const std::string &api_path, std::size_t size,
|
||||
} else {
|
||||
utils::encryption::kdf_config data_cfg;
|
||||
ret = get_kdf_config_from_meta(api_path, data_cfg);
|
||||
if (ret == api_error::item_not_found) {
|
||||
data_buffer header_buffer;
|
||||
ret = read_bytes(utils::encryption::kdf_config::size(), 0U,
|
||||
header_buffer);
|
||||
if (ret == api_error::success) {
|
||||
if (utils::encryption::kdf_config::from_header(header_buffer,
|
||||
data_cfg)) {
|
||||
ret = set_item_meta(api_path, META_KDF,
|
||||
nlohmann::json(data_cfg).dump());
|
||||
} else {
|
||||
ret = api_error::decryption_error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ret != api_error::success) {
|
||||
return ret;
|
||||
}
|
||||
@@ -1374,7 +1391,6 @@ auto s3_provider::read_file_bytes(const std::string &api_path, std::size_t size,
|
||||
master_key_);
|
||||
}
|
||||
|
||||
auto total_size{utils::string::to_uint64(size_str)};
|
||||
return utils::encryption::read_encrypted_range(
|
||||
{
|
||||
.begin = offset,
|
||||
|
Reference in New Issue
Block a user