class PasswordVault::Vault
Public Class Methods
new(key)
click to toggle source
# File lib/password_vault/vault.rb, line 6 def initialize(key) @key = Digest::SHA512.digest(key) end
Public Instance Methods
delete_password(name)
click to toggle source
# File lib/password_vault/vault.rb, line 19 def delete_password(name) if p = get_password(name) @passwords -= [p] end end
dump()
click to toggle source
# File lib/password_vault/vault.rb, line 42 def dump Marshal.dump(passwords) end
get_password(name)
click to toggle source
# File lib/password_vault/vault.rb, line 14 def get_password(name) found = @passwords.select {|p| p.name == name } found.first end
lock()
click to toggle source
# File lib/password_vault/vault.rb, line 33 def lock crypt(:encrypt, dump) end
passwords()
click to toggle source
# File lib/password_vault/vault.rb, line 10 def passwords @passwords ||= [] end
read()
click to toggle source
# File lib/password_vault/vault.rb, line 29 def read unlock File.read(PasswordVault::VaultFile) end
unlock(data)
click to toggle source
# File lib/password_vault/vault.rb, line 37 def unlock(data) dump = crypt(:decrypt, data) @passwords = Marshal.load(dump) end
write()
click to toggle source
# File lib/password_vault/vault.rb, line 25 def write File.open(PasswordVault::VaultFile, 'w') {|f| f.write(lock) } end
Private Instance Methods
crypt(mode, data)
click to toggle source
# File lib/password_vault/vault.rb, line 47 def crypt(mode, data) cipher = OpenSSL::Cipher.new 'AES256' cipher.send mode cipher.key = @key cipher.update(data) << cipher.final end