major = eapServerRegisterMethods(&minor);
assert(major == GSS_S_COMPLETE);
- major = gssEapAttrProvidersInit(&minor);
+ major = gssEapRadiusAttrProviderInit(&minor);
+ assert(major == GSS_S_COMPLETE);
+
+ major = gssEapSamlAttrProvidersInit(&minor);
+ assert(major == GSS_S_COMPLETE);
+
+ major = gssEapLocalAttrProviderInit(&minor);
assert(major == GSS_S_COMPLETE);
}
{
OM_uint32 minor;
+ gssEapLocalAttrProviderFinalize(&minor);
+ gssEapSamlAttrProvidersFinalize(&minor);
+ gssEapRadiusAttrProviderFinalize(&minor);
+
eap_peer_unregister_methods();
eap_server_unregister_methods();
- gssEapAttrProvidersFinalize(&minor);
}
return GSS_S_COMPLETE;
}
-OM_uint32
-gssEapAttrProvidersInit(OM_uint32 *minor)
-{
- try {
- if (gss_eap_radius_attr_provider::init() &&
- gss_eap_saml_assertion_provider::init() &&
- gss_eap_saml_attr_provider::init() &&
- gss_eap_shib_attr_provider::init())
- return GSS_S_COMPLETE;
- } catch (std::exception &e) {
- return mapException(minor, e);
- }
-
- return GSS_S_FAILURE;
-}
-
-OM_uint32
-gssEapAttrProvidersFinalize(OM_uint32 *minor)
-{
- try {
- gss_eap_shib_attr_provider::finalize();
- gss_eap_saml_attr_provider::finalize();
- gss_eap_saml_assertion_provider::finalize();
- gss_eap_radius_attr_provider::finalize();
- } catch (std::exception &e) {
- return mapException(minor, e);
- }
-
- return GSS_S_COMPLETE;
-}
-
/*
* Public accessor for initialisng a context from a GSS context. Also
* sets expiry time on GSS context as a side-effect.
gss_eap_attr_provider *m_providers[ATTR_TYPE_MAX + 1];
};
+#endif /* __cplusplus */
+
#include "util_radius.h"
#include "util_saml.h"
#include "util_shib.h"
+#ifdef __cplusplus
+
#include <string>
#include <new>
{
return new gss_eap_radius_attr_provider;
}
+
+OM_uint32
+gssEapRadiusAttrProviderInit(OM_uint32 *minor)
+{
+ return gss_eap_radius_attr_provider::init()
+ ? GSS_S_COMPLETE : GSS_S_FAILURE;
+}
+
+OM_uint32
+gssEapRadiusAttrProviderFinalize(OM_uint32 *minor)
+{
+ gss_eap_radius_attr_provider::finalize();
+ return GSS_S_COMPLETE;
+}
#ifndef _UTIL_RADIUS_H_
#define _UTIL_RADIUS_H_ 1
+#ifdef __cplusplus
+
struct gss_eap_radius_attr_provider : gss_eap_attr_provider {
public:
gss_eap_radius_attr_provider(void);
/* For now */
#define PW_SAML_ASSERTION 1936
+extern "C" {
+#endif
+
+OM_uint32 gssEapRadiusAttrProviderInit(OM_uint32 *minor);
+OM_uint32 gssEapRadiusAttrProviderFinalize(OM_uint32 *minor);
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _UTIL_RADIUS_H_ */
{
return new gss_eap_saml_attr_provider;
}
+
+OM_uint32
+gssEapSamlAttrProvidersInit(OM_uint32 *minor)
+{
+ if (gss_eap_saml_assertion_provider::init() &&
+ gss_eap_saml_attr_provider::init())
+ return GSS_S_COMPLETE;
+
+ return GSS_S_FAILURE;
+}
+
+OM_uint32
+gssEapSamlAttrProvidersFinalize(OM_uint32 *minor)
+{
+ gss_eap_saml_attr_provider::finalize();
+ gss_eap_saml_assertion_provider::finalize();
+ return GSS_S_COMPLETE;
+}
#ifndef _UTIL_SAML_H_
#define _UTIL_SAML_H_ 1
+#ifdef __cplusplus
+
namespace opensaml {
namespace saml2 {
class Attribute;
private:
};
+extern "C" {
+#endif
+
+OM_uint32 gssEapSamlAttrProvidersInit(OM_uint32 *minor);
+OM_uint32 gssEapSamlAttrProvidersFinalize(OM_uint32 *minor);
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _UTIL_SAML_H_ */
void
gss_eap_shib_attr_provider::finalize(void)
{
- ShibbolethResolver::term();
gss_eap_attr_ctx::unregisterProvider(ATTR_TYPE_LOCAL);
+ ShibbolethResolver::term();
}
gss_eap_attr_provider *
return dst;
}
+
+OM_uint32
+gssEapLocalAttrProviderInit(OM_uint32 *minor)
+{
+ return gss_eap_shib_attr_provider::init()
+ ? GSS_S_COMPLETE : GSS_S_FAILURE;
+}
+
+OM_uint32
+gssEapLocalAttrProviderFinalize(OM_uint32 *minor)
+{
+ gss_eap_shib_attr_provider::finalize();
+ return GSS_S_COMPLETE;
+}
#ifndef _UTIL_SHIB_H_
#define _UTIL_SHIB_H_ 1
+#ifdef __cplusplus
+
#include <vector>
namespace shibsp {
int m_authenticated;
};
+
+extern "C" {
+#endif
+
+OM_uint32 gssEapLocalAttrProviderInit(OM_uint32 *minor);
+OM_uint32 gssEapLocalAttrProviderFinalize(OM_uint32 *minor);
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _UTIL_SHIB_H_ */