module Cloak::Utils
Constants
- HLL_ELEMENT_NONCE
- KEY_NONCE
- MEMBER_NONCE
Private Instance Methods
create_encryptor(key)
click to toggle source
# File lib/cloak/utils.rb, line 9 def create_encryptor(key) @encryptor = Miscreant::AEAD.new("AES-SIV", [key].pack("H*")) end
decrypt_field(key, field)
click to toggle source
# File lib/cloak/utils.rb, line 51 def decrypt_field(key, field) @encryptor.open(to_binary(field), nonce: key.slice(0, 16)) end
decrypt_hll_element(value)
click to toggle source
# File lib/cloak/utils.rb, line 67 def decrypt_hll_element(value) @encryptor.open(to_binary(value), nonce: HLL_ELEMENT_NONCE) end
decrypt_key(key)
click to toggle source
# File lib/cloak/utils.rb, line 43 def decrypt_key(key) @encryptor.open(to_binary(key), nonce: KEY_NONCE) end
decrypt_member(value)
click to toggle source
# File lib/cloak/utils.rb, line 59 def decrypt_member(value) @encryptor.open(to_binary(value), nonce: MEMBER_NONCE) end
decrypt_value(value)
click to toggle source
# File lib/cloak/utils.rb, line 22 def decrypt_value(value) if value.nil? || value.empty? value else value = to_binary(value) nonce = value.slice(0, 16) value = value.slice(16..-1) raise Error, "Decryption failed" if nonce.bytesize != 16 || value.nil? value = @encryptor.open(value, nonce: nonce) value.force_encoding(Encoding::UTF_8) value end end
Also aliased as: decrypt_element
encrypt_field(key, field)
click to toggle source
# File lib/cloak/utils.rb, line 47 def encrypt_field(key, field) @encryptor.seal(to_binary(field), nonce: key.slice(0, 16)) end
encrypt_hll_element(value)
click to toggle source
# File lib/cloak/utils.rb, line 63 def encrypt_hll_element(value) @encryptor.seal(to_binary(value), nonce: HLL_ELEMENT_NONCE) end
encrypt_key(key)
click to toggle source
# File lib/cloak/utils.rb, line 39 def encrypt_key(key) @encryptor.seal(to_binary(key), nonce: KEY_NONCE) end
encrypt_member(value)
click to toggle source
# File lib/cloak/utils.rb, line 55 def encrypt_member(value) @encryptor.seal(to_binary(value), nonce: MEMBER_NONCE) end
encrypt_value(value)
click to toggle source
# File lib/cloak/utils.rb, line 13 def encrypt_value(value) if value.nil? value else nonce = Miscreant::AEAD.generate_nonce nonce + @encryptor.seal(to_binary(value), nonce: nonce) end end
Also aliased as: encrypt_element
to_binary(value)
click to toggle source
# File lib/cloak/utils.rb, line 71 def to_binary(value) value = value.to_s value = value.dup.force_encoding(Encoding::BINARY) unless value.encoding == Encoding::BINARY value end