Class: Keystorage::Manager
- Inherits:
-
Object
- Object
- Keystorage::Manager
- Defined in:
- lib/keystorage/manager.rb
Instance Method Summary collapse
- #all ⇒ Object
- #decode(str, salt = "3Qw9EtWE") ⇒ Object
- #delete(group, name = nil) ⇒ Object
- #encode(str, salt = "3Qw9EtWE") ⇒ Object
- #get(group, name) ⇒ Object
-
#initialize(file = nil) ⇒ Manager
constructor
A new instance of Manager.
- #list(group = nil) ⇒ Object
- #set(group, key, value) ⇒ Object
- #write(data) ⇒ Object
Constructor Details
#initialize(file = nil) ⇒ Manager
Returns a new instance of Manager.
26 27 28 29 |
# File 'lib/keystorage/manager.rb', line 26 def initialize(file=nil) @file = DEFAULT_FILE @file = file if file end |
Instance Method Details
#all ⇒ Object
61 62 63 64 |
# File 'lib/keystorage/manager.rb', line 61 def all return YAML.load_file(@file) if File.exist?(@file) Hash.new end |
#decode(str, salt = "3Qw9EtWE") ⇒ Object
96 97 98 99 100 |
# File 'lib/keystorage/manager.rb', line 96 def decode(str,salt="3Qw9EtWE") dec = OpenSSL::Cipher::Cipher.new('aes256') dec.decrypt.pkcs5_keyivgen(salt) (dec.update(Array.new([str]).pack("H*")) + dec.final) end |
#delete(group, name = nil) ⇒ Object
80 81 82 83 84 85 86 87 88 |
# File 'lib/keystorage/manager.rb', line 80 def delete(group,name = nil) data = all if name data[group].delete(name) if data[group] else data.delete(group) if data end write(data) end |
#encode(str, salt = "3Qw9EtWE") ⇒ Object
90 91 92 93 94 |
# File 'lib/keystorage/manager.rb', line 90 def encode(str,salt="3Qw9EtWE") enc = OpenSSL::Cipher::Cipher.new('aes256') enc.encrypt.pkcs5_keyivgen(salt) ((enc.update(str) + enc.final).unpack("H*")).first.to_s end |
#get(group, name) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/keystorage/manager.rb', line 43 def get(group,name) raise "missing group" unless group raise "missing name" unless name begin File.open(@file,'r') do |f| data=YAML.load(f) raise "missing keystorage" unless data raise "missing group "+group unless data.has_key?(group) raise "missing group "+group+" name "+name unless data[group].has_key?(name) return decode(data[group][name]) end rescue =>e end false end |
#list(group = nil) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/keystorage/manager.rb', line 31 def list(group=nil) data = Hash.new if File::exist?(@file) File.open(@file,'r') do |f| data = YAML.load(f) return data.keys unless group return data[group].keys if data[group] end end Hash.new end |
#set(group, key, value) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/keystorage/manager.rb', line 66 def set(group,key,value) data=all data = Hash.new unless data data[group] = Hash.new unless data.has_key?(group) data[group][key] = encode(value) write(data) end |
#write(data) ⇒ Object
74 75 76 77 78 |
# File 'lib/keystorage/manager.rb', line 74 def write(data) File.open(@file,'w',0600) do |f| YAML.dump(data,f) end end |