Class: Lite::Encryption::Key

Inherits:
Object
  • Object
show all
Defined in:
lib/lite/encryption/key.rb

Constant Summary collapse

CIPHER =
OpenSSL::Cipher.new('aes-256-gcm').freeze
LENGTHS =
{
  iv: CIPHER.iv_len,
  key: CIPHER.key_len,
  password: 16,
  salt: CIPHER.key_len
}.freeze

Class Method Summary collapse

Class Method Details

.generate_ivObject



20
21
22
# File 'lib/lite/encryption/key.rb', line 20

def generate_iv
  SecureRandom.random_bytes(LENGTHS[:iv])
end

.generate_keyObject



24
25
26
27
# File 'lib/lite/encryption/key.rb', line 24

def generate_key
  generator = ActiveSupport::KeyGenerator.new(generate_password)
  generator.generate_key(generate_salt, LENGTHS[:key])
end

.generate_passwordObject



29
30
31
# File 'lib/lite/encryption/key.rb', line 29

def generate_password
  SecureRandom.hex(LENGTHS[:password])
end

.generate_saltObject



33
34
35
# File 'lib/lite/encryption/key.rb', line 33

def generate_salt
  SecureRandom.random_bytes(LENGTHS[:salt])
end