class Keyring::Key
Attributes
encryption_key[R]
id[R]
signing_key[R]
Public Class Methods
new(id, key, key_size)
click to toggle source
# File lib/keyring/key.rb, line 7 def initialize(id, key, key_size) @id = Integer(id) @key_size = key_size @encryption_key, @signing_key = parse_key(key) end
Public Instance Methods
to_s()
click to toggle source
# File lib/keyring/key.rb, line 13 def to_s "#<Keyring::Key id=#{id.inspect}>" end
Also aliased as: inspect
Private Instance Methods
decode_key(key, key_size)
click to toggle source
# File lib/keyring/key.rb, line 32 def decode_key(key, key_size) if key.bytesize == key_size key else begin Base64.strict_decode64(key) rescue ArgumentError Base64.decode64(key) end end end
parse_key(key)
click to toggle source
# File lib/keyring/key.rb, line 18 def parse_key(key) expected_key_size = @key_size * 2 secret = decode_key(key, expected_key_size) unless secret.bytesize == expected_key_size raise InvalidSecret, "Secret must be #{expected_key_size} bytes, instead got #{secret.bytesize}" # rubocop:disable Metrics/LineLength end signing_key = secret[0...@key_size] encryption_key = secret[@key_size..-1] [encryption_key, signing_key] end