Class: Seekrit::Store
- Inherits:
-
Object
- Object
- Seekrit::Store
- Defined in:
- lib/seekrit/store.rb
Constant Summary collapse
- CIPHER =
'aes-256-cbc'
Instance Attribute Summary collapse
-
#secrets ⇒ Object
readonly
Returns the value of attribute secrets.
Instance Method Summary collapse
- #[](name) ⇒ Object
- #[]=(name, value) ⇒ Object
- #delete(name) ⇒ Object
- #export(io) ⇒ Object
- #import(io) ⇒ Object
-
#initialize(password, file, cipher = CIPHER) ⇒ Store
constructor
A new instance of Store.
- #keys ⇒ Object
- #rename(oldname, newname) ⇒ Object
- #save ⇒ Object
Constructor Details
#initialize(password, file, cipher = CIPHER) ⇒ Store
Returns a new instance of Store.
14 15 16 17 18 19 |
# File 'lib/seekrit/store.rb', line 14 def initialize(password, file, cipher=CIPHER) @password = password @cipher = cipher @file = file @secrets = load_data(file) end |
Instance Attribute Details
#secrets ⇒ Object (readonly)
Returns the value of attribute secrets.
12 13 14 |
# File 'lib/seekrit/store.rb', line 12 def secrets @secrets end |
Instance Method Details
#[](name) ⇒ Object
25 26 27 |
# File 'lib/seekrit/store.rb', line 25 def [](name) secrets[name] && decrypt(secrets[name]) end |
#[]=(name, value) ⇒ Object
29 30 31 |
# File 'lib/seekrit/store.rb', line 29 def []=(name, value) secrets[name] = encrypt(value) end |
#delete(name) ⇒ Object
33 34 35 |
# File 'lib/seekrit/store.rb', line 33 def delete(name) secrets.delete(name) end |
#export(io) ⇒ Object
49 50 51 52 53 |
# File 'lib/seekrit/store.rb', line 49 def export(io) secrets.sort_by{ |k,_| k }.each do |name, value| io << escape(name) << "\t" << escape(decrypt(value)) << "\n" end end |
#import(io) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/seekrit/store.rb', line 55 def import(io) secrets.clear while line = io.gets name, data = line.chomp.split(/\t/, 2).map{ |a| unescape(a) } self[name] = data end end |
#keys ⇒ Object
21 22 23 |
# File 'lib/seekrit/store.rb', line 21 def keys secrets.keys end |
#rename(oldname, newname) ⇒ Object
37 38 39 40 |
# File 'lib/seekrit/store.rb', line 37 def rename(oldname, newname) self[newname] = self[oldname] delete(oldname) end |
#save ⇒ Object
42 43 44 45 46 47 |
# File 'lib/seekrit/store.rb', line 42 def save @file.rewind secrets.sort_by{ |k,_| k }.each do |name, value| @file << escape(name) << "\t" << hexdump(value) << "\n" end end |