114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/saml/util.rb', line 114
def verify_xml(message, raw_body)
document = Xmldsig::SignedDocument.new(raw_body)
signature_valid = document.validate do |signature, data, signature_algorithm|
message.provider.verify(signature_algorithm, signature, data, message.signature.key_name)
end
fail Saml::Errors::SignatureInvalid unless signature_valid
signed_node = document.signed_nodes.find { |node| node['ID'] == message._id }
message.class.parse(signed_node.canonicalize, single: true)
end
|