-pair<saml2::Issuer*,const saml2md::RoleDescriptor*> MessageFlowRule::evaluate(
- const GenericRequest& request,
- const XMLObject& message,
- const saml2md::MetadataProvider* metadataProvider,
- const QName* role,
- const TrustEngine* trustEngine
- ) const
-{
- Category& log=Category::getInstance(SAML_LOGCAT".SecurityPolicyRule.MessageFlow");
- log.debug("evaluating message flow policy");
-
- try {
- const XMLCh* ns = message.getElementQName().getNamespaceURI();
- if (ns && (XMLString::equals(ns, samlconstants::SAML20P_NS) || XMLString::equals(ns, samlconstants::SAML1P_NS))) {
- const RootObject& obj = dynamic_cast<const RootObject&>(message);
- check(obj.getID(), obj.getIssueInstantEpoch());
- }
- else {
- log.debug("ignoring unrecognized message type");
- }
- }
- catch (bad_cast&) {
- log.warn("caught a bad_cast while extracting issuer");
- }
- return pair<saml2::Issuer*,const saml2md::RoleDescriptor*>(NULL,NULL);
-}
-
-void MessageFlowRule::check(const XMLCh* id, time_t issueInstant) const