Class: WSDL::Security::Verifier::CertificateResolver
- Defined in:
- lib/wsdl/security/verifier/certificate_resolver.rb
Overview
Resolves and normalizes X.509 certificates for signature verification.
This class handles certificate extraction from SOAP messages and normalization of certificate formats. It supports:
- Extracting certificates from BinarySecurityToken elements
- Resolving certificates from KeyInfo/SecurityTokenReference (IssuerSerial and SubjectKeyIdentifier)
- Using externally provided certificates
- Normalizing PEM strings to OpenSSL::X509::Certificate objects
Constant Summary collapse
- MAX_ENCODED_TOKEN_SIZE =
Maximum size in bytes for Base64-encoded BinarySecurityToken content. X.509 certificates are typically 1-4 KB; 100 KB is extremely generous.
100_000
Constants inherited from Base
Base::SOAPNS, Base::SOAP_NAMESPACES, Base::SecurityNS, Base::SignatureNS, Base::VALID_ID_PATTERN
Instance Attribute Summary collapse
-
#certificate ⇒ OpenSSL::X509::Certificate?
readonly
The resolved certificate.
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(document, security_node, signature_node: nil, provided: nil, trust_store: nil) ⇒ CertificateResolver
constructor
Creates a new certificate resolver.
-
#resolve ⇒ Boolean
Resolves the certificate for verification.
-
#valid? ⇒ Boolean
Alias for consistency with other validators.
Constructor Details
#initialize(document, security_node, signature_node: nil, provided: nil, trust_store: nil) ⇒ CertificateResolver
Creates a new certificate resolver.
51 52 53 54 55 56 57 58 59 |
# File 'lib/wsdl/security/verifier/certificate_resolver.rb', line 51 def initialize(document, security_node, signature_node: nil, provided: nil, trust_store: nil) super() @document = document @security_node = security_node @signature_node = signature_node @provided = provided @trust_store = trust_store @certificate = nil end |
Instance Attribute Details
#certificate ⇒ OpenSSL::X509::Certificate? (readonly)
Returns the resolved certificate.
40 41 42 |
# File 'lib/wsdl/security/verifier/certificate_resolver.rb', line 40 def certificate @certificate end |
Instance Method Details
#resolve ⇒ Boolean
Resolves the certificate for verification.
If a certificate was provided at initialization, it is normalized and used. Otherwise, the certificate is resolved from the signature's SecurityTokenReference.
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/wsdl/security/verifier/certificate_resolver.rb', line 68 def resolve @certificate = if @provided normalize_provided_certificate else extract_from_document end return true if @certificate add_failure('No certificate found for verification') end |
#valid? ⇒ Boolean
Alias for consistency with other validators.
83 84 85 |
# File 'lib/wsdl/security/verifier/certificate_resolver.rb', line 83 def valid? resolve end |