class KmsEncrypted::Clients::Base

Attributes

key_id[R]

Public Class Methods

new(key_id: nil, legacy_context: false) click to toggle source
# File lib/kms_encrypted/clients/base.rb, line 6
def initialize(key_id: nil, legacy_context: false)
  @key_id = key_id
  @legacy_context = legacy_context
end

Protected Instance Methods

context_key(k) click to toggle source
# File lib/kms_encrypted/clients/base.rb, line 30
def context_key(k)
  unless k.is_a?(String) || k.is_a?(Symbol)
    raise ArgumentError, "Context keys must be a string or symbol"
  end
  k.to_s
end
context_value(v) click to toggle source
# File lib/kms_encrypted/clients/base.rb, line 37
def context_value(v)
  unless v.is_a?(String) || v.is_a?(Integer)
    raise ArgumentError, "Context values must be a string or integer"
  end
  v.to_s
end
decryption_failed!() click to toggle source
# File lib/kms_encrypted/clients/base.rb, line 13
def decryption_failed!
  raise DecryptionError, "Decryption failed"
end
generate_context(context) click to toggle source

keys must be ordered consistently values are checked for validity then converted to strings

# File lib/kms_encrypted/clients/base.rb, line 20
def generate_context(context)
  if @legacy_context
    context.to_json
  elsif context.is_a?(Hash)
    Hash[context.sort_by { |k| k.to_s }.map { |k, v| [context_key(k), context_value(v)] }].to_json
  else
    context
  end
end