Class: Keyring::Base
- Inherits:
-
Object
- Object
- Keyring::Base
- Defined in:
- lib/keyring.rb
Instance Method Summary collapse
- #[](id) ⇒ Object
- #[]=(id, key) ⇒ Object
- #clear ⇒ Object
- #current_key ⇒ Object
- #decrypt(message, keyring_id) ⇒ Object
- #digest(message) ⇒ Object
- #encrypt(message, keyring_id = nil) ⇒ Object
-
#initialize(keyring, options) ⇒ Base
constructor
A new instance of Base.
Constructor Details
#initialize(keyring, options) ⇒ Base
Returns a new instance of Base.
25 26 27 28 29 30 31 |
# File 'lib/keyring.rb', line 25 def initialize(keyring, ) @encryptor = [:encryptor] @digest_salt = [:digest_salt] @keyring = keyring.map do |id, value| Key.new(id, value, @encryptor.key_size) end end |
Instance Method Details
#[](id) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/keyring.rb', line 37 def [](id) raise EmptyKeyring, "keyring doesn't have any keys" if @keyring.empty? key = @keyring.find {|k| k.id == id.to_i } return key if key raise UnknownKey, "key=#{id} is not available on keyring" end |
#[]=(id, key) ⇒ Object
46 47 48 |
# File 'lib/keyring.rb', line 46 def []=(id, key) @keyring << Key.new(id, key, @encryptor.key_size) end |
#clear ⇒ Object
50 51 52 |
# File 'lib/keyring.rb', line 50 def clear @keyring.clear end |
#current_key ⇒ Object
33 34 35 |
# File 'lib/keyring.rb', line 33 def current_key @keyring.max_by(&:id) end |
#decrypt(message, keyring_id) ⇒ Object
65 66 67 68 |
# File 'lib/keyring.rb', line 65 def decrypt(, keyring_id) key = self[keyring_id] @encryptor.decrypt(key, ) end |
#digest(message) ⇒ Object
70 71 72 |
# File 'lib/keyring.rb', line 70 def digest() Digest::SHA1.hexdigest("#{message}#{@digest_salt}") end |
#encrypt(message, keyring_id = nil) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/keyring.rb', line 54 def encrypt(, keyring_id = nil) keyring_id ||= current_key&.id key = self[keyring_id] [ @encryptor.encrypt(key, ), keyring_id, digest() ] end |