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



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

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

.generate_keyObject



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

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

.generate_passwordObject



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

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

.generate_saltObject



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

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