Class: Moxml::Signature::Algorithms::SignatureMethodBase
- Inherits:
-
Object
- Object
- Moxml::Signature::Algorithms::SignatureMethodBase
- Defined in:
- lib/moxml/signature/algorithms/signature_method_base.rb
Overview
Base class for signature methods and MACs.
Subclasses declare an identifier URI per W3C spec §6.4 / §6.3 and implement #compute_signature and #verify_signature.
key is whatever OpenSSL expects (OpenSSL::PKey::RSA for RSA, a
String secret for HMAC, etc.).
Direct Known Subclasses
Class Attribute Summary collapse
-
.digest_uri ⇒ Object
readonly
Returns the value of attribute digest_uri.
-
.identifier_uri ⇒ Object
readonly
Returns the value of attribute identifier_uri.
Class Method Summary collapse
Instance Method Summary collapse
- #compute_signature(_data, _key) ⇒ Object
-
#initialize(parameters = nil) ⇒ SignatureMethodBase
constructor
Optional constructor for parameterized methods (e.g. HMACOutputLength).
- #sign(data, key) ⇒ Object
- #verify(data, key, signature) ⇒ Object
- #verify_signature(_data, _key, _signature) ⇒ Object
Constructor Details
#initialize(parameters = nil) ⇒ SignatureMethodBase
Optional constructor for parameterized methods (e.g. HMACOutputLength).
25 26 27 |
# File 'lib/moxml/signature/algorithms/signature_method_base.rb', line 25 def initialize(parameters = nil) @parameters = parameters end |
Class Attribute Details
.digest_uri ⇒ Object (readonly)
Returns the value of attribute digest_uri.
15 16 17 |
# File 'lib/moxml/signature/algorithms/signature_method_base.rb', line 15 def digest_uri @digest_uri end |
.identifier_uri ⇒ Object (readonly)
Returns the value of attribute identifier_uri.
15 16 17 |
# File 'lib/moxml/signature/algorithms/signature_method_base.rb', line 15 def identifier_uri @identifier_uri end |
Class Method Details
.identifier(uri, digest_uri: nil) ⇒ Object
17 18 19 20 21 |
# File 'lib/moxml/signature/algorithms/signature_method_base.rb', line 17 def identifier(uri, digest_uri: nil) @identifier_uri = uri @digest_uri = digest_uri Algorithms.register(:signature_method, uri, self) end |
Instance Method Details
#compute_signature(_data, _key) ⇒ Object
46 47 48 49 |
# File 'lib/moxml/signature/algorithms/signature_method_base.rb', line 46 def compute_signature(_data, _key) raise NotImplementedError, "#{self.class} must implement #compute_signature" end |
#sign(data, key) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/moxml/signature/algorithms/signature_method_base.rb', line 29 def sign(data, key) compute_signature(data, key) rescue OpenSSL::PKey::PKeyError => e raise SigningError.new( "signing failed: #{e.class}", algorithm: self.class.identifier_uri, ) end |
#verify(data, key, signature) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/moxml/signature/algorithms/signature_method_base.rb', line 38 def verify(data, key, signature) verify_signature(data, key, signature) rescue OpenSSL::PKey::PKeyError => e raise VerificationError.new( "verification raised: #{e.class}", ) end |
#verify_signature(_data, _key, _signature) ⇒ Object
51 52 53 54 |
# File 'lib/moxml/signature/algorithms/signature_method_base.rb', line 51 def verify_signature(_data, _key, _signature) raise NotImplementedError, "#{self.class} must implement #verify_signature" end |