Module: Legion::Data::Encryption::SequelPlugin

Extended by:
Logging::Helper
Defined in:
lib/legion/data/encryption/sequel_plugin.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Class Method Summary collapse

Methods included from Logging::Helper

handle_exception

Class Method Details

.aad_for(table_name:, primary_key:, column:) ⇒ Object



14
15
16
# File 'lib/legion/data/encryption/sequel_plugin.rb', line 14

def aad_for(table_name:, primary_key:, column:)
  "#{table_name}:#{primary_key || 0}:#{column}"
end

.decrypt_value(blob:, key:, table_name:, primary_key:, column:) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/legion/data/encryption/sequel_plugin.rb', line 18

def decrypt_value(blob:, key:, table_name:, primary_key:, column:)
  errors = []

  aad_candidates(primary_key).each do |aad_primary_key|
    aad = aad_for(table_name: table_name, primary_key: aad_primary_key, column: column)
    return Legion::Data::Encryption::Cipher.decrypt(blob, key: key, aad: aad)
  rescue OpenSSL::Cipher::CipherError, ArgumentError => e
    errors << e
  end

  raise errors.last if errors.any?
end