Module: Pousse::Crypt

Defined in:
lib/pousse/crypt.rb

Class Method Summary collapse

Class Method Details

.decrypt(data, key, iv) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# 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) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
# 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