Class: ActiveCipherStorage::Providers::EnvProvider

Inherits:
Base
  • Object
show all
Includes:
KeyUtils
Defined in:
lib/active_cipher_storage/providers/env_provider.rb

Constant Summary collapse

PROVIDER_ID =
"env"
WRAP_ALGO =
"aes-256-gcm"
MASTER_KEY_SIZE =
32
WRAP_IV_SIZE =
12
WRAP_TAG_SIZE =
16

Instance Method Summary collapse

Methods inherited from Base

#key_id

Constructor Details

#initialize(encryption_key:) ⇒ EnvProvider

Returns a new instance of EnvProvider.



16
17
18
# File 'lib/active_cipher_storage/providers/env_provider.rb', line 16

def initialize(encryption_key:)
  @encryption_key = encryption_key
end

Instance Method Details

#decrypt_data_key(encrypted_key) ⇒ Object



30
31
32
33
34
35
# File 'lib/active_cipher_storage/providers/env_provider.rb', line 30

def decrypt_data_key(encrypted_key)
  master = read_master_key
  unwrap_key(encrypted_key, master)
ensure
  zero_bytes!(master)
end

#generate_data_keyObject



22
23
24
25
26
27
28
# File 'lib/active_cipher_storage/providers/env_provider.rb', line 22

def generate_data_key
  master = read_master_key
  dek    = SecureRandom.random_bytes(Cipher::KEY_SIZE)
  { plaintext_key: dek, encrypted_key: wrap_key(dek, master) }
ensure
  zero_bytes!(master)
end

#provider_idObject



20
# File 'lib/active_cipher_storage/providers/env_provider.rb', line 20

def provider_id = PROVIDER_ID