class Gossiperl::Client::Encryption::Aes256

Public Class Methods

new(key_in) click to toggle source
# File lib/gossiperl_client/encryption/aes256.rb, line 9
def initialize key_in
  # setup key:
  self.key = ::Digest::SHA256.digest(key_in)
end

Public Instance Methods

algorithm() click to toggle source
# File lib/gossiperl_client/encryption/aes256.rb, line 14
def algorithm
  'AES-256-CBC'
end
decrypt(cipher) click to toggle source
# File lib/gossiperl_client/encryption/aes256.rb, line 29
def decrypt cipher
  iv = cipher[0...16]
  cipher_data = cipher[16..-1]
  decode_cipher = ::OpenSSL::Cipher::Cipher.new(algorithm)
  decode_cipher.decrypt
  decode_cipher.key = self.key
  decode_cipher.padding = 0
  decode_cipher.iv = iv
  plain = decode_cipher.update(cipher_data)
  plain << decode_cipher.final
  plain
end
encrypt(data) click to toggle source
# File lib/gossiperl_client/encryption/aes256.rb, line 18
def encrypt data
  random_iv = OpenSSL::Cipher::Cipher.new(algorithm).random_iv
  aes = ::OpenSSL::Cipher::Cipher.new(algorithm)
  aes.encrypt
  aes.key = self.key
  aes.iv = random_iv
  cipher = aes.update(data)
  cipher << aes.final
  random_iv + cipher
end