X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Fsaml2%2Fprofile%2Fimpl%2FAssertion20Validator.cpp;h=a1e059933ff9f8545a9f230f1fb8002ec63d199c;hp=b5c857fda3d1ace52db7571488f35cb69940793e;hb=1462057b3b9ae7e165d34d988e30b14c213672ca;hpb=c072b75e6f6e05e24a1c35b952008b38d0d375c1 diff --git a/saml/saml2/profile/impl/Assertion20Validator.cpp b/saml/saml2/profile/impl/Assertion20Validator.cpp index b5c857f..a1e0599 100644 --- a/saml/saml2/profile/impl/Assertion20Validator.cpp +++ b/saml/saml2/profile/impl/Assertion20Validator.cpp @@ -1,29 +1,34 @@ -/* - * Copyright 2001-2007 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ /** * Assertion20Validator.cpp * - * SAML 2.0 basic assertion validator + * SAML 2.0 basic assertion validator. */ #include "internal.h" #include "saml2/core/Assertions.h" #include "saml2/profile/AssertionValidator.h" +#include #include #include #include @@ -31,8 +36,18 @@ using namespace opensaml::saml2; using namespace xmltooling::logging; using namespace xmltooling; +using namespace boost; using namespace std; +AssertionValidator::AssertionValidator(const XMLCh* recipient, const vector* audiences, time_t ts) + : m_recipient(recipient), m_audiences(audiences), m_ts(ts) +{ +} + +AssertionValidator::~AssertionValidator() +{ +} + void AssertionValidator::validate(const xmltooling::XMLObject* xmlObject) const { const Assertion* a=dynamic_cast(xmlObject); @@ -64,23 +79,20 @@ void AssertionValidator::validateAssertion(const Assertion& assertion) const // Now we process conditions, starting with the known types and then extensions. const vector& acvec = conds->getAudienceRestrictions(); - for (vector::const_iterator ac = acvec.begin(); ac!=acvec.end(); ++ac) - validateCondition(*ac); + for_each(acvec.begin(), acvec.end(), boost::bind(&AssertionValidator::validateCondition, this, _1)); const vector& dncvec = conds->getOneTimeUses(); - for (vector::const_iterator dnc = dncvec.begin(); dnc!=dncvec.end(); ++dnc) - validateCondition(*dnc); + for_each(dncvec.begin(), dncvec.end(), boost::bind(&AssertionValidator::validateCondition, this, _1)); const vector& convec = conds->getConditions(); - for (vector::const_iterator c = convec.begin(); c!=convec.end(); ++c) - validateCondition(*c); + for_each(convec.begin(), convec.end(), boost::bind(&AssertionValidator::validateCondition, this, _1)); } void AssertionValidator::validateCondition(const Condition* c) const { const AudienceRestriction* ac=dynamic_cast(c); if (!ac) { - Category::getInstance(SAML_LOGCAT".AssertionValidator").error("unrecognized Condition in assertion (%s)", + Category::getInstance(SAML_LOGCAT ".AssertionValidator").error("unrecognized Condition in assertion (%s)", c->getSchemaType() ? c->getSchemaType()->toString().c_str() : c->getElementQName().toString().c_str()); throw ValidationException("Assertion contains an unrecognized condition."); } @@ -101,7 +113,7 @@ void AssertionValidator::validateCondition(const Condition* c) const if (!found) { ostringstream os; os << *ac; - Category::getInstance(SAML_LOGCAT".AssertionValidator").error("unacceptable AudienceRestriction in assertion (%s)", os.str().c_str()); + Category::getInstance(SAML_LOGCAT ".AssertionValidator").error("unacceptable AudienceRestriction in assertion (%s)", os.str().c_str()); throw ValidationException("Assertion contains an unacceptable AudienceRestriction."); } }