9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/daffy_lib/caching_encryptor.rb', line 9
def self.zt_encrypt(*args, &_block)
data, partition_guid, encryption_epoch, expires_in, cmk_key_id = validate_encrypt_params(*args)
kms = DaffyLib::KeyManagementService.new(partition_guid, expires_in, cmk_key_id)
key_info = kms.find_or_create_encryption_key(encryption_epoch)
plaintext_key = kms.retrieve_plaintext_key(key_info)
encryption_result = PorkyLib::Symmetric.instance.encrypt_with_key(data, plaintext_key)
{
key_guid: key_info.guid,
key: key_info.encrypted_data_encryption_key,
data: Base64.encode64(encryption_result.ciphertext),
nonce: Base64.encode64(encryption_result.nonce)
}.to_json
rescue DaffyLib::KeyManagementService::KeyManagementServiceException => e
Rails.logger.error("KeyManagementService exception on encrypt: #{e.message}")
raise EncryptionFailedException
rescue RbNaCl::CryptoError, RbNaCl::LengthError => e
Rails.logger.error("RbNaCl exception on encrypt: #{e.message}")
raise EncryptionFailedException
end
|