class COSE::Sign
Constants
- CONTEXT
Attributes
payload[R]
signatures[R]
Public Class Methods
keyword_arguments_for_initialize(decoded)
click to toggle source
# File lib/cose/sign.rb, line 14 def self.keyword_arguments_for_initialize(decoded) { payload: decoded[0], signatures: decoded[1].map { |s| COSE::Signature.from_array(s) } } end
new(payload:, signatures:, **keyword_arguments)
click to toggle source
Calls superclass method
COSE::SecurityMessage::new
# File lib/cose/sign.rb, line 22 def initialize(payload:, signatures:, **keyword_arguments) super(**keyword_arguments) @payload = payload @signatures = signatures end
tag()
click to toggle source
# File lib/cose/sign.rb, line 18 def self.tag 98 end
Public Instance Methods
verify(key, external_aad = nil)
click to toggle source
# File lib/cose/sign.rb, line 29 def verify(key, external_aad = nil) signature = signatures.detect { |s| s.headers.kid == key.kid } if signature signature.algorithm.verify(key, signature.signature, verification_data(signature, external_aad)) else raise(COSE::Error, "No signature matches key kid") end end
Private Instance Methods
verification_data(signature, external_aad = nil)
click to toggle source
# File lib/cose/sign.rb, line 41 def verification_data(signature, external_aad = nil) @verification_data ||= CBOR.encode( [ CONTEXT, serialized_map(protected_headers), serialized_map(signature.protected_headers), external_aad || ZERO_LENGTH_BIN_STRING, payload ] ) end