class Keylime::Credential

Easy wrapper around getting and setting secrets

Public Class Methods

new(params = {}) click to toggle source
# File lib/keylime/credential.rb, line 16
def initialize(params = {})
  @options = params
end

Public Instance Methods

delete!() click to toggle source
# File lib/keylime/credential.rb, line 33
def delete!
  get && keychain_segment.where(@options).first.delete
  nil
end
get() click to toggle source
# File lib/keylime/credential.rb, line 20
def get
  keychain_segment.where(@options).first
end
get!(message) click to toggle source
# File lib/keylime/credential.rb, line 24
def get!(message)
  get || prompt(message)
end
set(value) click to toggle source
# File lib/keylime/credential.rb, line 28
def set(value)
  delete!
  keychain_segment.create(@options.merge(password: value))
end

Private Instance Methods

key_type() click to toggle source
# File lib/keylime/credential.rb, line 56
def key_type
  @options[:server] ? :internet_passwords : :generic_passwords
end
keychain() click to toggle source
# File lib/keylime/credential.rb, line 49
def keychain
  return @keychain if @keychain
  @keychain = FileKeychain.new(@options[:keychain]) unless Keylime::ENABLED
  @keychain ||= Keychain.open(@options[:keychain]) if @options[:keychain]
  @keychain ||= Keychain
end
keychain_segment() click to toggle source
# File lib/keylime/credential.rb, line 60
def keychain_segment
  @keychain_segment ||= keychain.send(key_type)
end
prompt(message) click to toggle source
# File lib/keylime/credential.rb, line 40
def prompt(message)
  set UserInput.new(
    message: message,
    secret: true,
    attempts: 3,
    validation: /.+/
  ).ask
end