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

Function DecryptKeyLocally

cpp/src/parquet/encryption/key_toolkit_internal.cc:53–69  ·  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 std::string encrypted_key = ::arrow::util::base64_decode(encoded_encrypted_key);
56
57 AesDecryptor key_decryptor(ParquetCipher::AES_GCM_V1,
58 static_cast<int>(master_key.size()), false,
59 false /*contains_length*/);
60
61 int32_t decrypted_key_len =
62 key_decryptor.PlaintextLength(static_cast<int>(encrypted_key.size()));
63 SecureString decrypted_key(decrypted_key_len, '\0');
64
65 decrypted_key_len = key_decryptor.Decrypt(str2span(encrypted_key), master_key.as_span(),
66 str2span(aad), decrypted_key.as_span());
67
68 return decrypted_key;
69}
70
71bool ValidateKeyLength(int32_t key_length_bits) {
72 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