class CryptKeeper::Provider::PostgresPgpPublicKey

Attributes

key[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/crypt_keeper/provider/postgres_pgp_public_key.rb, line 6
def initialize(options = {})
  ::ActiveSupport.run_load_hooks(:crypt_keeper_postgres_pgp_log, self)

  @key = options.fetch(:key) do
    raise ArgumentError, "Missing :key"
  end

  @public_key  = options.fetch(:public_key)
  @private_key = options[:private_key]
end

Public Instance Methods

decrypt(value) click to toggle source

Public: Decrypts a string

Returns a plaintext string

# File lib/crypt_keeper/provider/postgres_pgp_public_key.rb, line 31
def decrypt(value)
  if @private_key.present? && encrypted?(value)
    escape_and_execute_sql(["SELECT pgp_pub_decrypt(?, dearmor(?), ?)",
      value, @private_key, @key])['pgp_pub_decrypt']
  else
    value
  end
end
encrypt(value) click to toggle source

Public: Encrypts a string

Returns an encrypted string

# File lib/crypt_keeper/provider/postgres_pgp_public_key.rb, line 20
def encrypt(value)
  if !@private_key.present? && encrypted?(value)
    value
  else
    escape_and_execute_sql(["SELECT pgp_pub_encrypt(?, dearmor(?))", value.to_s, @public_key])['pgp_pub_encrypt']
  end
end