Class: AttrEncrypter::Boxes

Inherits:
Object
  • Object
show all
Defined in:
lib/attr_encrypter/boxes.rb

Constant Summary collapse

KEY_FORMAT =
/^(\d+)\.([a-f0-9]{64})$/.freeze

Instance Method Summary collapse

Constructor Details

#initialize(keychain) ⇒ Boxes

Returns a new instance of Boxes.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/attr_encrypter/boxes.rb', line 7

def initialize(keychain)
  @boxes = keychain.split.reduce({}) do |keys, item|
    segments = item.match(KEY_FORMAT)
    version  = segments[1].to_i
    key      = [segments[2]].pack("H*")

    keys.merge(version => RbNaCl::SimpleBox.from_secret_key(key))
  end

  if @boxes.empty?
    raise AttrEncrypter::Errors::NoKeychainError
  end

  @boxes.freeze
end

Instance Method Details

#[](version) ⇒ Object



23
24
25
# File 'lib/attr_encrypter/boxes.rb', line 23

def [](version)
  @boxes[version]
end

#latest_versionObject



27
28
29
# File 'lib/attr_encrypter/boxes.rb', line 27

def latest_version
  @boxes.keys.max
end