MCPcopy Create free account
hub / github.com/apache/arrow / DecryptKeyLocally

Function DecryptKeyLocally

cpp/src/parquet/encryption/key_toolkit_internal.cc:53–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51}
52
53SecureString DecryptKeyLocally(const std::string& encoded_encrypted_key,
54 const SecureString& master_key, const std::string& aad) {
55 PARQUET_ASSIGN_OR_THROW(auto encrypted_key,
56 ::arrow::util::base64_decode(encoded_encrypted_key));
57
58 AesDecryptor key_decryptor(ParquetCipher::AES_GCM_V1,
59 static_cast<int>(master_key.size()), false,
60 false /*contains_length*/);
61
62 int32_t decrypted_key_len =
63 key_decryptor.PlaintextLength(static_cast<int>(encrypted_key.size()));
64 SecureString decrypted_key(decrypted_key_len, '\0');
65
66 decrypted_key_len = key_decryptor.Decrypt(str2span(encrypted_key), master_key.as_span(),
67 str2span(aad), decrypted_key.as_span());
68
69 return decrypted_key;
70}
71
72bool ValidateKeyLength(int32_t key_length_bits) {
73 int32_t* found_key_length = std::find(

Callers 3

GetDataEncryptionKeyMethod · 0.85
UnwrapKeyMethod · 0.85
UnwrapKeyMethod · 0.85

Calls 5

str2spanFunction · 0.85
as_spanMethod · 0.80
sizeMethod · 0.45
PlaintextLengthMethod · 0.45
DecryptMethod · 0.45

Tested by 1

UnwrapKeyMethod · 0.68