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