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_element(value)
Alias for: decrypt_value
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_element(value)
Alias for: encrypt_value
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