lib/attr_vault/keyring.rb in attr_vault-0.2.1 vs lib/attr_vault/keyring.rb in attr_vault-1.0.0

- old
+ new

@@ -1,35 +1,29 @@ module AttrVault class Key - attr_reader :id, :value, :created_at + attr_reader :id, :value - def initialize(id, value, created_at=nil) - if id.nil? - raise InvalidKey, "key id required" - end - if value.nil? + def initialize(id, value) + if value.nil? || value.empty? raise InvalidKey, "key value required" end begin id = Integer(id) rescue - if created_at.nil? - raise InvalidKey, "key created_at required" - end + raise InvalidKey, "key id must be an integer" end @id = id @value = value - @created_at = created_at end def digest(data) AttrVault::Encryption::hmac_digest(value, data) end def to_json(*args) - { id: id, value: value, created_at: created_at }.to_json + { id: id, value: value }.to_json end end class Keyring attr_reader :keys @@ -37,17 +31,11 @@ def self.load(keyring_data) keyring = Keyring.new begin candidate_keys = JSON.parse(keyring_data, symbolize_names: true) - case candidate_keys - when Array - candidate_keys.each do |k| - created_at = Time.parse(k[:created_at]) if k.has_key?(:created_at) - keyring.add_key(Key.new(k[:id], k[:value], created_at || Time.now)) - end - when Hash + if candidate_keys.is_a?(Hash) candidate_keys.each do |key_id, key| keyring.add_key(Key.new(key_id.to_s, key)) end else raise InvalidKeyring, "Invalid JSON structure" @@ -82,11 +70,11 @@ def has_key?(id) !@keys.find { |k| k.id == id }.nil? end def current_key - k = @keys.sort_by(&:created_at).last + k = @keys.sort_by(&:id).last if k.nil? raise KeyringEmpty, "No keys in keyring" end k end @@ -94,16 +82,11 @@ def digests(data) keys.map { |k| k.digest(data) } end def to_json - if @keys.all? { |k| k.created_at.nil? } - @keys.each_with_object({}) do |k,obj| - obj[k.id] = k.value - end.to_json - else - # Assume we are dealing with a legacy keyring - @keys.to_json - end + @keys.each_with_object({}) do |k,obj| + obj[k.id] = k.value + end.to_json end end end