module

SAML::Utils

Utility methods for SAML processing

Constants

BINDINGS = { post: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", redirect: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", }
DSIG = "http://www.w3.org/2000/09/xmldsig#"
DURATION_FORMAT = /^(-?)P(?:(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:[.,]\d+)?)S)?)?|(\d+)W)$/

Duration format regex (ISO 8601)

UUID_PREFIX = "_"
XENC = "http://www.w3.org/2001/04/xmlenc#"

Instance methods

build_cert(cert : String | Nil) : OpenSSL::X509::Certificate | Nil

Build OpenSSL certificate object from string

Source
build_private_key(key : String | Nil) : OpenSSL::PKey::RSA | Nil

Build OpenSSL private key object from string

Source
build_query(type : String, data : String, relay_state : String | Nil, sig_alg : String) : String

Build query string for HTTP-Redirect binding

Source
build_query_from_raw(type : String, raw_data : String, raw_relay_state : String | Nil, raw_sig_alg : String) : String

Build query string from raw (already encoded) parts

Source
cert_active?(cert : OpenSSL::X509::Certificate) : Bool

Check if a certificate is active (started and not expired)

Source
cert_expired?(cert : OpenSSL::X509::Certificate) : Bool

Check if a certificate is expired

Source
compute_fingerprint(cert : OpenSSL::X509::Certificate, algorithm : String = XMLSecurity::SHA256) : String

Compute certificate fingerprint with specified algorithm

Source
decrypt_data(encrypted_node : XML::Node, private_key : OpenSSL::PKey::RSA) : String

Decrypt encrypted data

Source
decrypt_multi(encrypted_node : XML::Node, private_keys : Array(OpenSSL::PKey::RSA)) : String

Decrypt encrypted data using multiple private keys

Source
extract_cert_from_signature(document : XML::Node) : OpenSSL::X509::Certificate | Nil

Extract certificate from XML signature

Source
format_cert(cert : String) : String

Format a certificate properly with BEGIN/END markers

Source
format_private_key(key : String) : String

Format a private key properly with BEGIN/END markers

Source
parse_duration(duration : String, timestamp : Time = Time.utc) : Time | Nil

Parse ISO 8601 duration and apply to timestamp

Source
retrieve_plaintext(cipher_text : Bytes | String, key : Bytes | OpenSSL::PKey::RSA, algorithm : String) : String

Decrypt cipher text based on algorithm

Source
retrieve_symmetric_key(encrypt_data : XML::Node, private_key : OpenSSL::PKey::RSA) : Bytes

Retrieve symmetric key from encrypted data

Source
status_error_msg(error_msg : String, raw_status_code : String | Nil, status_message : String | Nil) : String

Build status error message

Source
uri_match?(url1 : String, url2 : String) : Bool

Match URIs with case-insensitive comparison

Source
uuid

Generate a SAML-compliant UUID with prefix

Source
verify_signature(cert : OpenSSL::X509::Certificate, sig_alg : String, signature : String, query_string : String) : Bool

Verify signature on HTTP-Redirect binding

Source