#include <xmltooling/util/ParserPool.h>
#include <xmltooling/util/DateTime.h>
+#include <saml/exceptions.h>
#include <saml/saml1/core/Assertions.h>
#include <saml/saml2/core/Assertions.h>
#include <saml/saml2/metadata/Metadata.h>
+#include <saml/saml2/metadata/MetadataProvider.h>
using namespace xmltooling;
using namespace opensaml::saml2md;
DOMDocument *doc;
const XMLObjectBuilder *b;
- doc = XMLToolingConfig::getConfig().getParser().parse(istream);
- if (doc == NULL)
- return NULL;
+ try {
+ doc = XMLToolingConfig::getConfig().getParser().parse(istream);
+ if (doc == NULL)
+ return NULL;
- b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
+ b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
#ifdef __APPLE__
- return (saml2::Assertion *)((void *)b->buildFromDocument(doc));
+ return (saml2::Assertion *)((void *)b->buildFromDocument(doc));
#else
- return dynamic_cast<saml2::Assertion *>(b->buildFromDocument(doc));
+ return dynamic_cast<saml2::Assertion *>(b->buildFromDocument(doc));
#endif
+ } catch (exception &e) {
+ return NULL;
+ }
}
bool
return expiryTime;
}
+OM_uint32
+gss_eap_saml_assertion_provider::mapException(OM_uint32 *minor,
+ std::exception &e) const
+{
+ if (typeid(e) == typeid(SecurityPolicyException))
+ *minor = GSSEAP_SAML_SEC_POLICY_FAILURE;
+ else if (typeid(e) == typeid(BindingException))
+ *minor = GSSEAP_SAML_BINDING_FAILURE;
+ else if (typeid(e) == typeid(ProfileException))
+ *minor = GSSEAP_SAML_PROFILE_FAILURE;
+ else if (typeid(e) == typeid(FatalProfileException))
+ *minor = GSSEAP_SAML_FATAL_PROFILE_FAILURE;
+ else if (typeid(e) == typeid(RetryableProfileException))
+ *minor = GSSEAP_SAML_RETRY_PROFILE_FAILURE;
+ else if (typeid(e) == typeid(MetadataException))
+ *minor = GSSEAP_SAML_METADATA_FAILURE;
+ else
+ return GSS_S_CONTINUE_NEEDED;
+
+ return GSS_S_FAILURE;
+}
+
bool
gss_eap_saml_assertion_provider::getAttribute(const gss_buffer_t attr,
int *authenticated,
{
gss_eap_attr_ctx::registerProvider(ATTR_TYPE_SAML_ASSERTION,
"urn:ietf:params:gss-eap:saml-aaa-assertion",
- gss_eap_saml_assertion_provider::createAttrContext);
+ createAttrContext);
return true;
}
{
gss_eap_attr_ctx::registerProvider(ATTR_TYPE_SAML,
"urn:ietf:params:gss-eap:saml-attr",
- gss_eap_saml_attr_provider::createAttrContext);
+ createAttrContext);
return true;
}