Class: AttrKeyring::Keyring

Inherits:
Object
  • Object
show all
Defined in:
lib/attr_keyring/keyring.rb

Instance Method Summary collapse

Constructor Details

#initialize(keyring, encryptor = Encryptor::AES128CBC) ⇒ Keyring

Returns a new instance of Keyring.



3
4
5
6
7
8
# File 'lib/attr_keyring/keyring.rb', line 3

def initialize(keyring, encryptor = Encryptor::AES128CBC)
  @encryptor = encryptor
  @keyring = keyring.map do |id, value|
    Key.new(id, value, @encryptor.key_size)
  end
end

Instance Method Details

#[](id) ⇒ Object

Raises:



14
15
16
17
18
19
# File 'lib/attr_keyring/keyring.rb', line 14

def [](id)
  key = @keyring.find {|k| k.id == id.to_i }
  return key if key

  raise UnknownKey, "key=#{id} is not available on keyring"
end

#[]=(id, value) ⇒ Object



21
22
23
# File 'lib/attr_keyring/keyring.rb', line 21

def []=(id, value)
  @keyring << Key.new(id, value, @encryptor.key_size)
end

#clearObject



25
26
27
# File 'lib/attr_keyring/keyring.rb', line 25

def clear
  @keyring.clear
end

#current_keyObject



10
11
12
# File 'lib/attr_keyring/keyring.rb', line 10

def current_key
  @keyring.max_by(&:id)
end

#decrypt(message, keyring_id) ⇒ Object



33
34
35
# File 'lib/attr_keyring/keyring.rb', line 33

def decrypt(message, keyring_id)
  @encryptor.decrypt(self[keyring_id].value, message)
end

#encrypt(message, keyring_id = current_key.id) ⇒ Object



29
30
31
# File 'lib/attr_keyring/keyring.rb', line 29

def encrypt(message, keyring_id = current_key.id)
  @encryptor.encrypt(self[keyring_id].value, message)
end