class SamlIdp::SignedInfoBuilder
Constants
- DIGEST_METHODS
- SIGNATURE_METHODS
Attributes
digest_value[RW]
raw_algorithm[RW]
reference_id[RW]
Public Class Methods
new(reference_id, digest_value, raw_algorithm)
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 26 def initialize(reference_id, digest_value, raw_algorithm) self.reference_id = reference_id self.digest_value = digest_value self.raw_algorithm = raw_algorithm end
Public Instance Methods
raw()
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 32 def raw builder = Builder::XmlMarkup.new builder.tag! "ds:SignedInfo", "xmlns:ds" => "http://www.w3.org/2000/09/xmldsig#" do |signed_info| signed_info.tag!("ds:CanonicalizationMethod", Algorithm: "http://www.w3.org/2001/10/xml-exc-c14n#") {} signed_info.tag!("ds:SignatureMethod", Algorithm: signature_method ) {} signed_info.tag! "ds:Reference", URI: reference_string do |reference| reference.tag! "ds:Transforms" do |transforms| transforms.tag!("ds:Transform", Algorithm: "http://www.w3.org/2000/09/xmldsig#enveloped-signature") {} transforms.tag!("ds:Transform", Algorithm: "http://www.w3.org/2001/10/xml-exc-c14n#") {} end reference.tag!("ds:DigestMethod", Algorithm: digest_method) {} reference.tag! "ds:DigestValue", digest_value end end end
signed()
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 48 def signed encoded.gsub(/\n/, "") end
Private Instance Methods
clean_algorithm_name()
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 62 def clean_algorithm_name algorithm_name.to_s.downcase end
digest_method()
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 52 def digest_method DIGEST_METHODS.fetch(clean_algorithm_name, DIGEST_METHODS["sha1"]) end
encoded()
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 77 def encoded key = OpenSSL::PKey::RSA.new(secret_key, password) Base64.strict_encode64(key.sign(algorithm.new, raw)) end
password()
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 72 def password SamlIdp.config.password end
reference_string()
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 83 def reference_string "#_#{reference_id}" end
secret_key()
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 67 def secret_key SamlIdp.config.secret_key end
signature_method()
click to toggle source
# File lib/saml_idp/signed_info_builder.rb, line 57 def signature_method SIGNATURE_METHODS.fetch(clean_algorithm_name, SIGNATURE_METHODS["sha1"]) end