Module: Keen::AESHelper

Included in:
ScopedKey, ScopedKey
Defined in:
lib/keen/aes_helper.rb

Constant Summary collapse

BLOCK_SIZE =
32

Instance Method Summary collapse

Instance Method Details

#aes256_decrypt(key, iv_plus_encrypted) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/keen/aes_helper.rb', line 18

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

#aes256_encrypt(key, plaintext) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/keen/aes_helper.rb', line 10

def aes256_encrypt(key, plaintext)
  aes = OpenSSL::Cipher::AES.new(256, :CBC)
  aes.encrypt
  aes.key = key
  iv = aes.random_iv
  [aes.update(plaintext) + aes.final, iv]
end

#hexlify(msg) ⇒ Object



28
29
30
# File 'lib/keen/aes_helper.rb', line 28

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

#pad(msg) ⇒ Object



36
37
38
39
40
41
# File 'lib/keen/aes_helper.rb', line 36

def pad(msg)
  pad_len = BLOCK_SIZE - (msg.length % BLOCK_SIZE)
  padding = pad_len.chr * pad_len
  padded = msg + padding
  padded
end

#unhexlify(msg) ⇒ Object



32
33
34
# File 'lib/keen/aes_helper.rb', line 32

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