Class: SymmetricEncryption::Keystore::Memory
- Inherits:
-
Object
- Object
- SymmetricEncryption::Keystore::Memory
- Defined in:
- lib/symmetric_encryption/keystore/memory.rb
Overview
In Memory Keystore usually used for testing purposes
Direct Known Subclasses
Instance Attribute Summary collapse
-
#encrypted_key ⇒ Object
readonly
Returns the value of attribute encrypted_key.
-
#key_encrypting_key ⇒ Object
Returns the value of attribute key_encrypting_key.
Class Method Summary collapse
-
.generate_data_key(cipher_name:, app_name:, environment:, version: 0, dek: nil, **_args) ⇒ Object
Returns [Hash] a new keystore configuration after generating the data key.
Instance Method Summary collapse
-
#initialize(key_encrypting_key:, encrypted_key: nil) ⇒ Memory
constructor
Stores the Encryption key in a string.
-
#read ⇒ Object
Returns the Encryption key in the clear.
-
#write(key) ⇒ Object
Write the encrypted Encryption key to ‘encrypted_key` attribute.
Constructor Details
#initialize(key_encrypting_key:, encrypted_key: nil) ⇒ Memory
Stores the Encryption key in a string. Secures the Encryption key by encrypting it with a key encryption key.
38 39 40 41 |
# File 'lib/symmetric_encryption/keystore/memory.rb', line 38 def initialize(key_encrypting_key:, encrypted_key: nil) @encrypted_key = encrypted_key @key_encrypting_key = key_encrypting_key end |
Instance Attribute Details
#encrypted_key ⇒ Object (readonly)
Returns the value of attribute encrypted_key.
6 7 8 |
# File 'lib/symmetric_encryption/keystore/memory.rb', line 6 def encrypted_key @encrypted_key end |
#key_encrypting_key ⇒ Object
Returns the value of attribute key_encrypting_key.
5 6 7 |
# File 'lib/symmetric_encryption/keystore/memory.rb', line 5 def key_encrypting_key @key_encrypting_key end |
Class Method Details
.generate_data_key(cipher_name:, app_name:, environment:, version: 0, dek: nil, **_args) ⇒ Object
Returns [Hash] a new keystore configuration after generating the data key.
Increments the supplied version number by 1.
Notes:
-
For development and testing purposes only!!
-
Never store the encrypted encryption key in the source code / config file.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/symmetric_encryption/keystore/memory.rb', line 15 def self.generate_data_key(cipher_name:, app_name:, environment:, version: 0, dek: nil, **_args) version >= 255 ? (version = 1) : (version += 1) kek = SymmetricEncryption::Key.new(cipher_name: cipher_name) dek ||= SymmetricEncryption::Key.new(cipher_name: cipher_name) encrypted_key = new(key_encrypting_key: kek).write(dek.key) { keystore: :memory, cipher_name: cipher_name, version: version, encrypted_key: encrypted_key, iv: iv, key_encrypting_key: { key: kek.key, iv: kek.iv } } end |
Instance Method Details
#read ⇒ Object
Returns the Encryption key in the clear.
44 45 46 |
# File 'lib/symmetric_encryption/keystore/memory.rb', line 44 def read key_encrypting_key.decrypt(encrypted_key) end |
#write(key) ⇒ Object
Write the encrypted Encryption key to ‘encrypted_key` attribute.
49 50 51 |
# File 'lib/symmetric_encryption/keystore/memory.rb', line 49 def write(key) self.encrypted_key = key_encrypting_key.encrypt(key) end |