lib/keystorage/manager.rb in keystorage-0.1.0 vs lib/keystorage/manager.rb in keystorage-0.1.1

- old
+ new

@@ -1,63 +1,77 @@ require 'yaml' require 'openssl' -class Manager +module Keystorage + def list(group=nil) + Manager.new.list(group) + end - def initialize(file) - @file = file + def set(group,key,value) + Manager.new.set(group,key,value) end - def list(group=null) - 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 + def get(group,name) + Manager.new.get(group,name) + end + + class Manager + + def initialize(file) + @file = file + end + + 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 + end end + Hash.new end - Hash.new - end - def get(group,name) - raise "missing group" unless group - raise "missing name" unless name + def get(group,name) + raise "missing group" unless group + raise "missing name" unless name - File.open(@file,'r') do |f| - data=YAML.load(f) - raise "missing key" unless data[group][name] - return decode(data[group][name]) + File.open(@file,'r') do |f| + data=YAML.load(f) + raise "missing key" unless data[group][name] + return decode(data[group][name]) + end + false end - false - end - def all - return YAML.load_file(@file) if File.exist?(@file) - Hash.new - end + def all + return YAML.load_file(@file) if File.exist?(@file) + Hash.new + end - 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) + 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) - File.open(@file,'w',0600) do |f| - YAML.dump(data,f) + File.open(@file,'w',0600) do |f| + YAML.dump(data,f) + end end - end - def encode(str,salt="3Qw9EtWE") - enc = OpenSSL::Cipher::Cipher.new('aes256') - enc.encrypt.pkcs5_keyivgen(salt) - ((enc.update(str) + enc.final).unpack("H*")).to_s - end + def encode(str,salt="3Qw9EtWE") + enc = OpenSSL::Cipher::Cipher.new('aes256') + enc.encrypt.pkcs5_keyivgen(salt) + ((enc.update(str) + enc.final).unpack("H*")).to_s + end - 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) + 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 end -end +end