class EncryptedField::BasePolicy

EncryptedField::BasePolicy abstract class for creating encryption policies

Attributes

algorithm[R]
options[R]

Public Class Methods

new(algorithm, secret_key, options = {}) click to toggle source
# File lib/encrypted-field/base_policy.rb, line 12
def initialize(algorithm, secret_key, options = {})
  @algorithm = algorithm
  @secret_key = secret_key
  @options = options
end

Public Instance Methods

prefix_with_policy_name?() click to toggle source
# File lib/encrypted-field/base_policy.rb, line 18
def prefix_with_policy_name?
  options.fetch(:prefix_with_policy_name, true)
end

Private Instance Methods

create_cipher() click to toggle source
# File lib/encrypted-field/base_policy.rb, line 56
def create_cipher
  OpenSSL::Cipher.new(algorithm)
end
decode_iv(str) click to toggle source
# File lib/encrypted-field/base_policy.rb, line 48
def decode_iv(str)
  if options.key?(:decode_iv)
    options[:decode_iv].call(str)
  else
    Base64.strict_decode64(str)
  end
end
decode_payload(str) click to toggle source
# File lib/encrypted-field/base_policy.rb, line 32
def decode_payload(str)
  if options.key?(:decode_payload)
    options[:decode_payload].call(str)
  else
    Base64.strict_decode64(str)
  end
end
encode_iv(str) click to toggle source
# File lib/encrypted-field/base_policy.rb, line 40
def encode_iv(str)
  if options.key?(:encode_iv)
    options[:encode_iv].call(str)
  else
    Base64.strict_encode64(str)
  end
end
encode_payload(str) click to toggle source
# File lib/encrypted-field/base_policy.rb, line 24
def encode_payload(str)
  if options.key?(:encode_payload)
    options[:encode_payload].call(str)
  else
    Base64.strict_encode64(str)
  end
end
secret_key() click to toggle source
# File lib/encrypted-field/base_policy.rb, line 60
def secret_key
  case @secret_key
  when Proc
    @secret_key.call
  when String
    @secret_key
  end
end