module Pousse::Crypt

Public Class Methods

decrypt(data, key, iv) click to toggle source
# File lib/pousse/crypt.rb, line 9
def self.decrypt(data, key, iv)
  aes = OpenSSL::Cipher::Cipher.new('aes-256-cbc')
  aes.decrypt
  aes.reset
  aes.key = Digest::SHA256.digest(key)
  aes.iv = Base64.strict_decode64(iv)

  data = Base64.strict_decode64(data)
  return aes.update(data) + aes.final
end
encrypt(data, key, iv = nil) click to toggle source
# File lib/pousse/crypt.rb, line 20
def self.encrypt(data, key, iv = nil)
  aes = OpenSSL::Cipher::Cipher.new('aes-256-cbc')
  iv ||= aes.random_iv
  aes.encrypt
  aes.reset
  aes.key = Digest::SHA256.digest(key)
  aes.iv  = iv

  encrypted_data = aes.update(data) + aes.final
  res = Base64.strict_encode64( encrypted_data )
  return [res, Base64.strict_encode64(iv)]
end