X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2Fimpl%2FMetadataSchemaValidators.cpp;fp=saml%2Fsaml2%2Fmetadata%2Fimpl%2FMetadataSchemaValidators.cpp;h=44ff903ceddf9b7b94bcfe7cbb57a7c8ecb822a6;hp=93e0e114a2e5ef80f054bd8de50794497f6045be;hb=1f1051ec6d95ba32dc0dd68e5ebc101137ddf4c8;hpb=fa5a58a5e3104223f3134b84dfac3f4500d9ffc5 diff --git a/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp b/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp index 93e0e11..44ff903 100644 --- a/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp +++ b/saml/saml2/metadata/impl/MetadataSchemaValidators.cpp @@ -42,6 +42,7 @@ using samlconstants::SAML20MD_QUERY_EXT_NS; using samlconstants::SAML20MD_ALGSUPPORT_NS; using samlconstants::SAML20MD_ENTITY_ATTRIBUTE_NS; using samlconstants::SAML20MD_UI_NS; +using samlconstants::SAML20MD_RPI_NS; using samlconstants::SAML1MD_NS; using samlconstants::IDP_DISCOVERY_PROTOCOL_NS; using samlconstants::SP_REQUEST_INIT_NS; @@ -321,6 +322,21 @@ namespace opensaml { XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,IPHint); XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,DomainHint); XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,GeolocationHint); + + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,RegistrationInfo); + XMLOBJECTVALIDATOR_REQUIRE(RegistrationInfo,RegistrationAuthority); + END_XMLOBJECTVALIDATOR; + + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,PublicationInfo); + XMLOBJECTVALIDATOR_REQUIRE(PublicationInfo,Publisher); + END_XMLOBJECTVALIDATOR; + + BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,Publication); + XMLOBJECTVALIDATOR_REQUIRE(Publication,Publisher); + END_XMLOBJECTVALIDATOR; + + XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,RegistrationPolicy); + XMLOBJECTVALIDATOR_SIMPLE(SAML_DLLLOCAL,UsagePolicy); }; }; @@ -352,6 +368,24 @@ namespace opensaml { q=xmltooling::QName(SAML20MD_UI_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); +#define REGISTER_ELEMENT_RPI(cname) \ + q=xmltooling::QName(SAML20MD_RPI_NS,cname::LOCAL_NAME); \ + XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) + +#define REGISTER_TYPE_RPI(cname) \ + q=xmltooling::QName(SAML20MD_RPI_NS,cname::TYPE_NAME); \ + XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ + SchemaValidators.registerValidator(q,new cname##SchemaValidator()) + +#define REGISTER_ELEMENT_RPI_NOVAL(cname) \ + q=xmltooling::QName(SAML20MD_RPI_NS,cname::LOCAL_NAME); \ + XMLObjectBuilder::registerBuilder(q,new cname##Builder()); + +#define REGISTER_TYPE_RPI_NOVAL(cname) \ + q=xmltooling::QName(SAML20MD_RPI_NS,cname::TYPE_NAME); \ + XMLObjectBuilder::registerBuilder(q,new cname##Builder()); + void opensaml::saml2md::registerMetadataClasses() { xmltooling::QName q; REGISTER_ELEMENT(AdditionalMetadataLocation); @@ -483,4 +517,15 @@ void opensaml::saml2md::registerMetadataClasses() { REGISTER_ELEMENT_UI_NOVAL(DiscoHints); REGISTER_TYPE_UI_NOVAL(UIInfo); REGISTER_TYPE_UI_NOVAL(DiscoHints); + + REGISTER_ELEMENT_RPI(RegistrationInfo); + REGISTER_ELEMENT_RPI(RegistrationPolicy); + REGISTER_ELEMENT_RPI(PublicationInfo); + REGISTER_ELEMENT_RPI(UsagePolicy); + REGISTER_ELEMENT_RPI(Publication); + REGISTER_TYPE_RPI(RegistrationInfo); + REGISTER_TYPE_RPI(PublicationInfo); + REGISTER_TYPE_RPI(Publication); + REGISTER_ELEMENT_RPI_NOVAL(PublicationPath); + REGISTER_TYPE_RPI_NOVAL(PublicationPath); }