Class: AddAction

Inherits:
AesAction show all
Defined in:
lib/lockr/action/add.rb

Instance Method Summary collapse

Methods included from Aes

#decrypt, #derive_key_iv, #encrypt

Methods inherited from BaseAction

#calculate_hash, #load_from_vault, #rotate_vault, #save_to_vault

Constructor Details

#initialize(id, url, username, pwd, keyfile, vault) ⇒ AddAction

Returns a new instance of AddAction.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/lockr/action/add.rb', line 6

def initialize(id,url,username,pwd,keyfile,vault)
  keyfilehash = calculate_hash( keyfile)
  
  pwd_directory = load_from_vault( vault)
  
  if pwd_directory.has_key?( id)
    pwd_directory_id = YAML::load(decrypt( pwd_directory[id][:enc], keyfilehash, pwd_directory[id][:salt]))
  else
    pwd_directory_id = {}
  end
  
  if ( pwd_directory_id.has_key?( username))
    overwrite = ask( "Password already exists. Update? (y/n)  ") { |q| }
    unless overwrite.downcase == 'y'
      exit 14
    end
  end
  
  new_store = PasswordStore.new( id, url, username, pwd)
  pwd_directory_id[username] = new_store
  
  pwd_directory[id] = {}
  pwd_directory[id][:enc], pwd_directory[id][:salt] = encrypt( pwd_directory_id.to_yaml, keyfilehash)
  
  save_to_vault( pwd_directory, vault)
  say("Password saved for ID '<%= color('#{id}', :blue) %>' and user '<%= color('#{username}', :green) %>'")
end