class Underlock::Encryptor

Public Instance Methods

decrypt(encrypted_entity) click to toggle source
# File lib/underlock/encryptor.rb, line 17
def decrypt(encrypted_entity)
  decode_cipher = Underlock::Base.config.cipher.dup
  decode_cipher.decrypt
  decode_cipher.key = private_decrypt(encrypted_entity.key)
  decode_cipher.iv = private_decrypt(encrypted_entity.iv)
  decode_cipher.update(base64_decode(encrypted_entity.value)[0])
end
encrypt(value) click to toggle source
# File lib/underlock/encryptor.rb, line 4
def encrypt(value)
  cipher = Underlock::Base.config.cipher.dup
  cipher.encrypt
  key = cipher.random_key
  iv  = cipher.random_iv

  encrypted_value = base64_encode(cipher.update(value))
  encrypted_key = public_encrypt(key)
  encrypted_iv  = public_encrypt(iv)

  EncryptedEntity.new(value: encrypted_value, key: encrypted_key, iv: encrypted_iv)
end

Private Instance Methods

base64_decode(value) click to toggle source
# File lib/underlock/encryptor.rb, line 41
def base64_decode(value)
  value.unpack('m')
end
base64_encode(value) click to toggle source
# File lib/underlock/encryptor.rb, line 37
def base64_encode(value)
  [value].pack('m')
end
private_decrypt(value) click to toggle source
# File lib/underlock/encryptor.rb, line 32
def private_decrypt(value)
  key = OpenSSL::PKey::RSA.new(Underlock::Base.config.private_key)
  base64_decode(key.private_decrypt(base64_decode(value)[0]))[0]
end
public_encrypt(value) click to toggle source
# File lib/underlock/encryptor.rb, line 27
def public_encrypt(value)
  key = OpenSSL::PKey::RSA.new(Underlock::Base.config.public_key)
  base64_encode(key.public_encrypt(base64_encode(value)))
end