Class: Sigstore::Internal::Keyring
- Inherits:
-
Object
- Object
- Sigstore::Internal::Keyring
- Defined in:
- lib/sigstore/internal/keyring.rb
Instance Method Summary collapse
-
#initialize(keys:) ⇒ Keyring
constructor
A new instance of Keyring.
- #verify(key_id:, signature:, data:) ⇒ Object
Constructor Details
#initialize(keys:) ⇒ Keyring
Returns a new instance of Keyring.
20 21 22 23 24 25 26 27 |
# File 'lib/sigstore/internal/keyring.rb', line 20 def initialize(keys:) @keyring = {} keys.each do |key| raise Error, "Duplicate key id #{key.key_id} in keyring" if @keyring.key?(key.key_id) @keyring[key.key_id] = key end end |
Instance Method Details
#verify(key_id:, signature:, data:) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/sigstore/internal/keyring.rb', line 29 def verify(key_id:, signature:, data:) key = @keyring.fetch(key_id) { raise KeyError, "key not found: #{key_id.inspect}, known: #{@keyring.keys}" } return true if key.verify("SHA256", signature, data) raise(Error::InvalidSignature, "invalid signature: #{signature.inspect} over #{data.inspect} with key #{key_id.inspect}") rescue OpenSSL::PKey::PKeyError => e raise(Error::InvalidSignature, "#{e}: invalid signature: #{signature.inspect} over #{data.inspect} with key #{key_id.inspect}") end |