X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml1%2Fcore%2Fimpl%2FProtocolsSchemaValidators.cpp;h=260b5288d77bbb6742f55afc179db82f9e2bf0cd;hb=0703fa970c8d1f15600ce3fd1b350bdb90930bb9;hp=1fe5041e86cc8b52c640806e64a4254aefa6f8cb;hpb=bb6f92163780b968239c19fdfbe22c0a0a4cd35a;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml1/core/impl/ProtocolsSchemaValidators.cpp b/saml/saml1/core/impl/ProtocolsSchemaValidators.cpp index 1fe5041..260b528 100644 --- a/saml/saml1/core/impl/ProtocolsSchemaValidators.cpp +++ b/saml/saml1/core/impl/ProtocolsSchemaValidators.cpp @@ -24,13 +24,17 @@ #include "exceptions.h" #include "saml1/core/Protocols.h" +#include + +using namespace opensaml::saml1p; using namespace opensaml::saml1; using namespace opensaml; using namespace xmltooling; using namespace std; +using samlconstants::SAML1P_NS; namespace opensaml { - namespace saml1 { + namespace saml1p { XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,AssertionArtifact); XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,StatusMessage); @@ -57,7 +61,10 @@ namespace opensaml { BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,Request); XMLOBJECTVALIDATOR_REQUIRE(Request,RequestID); XMLOBJECTVALIDATOR_REQUIRE(Request,IssueInstant); - int count=0; + pair minor=ptr->getMinorVersion(); + if (!minor.first) + throw ValidationException("Request must have MinorVersion"); + int count=0; if (ptr->getQuery()!=NULL) count++; if (!ptr->getAssertionIDReferences().empty()) @@ -84,29 +91,32 @@ namespace opensaml { XMLOBJECTVALIDATOR_REQUIRE(Response,ResponseID); XMLOBJECTVALIDATOR_REQUIRE(Response,IssueInstant); XMLOBJECTVALIDATOR_REQUIRE(Response,Status); + pair minor=ptr->getMinorVersion(); + if (!minor.first) + throw ValidationException("Response must have MinorVersion"); END_XMLOBJECTVALIDATOR; }; }; #define REGISTER_ELEMENT(cname) \ - q=QName(SAMLConstants::SAML1P_NS,cname::LOCAL_NAME); \ + q=QName(SAML1P_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(cname) \ - q=QName(SAMLConstants::SAML1P_NS,cname::TYPE_NAME); \ + q=QName(SAML1P_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ - Validator::registerValidator(q,new cname##SchemaValidator()) + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_ELEMENT_NOVAL(cname) \ - q=QName(SAMLConstants::SAML1P_NS,cname::LOCAL_NAME); \ + q=QName(SAML1P_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); #define REGISTER_TYPE_NOVAL(cname) \ - q=QName(SAMLConstants::SAML1P_NS,cname::TYPE_NAME); \ + q=QName(SAML1P_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); -void opensaml::saml1::registerProtocolClasses() { +void opensaml::saml1p::registerProtocolClasses() { QName q; REGISTER_ELEMENT(AssertionArtifact); REGISTER_ELEMENT(AttributeQuery);