X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Fsaml2%2Fcore%2Fimpl%2FAssertions20SchemaValidators.cpp;h=70b02e52028831c6601a5af091daa3157c0b3eb0;hp=458b5b17b909f678ffe8a1819cc962db8ea490ee;hb=48857ad9a82c4695800123ecef931e7f8d9de199;hpb=183eb414fe7425776a43c94c5859e709f4fb77ac diff --git a/saml/saml2/core/impl/Assertions20SchemaValidators.cpp b/saml/saml2/core/impl/Assertions20SchemaValidators.cpp index 458b5b1..70b02e5 100644 --- a/saml/saml2/core/impl/Assertions20SchemaValidators.cpp +++ b/saml/saml2/core/impl/Assertions20SchemaValidators.cpp @@ -72,6 +72,22 @@ namespace opensaml { } END_XMLOBJECTVALIDATOR; + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,Delegate); + int count=0; + if (ptr->getBaseID()) + count++; + if (ptr->getNameID()) + count++; + if (ptr->getEncryptedID()) + count++; + if (count != 1) + throw ValidationException("Delegate must contain exactly one identifier element."); + END_XMLOBJECTVALIDATOR; + + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,DelegationRestrictionType); + XMLOBJECTVALIDATOR_NONEMPTY(DelegationRestrictionType,Delegate); + END_XMLOBJECTVALIDATOR; + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,Conditions); if (!ptr->hasChildren()) { XMLOBJECTVALIDATOR_ONEOF(Conditions,NotBefore,NotOnOrAfter); @@ -249,4 +265,15 @@ void opensaml::saml2::registerAssertionClasses() { REGISTER_TYPE(Subject); REGISTER_TYPE(SubjectConfirmation); REGISTER_TYPE(SubjectLocality); + + q=xmltooling::QName(samlconstants::SAML20_DELEGATION_CONDITION_NS,Delegate::LOCAL_NAME); + XMLObjectBuilder::registerBuilder(q,new DelegateBuilder()); + SchemaValidators.registerValidator(q,new DelegateSchemaValidator()); + q=xmltooling::QName(samlconstants::SAML20_DELEGATION_CONDITION_NS,Delegate::TYPE_NAME); + XMLObjectBuilder::registerBuilder(q,new DelegateBuilder()); + SchemaValidators.registerValidator(q,new DelegateSchemaValidator()); + + q=xmltooling::QName(samlconstants::SAML20_DELEGATION_CONDITION_NS,DelegationRestrictionType::TYPE_NAME); + XMLObjectBuilder::registerBuilder(q,new DelegationRestrictionTypeBuilder()); + SchemaValidators.registerValidator(q,new DelegationRestrictionTypeSchemaValidator()); }