Class: Keen::AESHelperOld

Inherits:
Object
  • Object
show all
Defined in:
lib/keen/aes_helper_old.rb

Constant Summary collapse

BLOCK_SIZE =
32

Class Method Summary collapse

Class Method Details

.aes256_decrypt(key, iv_plus_encrypted) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/keen/aes_helper_old.rb', line 11

def aes256_decrypt(key, iv_plus_encrypted)
  padded_key = pad(key)
  unhexed_iv_plus_encrypted = unhexlify(iv_plus_encrypted)
  iv = unhexed_iv_plus_encrypted[0, 16]
  encrypted = unhexed_iv_plus_encrypted[16, unhexed_iv_plus_encrypted.length]
  aes = OpenSSL::Cipher::AES.new(256, :CBC)
  aes.decrypt
  aes.key = padded_key
  aes.iv = iv
  aes.update(encrypted) + aes.final
end

.aes256_encrypt(key, plaintext, iv = nil) ⇒ Object

Raises:

  • (OpenSSL::Cipher::CipherError)


23
24
25
26
27
28
29
30
31
32
33
# File 'lib/keen/aes_helper_old.rb', line 23

def aes256_encrypt(key, plaintext, iv = nil)
  raise OpenSSL::Cipher::CipherError.new("iv must be 16 bytes") if !iv.nil? && iv.length != 16
  padded_key = pad(key)
  aes = OpenSSL::Cipher::AES.new(256, :CBC)
  aes.encrypt
  aes.key = padded_key
  aes.iv = iv unless iv.nil?
  iv ||= aes.random_iv
  encrypted = aes.update(plaintext) + aes.final
  hexlify(iv) + hexlify(encrypted)
end

.hexlify(msg) ⇒ Object



35
36
37
# File 'lib/keen/aes_helper_old.rb', line 35

def hexlify(msg)
  msg.unpack('H*')[0]
end

.pad(msg) ⇒ Object



43
44
45
46
47
48
49
50
51
52
# File 'lib/keen/aes_helper_old.rb', line 43

def pad(msg)
  missing_chars = msg.length % BLOCK_SIZE
  return msg if missing_chars == 0
  
  pad_len = BLOCK_SIZE - missing_chars

  padding = pad_len.chr * pad_len
  padded = msg + padding
  padded
end

.unhexlify(msg) ⇒ Object



39
40
41
# File 'lib/keen/aes_helper_old.rb', line 39

def unhexlify(msg)
  [msg].pack('H*')
end