-/*
+/*
* Copyright (c) 2010, JANET(UK)
* All rights reserved.
*
static gss_eap_attr_create_factory
gss_eap_attr_factories[ATTR_TYPE_MAX] = {
- gss_eap_radius_attr_provider::createAttrContext,
- gss_eap_saml_assertion_provider::createAttrContext,
- gss_eap_saml_attr_provider::createAttrContext,
- gss_eap_shib_attr_provider::createAttrContext
+ gss_eap_radius_attr_source::createAttrContext,
+ gss_eap_saml_assertion_source::createAttrContext,
+ gss_eap_saml_attr_source::createAttrContext,
+ gss_eap_shib_attr_source::createAttrContext
};
-gss_eap_attr_ctx::gss_eap_attr_ctx(void)
+gss_eap_attr_ctx *
+gss_eap_attr_ctx::createAttrContext(void)
{
+ gss_eap_attr_ctx *ctx;
+
+ ctx = new gss_eap_attr_ctx;
+
for (unsigned int i = 0; i < ATTR_TYPE_MAX; i++) {
- gss_eap_attr_provider *provider;
+ gss_eap_attr_source *provider;
provider = (gss_eap_attr_factories[i])();
if (provider != NULL)
- m_providers[i] = provider;
+ ctx->m_providers[i] = provider;
}
+
+ return ctx;
}
bool
gss_eap_attr_ctx::initFromExistingContext(const gss_eap_attr_ctx *source,
- const gss_eap_attr_provider *ctx)
+ const gss_eap_attr_source *ctx)
{
- if (!gss_eap_attr_provider::initFromExistingContext(this, ctx))
+ if (!gss_eap_attr_source::initFromExistingContext(this, ctx))
return false;
for (unsigned int i = 0; i < ATTR_TYPE_MAX; i++) {
- gss_eap_attr_provider *provider;
+ gss_eap_attr_source *provider;
provider = m_providers[i];
if (provider != NULL) {
const gss_cred_id_t cred,
const gss_ctx_id_t ctx)
{
- if (!gss_eap_attr_provider::initFromGssContext(this, cred, ctx))
+ if (!gss_eap_attr_source::initFromGssContext(this, cred, ctx))
return false;
for (unsigned int i = 0; i < ATTR_TYPE_MAX; i++) {
- gss_eap_attr_provider *provider;
+ gss_eap_attr_source *provider;
provider = m_providers[i];
if (provider != NULL) {
bool
gss_eap_attr_ctx::init(void)
{
- return 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_eap_radius_attr_source::init() &&
+ gss_eap_saml_assertion_source::init() &&
+ gss_eap_saml_attr_source::init() &&
+ gss_eap_shib_attr_source::init();
}
void
gss_eap_attr_ctx::finalize(void)
{
- gss_eap_shib_attr_provider::finalize();
- gss_eap_saml_attr_provider::finalize();
- gss_eap_saml_assertion_provider::finalize();
- gss_eap_radius_attr_provider::finalize();
+ gss_eap_shib_attr_source::finalize();
+ gss_eap_saml_attr_source::finalize();
+ gss_eap_saml_assertion_source::finalize();
+ gss_eap_radius_attr_source::finalize();
}
-gss_eap_attr_provider *
+gss_eap_attr_source *
gss_eap_attr_ctx::getProvider(unsigned int type) const
{
return m_providers[type];
}
-gss_eap_attr_provider *
+gss_eap_attr_source *
gss_eap_attr_ctx::getProvider(const gss_buffer_t prefix) const
{
unsigned int type;
{
gss_buffer_desc suffix = GSS_C_EMPTY_BUFFER;
unsigned int type;
- gss_eap_attr_provider *provider;
+ gss_eap_attr_source *provider;
decomposeAttributeName(attr, &type, &suffix);
{
gss_buffer_desc suffix = GSS_C_EMPTY_BUFFER;
unsigned int type;
- gss_eap_attr_provider *provider;
+ gss_eap_attr_source *provider;
decomposeAttributeName(attr, &type, &suffix);
size_t i;
for (i = 0; i < ATTR_TYPE_MAX; i++) {
- gss_eap_attr_provider *provider;
+ gss_eap_attr_source *provider;
provider = m_providers[i];
if (provider == NULL)
};
static bool
-addAttribute(const gss_eap_attr_provider *provider,
+addAttribute(const gss_eap_attr_source *provider,
const gss_buffer_t attribute,
void *data)
{
args.attrs = *attrs;
for (i = 0; i < ATTR_TYPE_MAX; i++) {
- gss_eap_attr_provider *provider;
+ gss_eap_attr_source *provider;
args.type = i;
{
gss_buffer_desc suffix = GSS_C_EMPTY_BUFFER;
unsigned int type;
- gss_eap_attr_provider *provider;
+ gss_eap_attr_source *provider;
bool ret;
decomposeAttributeName(attr, &type, &suffix);
}
void
-gss_eap_attr_ctx::exportToBuffer(gss_buffer_t buffer) const
+gss_eap_attr_ctx::marshall(gss_buffer_t buffer) const
{
- m_providers[ATTR_TYPE_RADIUS]->exportToBuffer(buffer);
+ /* For now, just marshall the RADIUS context. */
}
bool
-gss_eap_attr_ctx::initFromBuffer(const gss_eap_attr_ctx *ctx,
- const gss_buffer_t buffer)
+gss_eap_attr_ctx::unmarshall(const gss_eap_attr_ctx *ctx,
+ const gss_buffer_t buffer)
{
unsigned int i;
- bool ret;
-
- ret = m_providers[ATTR_TYPE_RADIUS]->initFromBuffer(this, buffer);
- if (!ret)
- return false;
- for (i = ATTR_TYPE_RADIUS + 1; i < ATTR_TYPE_MAX; i++) {
- gss_eap_attr_provider *provider = m_providers[i];
-
- ret = provider->initFromGssContext(
- this, GSS_C_NO_CREDENTIAL, GSS_C_NO_CONTEXT);
- if (!ret)
- break;
+ for (i = 0; i < ATTR_TYPE_MAX; i++) {
+ gss_eap_attr_source *provider = m_providers[i];
}
-
- return ret;
}
return ATTR_TYPE_LOCAL;
}
-const gss_buffer_t
+gss_buffer_t
gss_eap_attr_ctx::attributeTypeToPrefix(unsigned int type)
{
if (type < ATTR_TYPE_MIN || type >= ATTR_TYPE_LOCAL)
}
}
-std::string
+void
gss_eap_attr_ctx::composeAttributeName(const gss_buffer_t prefix,
- const gss_buffer_t suffix)
+ const gss_buffer_t suffix,
+ gss_buffer_t attribute)
{
- std::string str;
+ size_t len = 0;
+ char *p;
- if (prefix == GSS_C_NO_BUFFER || prefix->length == 0)
- return str;
+ attribute->length = 0;
+ attribute->value = NULL;
- str.append((const char *)prefix->value, prefix->length);
+ if (prefix == GSS_C_NO_BUFFER || prefix->length == 0)
+ return;
+ len = prefix->length;
if (suffix != GSS_C_NO_BUFFER) {
- str.append(" ");
- str.append((const char *)suffix->value, suffix->length);
+ len += 1 + suffix->length;
}
- return str;
-}
-
-std::string
-gss_eap_attr_ctx::composeAttributeName(unsigned int type,
- const gss_buffer_t suffix)
-{
- const gss_buffer_t prefix = attributeTypeToPrefix(type);
-
- return composeAttributeName(prefix, suffix);
-}
-
-void
-gss_eap_attr_ctx::composeAttributeName(const gss_buffer_t prefix,
- const gss_buffer_t suffix,
- gss_buffer_t attribute)
-{
- std::string str = composeAttributeName(prefix, suffix);
+ attribute->value = GSSEAP_MALLOC(len + 1);
+ if (attribute->value == NULL) {
+ throw new std::bad_alloc;
+ }
+ attribute->length = len;
- if (str.length() != 0) {
- return duplicateBuffer(str, attribute);
- } else {
- attribute->length = 0;
- attribute->value = NULL;
+ p = (char *)attribute->value;
+ memcpy(p, prefix->value, prefix->length);
+ if (suffix != NULL) {
+ p[prefix->length] = ' ';
+ memcpy(p + prefix->length + 1, suffix->value, suffix->length);
}
+
+ p[attribute->length] = '\0';
}
void
gss_eap_attr_ctx::decomposeAttributeName(const gss_buffer_t attribute,
- unsigned int *type,
+ unsigned int*type,
gss_buffer_t suffix)
{
gss_buffer_desc prefix = GSS_C_EMPTY_BUFFER;
{
gss_buffer_t prefix = attributeTypeToPrefix(type);
- return composeAttributeName(prefix, suffix, attribute);
+ composeAttributeName(prefix, suffix, attribute);
}
OM_uint32
gss_name_t name,
gss_buffer_t buffer)
{
- if (name->attrCtx == NULL) {
- buffer->length = 0;
- buffer->value = NULL;
-
- return GSS_S_COMPLETE;
- };
+ if (name->attrCtx == NULL)
+ return GSS_S_UNAVAILABLE;
try {
- name->attrCtx->exportToBuffer(buffer);
+ name->attrCtx->marshall(buffer);
} catch (std::exception &e) {
return mapException(minor, e);
}
gss_buffer_t buffer,
gss_name_t name)
{
- if (buffer->length != 0) {
- gss_eap_attr_ctx *ctx = new gss_eap_attr_ctx;
-
- try {
- if (!ctx->initFromBuffer(NULL, buffer)) {
- delete ctx;
- return GSS_S_DEFECTIVE_TOKEN;
- }
- name->attrCtx = ctx;
- } catch (std::exception &e) {
- delete ctx;
- return mapException(minor, e);
- }
- }
-
- return GSS_S_COMPLETE;
+ GSSEAP_NOT_IMPLEMENTED;
}
OM_uint32
gss_name_t in,
gss_name_t out)
{
- gss_eap_attr_ctx *ctx = NULL;
-
- assert(out->attrCtx == NULL);
-
try {
if (in->attrCtx != NULL) {
+ gss_eap_attr_ctx *ctx = new gss_eap_attr_ctx;
+
+ out->attrCtx = new gss_eap_attr_ctx;
if (!ctx->initFromExistingContext(NULL, in->attrCtx)) {
delete ctx;
return GSS_S_FAILURE;
}
out->attrCtx = ctx;
- }
+ } else
+ out->attrCtx = NULL;
} catch (std::exception &e) {
- delete ctx;
return mapException(minor, e);
}
{
gss_eap_attr_ctx *ctx;
- ctx = new gss_eap_attr_ctx;
+ ctx = gss_eap_attr_ctx::createAttrContext();
if (!ctx->initFromGssContext(NULL, gssCred, gssCtx)) {
delete ctx;
return NULL;
struct gss_eap_attr_ctx;
-struct gss_eap_attr_provider
+struct gss_eap_attr_source
{
public:
- gss_eap_attr_provider(void) {}
- virtual ~gss_eap_attr_provider(void) {}
+ gss_eap_attr_source(void) {}
+ virtual ~gss_eap_attr_source(void) {}
- bool initWithSource(const gss_eap_attr_ctx *source)
+ bool initWithManager(const gss_eap_attr_ctx *manager)
{
- m_source = source;
+ m_manager = manager;
return true;
}
- virtual bool initFromExistingContext(const gss_eap_attr_ctx *source,
- const gss_eap_attr_provider *ctx)
+ virtual bool initFromExistingContext(const gss_eap_attr_ctx *manager,
+ const gss_eap_attr_source *ctx)
{
- return initWithSource(source);
+ return initWithManager(manager);
}
- virtual bool initFromGssContext(const gss_eap_attr_ctx *source,
+ virtual bool initFromGssContext(const gss_eap_attr_ctx *manager,
const gss_cred_id_t cred,
const gss_ctx_id_t ctx)
{
- return initWithSource(source);
+ return initWithManager(manager);
}
typedef bool
- gss_eap_attr_enumeration_cb(const gss_eap_attr_provider *provider,
+ gss_eap_attr_enumeration_cb(const gss_eap_attr_source *provider,
const gss_buffer_t attribute,
void *data);
gss_any_t input) const {}
virtual void exportToBuffer(gss_buffer_t buffer) const {}
- virtual bool initFromBuffer(const gss_eap_attr_ctx *source,
+ virtual bool initFromBuffer(const gss_eap_attr_ctx *manager,
const gss_buffer_t buffer)
{
- return initWithSource(source);
+ return initWithManager(manager);
}
static bool init() { return true; }
static void finalize() {}
- static gss_eap_attr_provider *createAttrContext(void) { return NULL; }
+ static gss_eap_attr_source *createAttrContext(void) { return NULL; }
protected:
- const gss_eap_attr_ctx *m_source;
+ const gss_eap_attr_ctx *m_manager;
};
-typedef gss_eap_attr_provider *(*gss_eap_attr_create_factory)(void);
+typedef gss_eap_attr_source *(*gss_eap_attr_create_factory)(void);
-struct gss_eap_attr_ctx : gss_eap_attr_provider
+struct gss_eap_attr_ctx : gss_eap_attr_source
{
public:
gss_eap_attr_ctx(void);
~gss_eap_attr_ctx(void);
- bool initFromExistingContext(const gss_eap_attr_ctx *source,
- const gss_eap_attr_provider *ctx);
- bool initFromGssContext(const gss_eap_attr_ctx *source,
+ bool initFromExistingContext(const gss_eap_attr_ctx *manager,
+ const gss_eap_attr_source *ctx);
+ bool initFromGssContext(const gss_eap_attr_ctx *manager,
const gss_cred_id_t cred,
const gss_ctx_id_t ctx);
composeAttributeName(unsigned int type,
const gss_buffer_t suffix);
- gss_eap_attr_provider *getProvider(unsigned int type) const;
- gss_eap_attr_provider *getProvider(const gss_buffer_t prefix) const;
+ gss_eap_attr_source *getProvider(unsigned int type) const;
+ gss_eap_attr_source *getProvider(const gss_buffer_t prefix) const;
private:
- gss_eap_attr_provider *m_providers[ATTR_TYPE_MAX];
+ gss_eap_attr_source *m_providers[ATTR_TYPE_MAX];
};
#include "util_radius.h"
#include "gssapiP_eap.h"
bool
-gss_eap_radius_attr_provider::initFromExistingContext(const gss_eap_attr_ctx *source,
- const gss_eap_attr_provider *ctx)
+gss_eap_radius_attr_source::initFromExistingContext(const gss_eap_attr_ctx *source,
+ const gss_eap_attr_source *ctx)
{
- if (!gss_eap_attr_provider::initFromExistingContext(source, ctx))
+ if (!gss_eap_attr_source::initFromExistingContext(source, ctx))
return false;
return true;
}
bool
-gss_eap_radius_attr_provider::initFromGssContext(const gss_eap_attr_ctx *source,
- const gss_cred_id_t gssCred,
- const gss_ctx_id_t gssCtx)
+gss_eap_radius_attr_source::initFromGssContext(const gss_eap_attr_ctx *source,
+ const gss_cred_id_t gssCred,
+ const gss_ctx_id_t gssCtx)
{
- if (!gss_eap_attr_provider::initFromGssContext(source, gssCred, gssCtx))
+ if (!gss_eap_attr_source::initFromGssContext(source, gssCred, gssCtx))
return false;
return true;
}
-gss_eap_radius_attr_provider::~gss_eap_radius_attr_provider(void)
+gss_eap_radius_attr_source::~gss_eap_radius_attr_source(void)
{
}
bool
-gss_eap_radius_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute, void *data) const
+gss_eap_radius_attr_source::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute, void *data) const
{
return true;
}
void
-gss_eap_radius_attr_provider::setAttribute(int complete,
- const gss_buffer_t attr,
- const gss_buffer_t value)
+gss_eap_radius_attr_source::setAttribute(int complete,
+ const gss_buffer_t attr,
+ const gss_buffer_t value)
{
}
void
-gss_eap_radius_attr_provider::deleteAttribute(const gss_buffer_t value)
+gss_eap_radius_attr_source::deleteAttribute(const gss_buffer_t value)
{
}
bool
-gss_eap_radius_attr_provider::getAttribute(const gss_buffer_t attr,
- int *authenticated,
- int *complete,
- gss_buffer_t value,
- gss_buffer_t display_value,
- int *more) const
+gss_eap_radius_attr_source::getAttribute(const gss_buffer_t attr,
+ int *authenticated,
+ int *complete,
+ gss_buffer_t value,
+ gss_buffer_t display_value,
+ int *more) const
{
return false;
}
bool
-gss_eap_radius_attr_provider::getAttribute(unsigned int attr,
- int *authenticated,
- int *complete,
- gss_buffer_t value,
- gss_buffer_t display_value,
- int *more) const
+gss_eap_radius_attr_source::getAttribute(unsigned int attr,
+ int *authenticated,
+ int *complete,
+ gss_buffer_t value,
+ gss_buffer_t display_value,
+ int *more) const
{
return false;
}
gss_any_t
-gss_eap_radius_attr_provider::mapToAny(int authenticated,
+gss_eap_radius_attr_source::mapToAny(int authenticated,
gss_buffer_t type_id) const
{
return (gss_any_t)NULL;
}
void
-gss_eap_radius_attr_provider::releaseAnyNameMapping(gss_buffer_t type_id,
- gss_any_t input) const
+gss_eap_radius_attr_source::releaseAnyNameMapping(gss_buffer_t type_id,
+ gss_any_t input) const
{
}
void
-gss_eap_radius_attr_provider::exportToBuffer(gss_buffer_t buffer) const
+gss_eap_radius_attr_source::exportToBuffer(gss_buffer_t buffer) const
{
}
bool
-gss_eap_radius_attr_provider::initFromBuffer(const gss_eap_attr_ctx *ctx,
- const gss_buffer_t buffer)
+gss_eap_radius_attr_source::initFromBuffer(const gss_eap_attr_ctx *ctx,
+ const gss_buffer_t buffer)
{
- if (!gss_eap_attr_provider::initFromBuffer(ctx, buffer))
+ if (!gss_eap_attr_source::initFromBuffer(ctx, buffer))
return false;
return false;
}
bool
-gss_eap_radius_attr_provider::init(void)
+gss_eap_radius_attr_source::init(void)
{
return true;
}
void
-gss_eap_radius_attr_provider::finalize(void)
+gss_eap_radius_attr_source::finalize(void)
{
}
-gss_eap_attr_provider *
-gss_eap_radius_attr_provider::createAttrContext(void)
+gss_eap_attr_source *
+gss_eap_radius_attr_source::createAttrContext(void)
{
- return new gss_eap_radius_attr_provider;
+ return new gss_eap_radius_attr_source;
}
#ifndef _UTIL_RADIUS_H_
#define _UTIL_RADIUS_H_ 1
-struct gss_eap_radius_attr_provider : gss_eap_attr_provider {
+struct gss_eap_radius_attr_source : gss_eap_attr_source {
public:
- gss_eap_radius_attr_provider(void) {}
- ~gss_eap_radius_attr_provider(void);
+ gss_eap_radius_attr_source(void) {}
+ ~gss_eap_radius_attr_source(void);
bool initFromExistingContext(const gss_eap_attr_ctx *source,
- const gss_eap_attr_provider *ctx);
+ const gss_eap_attr_source *ctx);
bool initFromGssContext(const gss_eap_attr_ctx *source,
const gss_cred_id_t cred,
const gss_ctx_id_t ctx);
static bool init();
static void finalize();
- static gss_eap_attr_provider *createAttrContext(void);
+ static gss_eap_attr_source *createAttrContext(void);
private:
};
};
/*
- * gss_eap_saml_assertion_provider is for retrieving the underlying
+ * gss_eap_saml_assertion_source is for retrieving the underlying
* assertion.
*/
bool
-gss_eap_saml_assertion_provider::initFromExistingContext(const gss_eap_attr_ctx *source,
- const gss_eap_attr_provider *ctx)
+gss_eap_saml_assertion_source::initFromExistingContext(const gss_eap_attr_ctx *source,
+ const gss_eap_attr_source *ctx)
{
/* Then we may be creating from an existing attribute context */
- const gss_eap_saml_assertion_provider *saml;
+ const gss_eap_saml_assertion_source *saml;
assert(m_assertion == NULL);
- if (!gss_eap_attr_provider::initFromExistingContext(source, ctx))
+ if (!gss_eap_attr_source::initFromExistingContext(source, ctx))
return false;
- saml = dynamic_cast<const gss_eap_saml_assertion_provider *>(ctx);
+ saml = dynamic_cast<const gss_eap_saml_assertion_source *>(ctx);
setAssertion(saml->getAssertion());
return true;
}
bool
-gss_eap_saml_assertion_provider::initFromGssContext(const gss_eap_attr_ctx *source,
- const gss_cred_id_t gssCred,
- const gss_ctx_id_t gssCtx)
+gss_eap_saml_assertion_source::initFromGssContext(const gss_eap_attr_ctx *source,
+ const gss_cred_id_t gssCred,
+ const gss_ctx_id_t gssCtx)
{
- const gss_eap_radius_attr_provider *radius;
+ const gss_eap_radius_attr_source *radius;
gss_buffer_desc value = GSS_C_EMPTY_BUFFER;
int authenticated, complete, more = -1;
OM_uint32 minor;
assert(m_assertion == NULL);
- if (!gss_eap_attr_provider::initFromGssContext(source, gssCred, gssCtx))
+ if (!gss_eap_attr_source::initFromGssContext(source, gssCred, gssCtx))
return false;
- radius = dynamic_cast<const gss_eap_radius_attr_provider *>
- (m_source->getProvider(ATTR_TYPE_RADIUS));
+ radius = dynamic_cast<const gss_eap_radius_attr_source *>
+ (m_manager->getProvider(ATTR_TYPE_RADIUS));
if (radius != NULL &&
radius->getAttribute(512 /* XXX */, &authenticated, &complete,
&value, NULL, &more)) {
return true;
}
-gss_eap_saml_assertion_provider::~gss_eap_saml_assertion_provider(void)
+gss_eap_saml_assertion_source::~gss_eap_saml_assertion_source(void)
{
delete m_assertion;
}
void
-gss_eap_saml_assertion_provider::setAssertion(const saml2::Assertion *assertion)
+gss_eap_saml_assertion_source::setAssertion(const saml2::Assertion *assertion)
{
delete m_assertion;
}
saml2::Assertion *
-gss_eap_saml_assertion_provider::parseAssertion(const gss_buffer_t buffer)
+gss_eap_saml_assertion_source::parseAssertion(const gss_buffer_t buffer)
{
string str((char *)buffer->value, buffer->length);
istringstream istream(str);
}
bool
-gss_eap_saml_assertion_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute,
- void *data) const
+gss_eap_saml_assertion_source::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute,
+ void *data) const
{
/* just add the prefix */
return addAttribute(this, GSS_C_NO_BUFFER, data);
}
void
-gss_eap_saml_assertion_provider::setAttribute(int complete,
- const gss_buffer_t attr,
- const gss_buffer_t value)
+gss_eap_saml_assertion_source::setAttribute(int complete,
+ const gss_buffer_t attr,
+ const gss_buffer_t value)
{
if (attr == GSS_C_NO_BUFFER || attr->length == 0) {
saml2::Assertion *assertion = parseAssertion(value);
}
void
-gss_eap_saml_assertion_provider::deleteAttribute(const gss_buffer_t value)
+gss_eap_saml_assertion_source::deleteAttribute(const gss_buffer_t value)
{
delete m_assertion;
m_assertion = NULL;
}
bool
-gss_eap_saml_assertion_provider::getAttribute(const gss_buffer_t attr,
- int *authenticated,
- int *complete,
- gss_buffer_t value,
- gss_buffer_t display_value,
- int *more) const
+gss_eap_saml_assertion_source::getAttribute(const gss_buffer_t attr,
+ int *authenticated,
+ int *complete,
+ gss_buffer_t value,
+ gss_buffer_t display_value,
+ int *more) const
{
string str;
}
gss_any_t
-gss_eap_saml_assertion_provider::mapToAny(int authenticated,
- gss_buffer_t type_id) const
+gss_eap_saml_assertion_source::mapToAny(int authenticated,
+ gss_buffer_t type_id) const
{
return (gss_any_t)m_assertion;
}
void
-gss_eap_saml_assertion_provider::releaseAnyNameMapping(gss_buffer_t type_id,
- gss_any_t input) const
+gss_eap_saml_assertion_source::releaseAnyNameMapping(gss_buffer_t type_id,
+ gss_any_t input) const
{
delete ((saml2::Assertion *)input);
}
void
-gss_eap_saml_assertion_provider::exportToBuffer(gss_buffer_t buffer) const
+gss_eap_saml_assertion_source::exportToBuffer(gss_buffer_t buffer) const
{
ostringstream sink;
string str;
}
bool
-gss_eap_saml_assertion_provider::initFromBuffer(const gss_eap_attr_ctx *ctx,
- const gss_buffer_t buffer)
+gss_eap_saml_assertion_source::initFromBuffer(const gss_eap_attr_ctx *ctx,
+ const gss_buffer_t buffer)
{
- if (!gss_eap_attr_provider::initFromBuffer(ctx, buffer))
+ if (!gss_eap_attr_source::initFromBuffer(ctx, buffer))
return false;
assert(m_assertion == NULL);
}
bool
-gss_eap_saml_assertion_provider::init(void)
+gss_eap_saml_assertion_source::init(void)
{
return true;
}
void
-gss_eap_saml_assertion_provider::finalize(void)
+gss_eap_saml_assertion_source::finalize(void)
{
}
-gss_eap_attr_provider *
-gss_eap_saml_assertion_provider::createAttrContext(void)
+gss_eap_attr_source *
+gss_eap_saml_assertion_source::createAttrContext(void)
{
- return new gss_eap_saml_assertion_provider;
+ return new gss_eap_saml_assertion_source;
}
/*
- * gss_eap_saml_attr_provider is for retrieving the underlying attributes.
+ * gss_eap_saml_attr_source is for retrieving the underlying attributes.
*/
const saml2::Assertion *
-gss_eap_saml_attr_provider::getAssertion(void) const
+gss_eap_saml_attr_source::getAssertion(void) const
{
- const gss_eap_saml_assertion_provider *saml;
+ const gss_eap_saml_assertion_source *saml;
- saml = dynamic_cast<const gss_eap_saml_assertion_provider *>
- (m_source->getProvider(ATTR_TYPE_SAML_ASSERTION));
+ saml = dynamic_cast<const gss_eap_saml_assertion_source *>
+ (m_manager->getProvider(ATTR_TYPE_SAML_ASSERTION));
if (saml != NULL)
return saml->getAssertion();
return NULL;
}
-gss_eap_saml_attr_provider::~gss_eap_saml_attr_provider(void)
+gss_eap_saml_attr_source::~gss_eap_saml_attr_source(void)
{
/* Nothing to do, we're just a wrapper around the assertion provider. */
}
bool
-gss_eap_saml_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute,
- void *data) const
+gss_eap_saml_attr_source::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute,
+ void *data) const
{
const saml2::Assertion *assertion = getAssertion();
}
void
-gss_eap_saml_attr_provider::setAttribute(int complete,
- const gss_buffer_t attr,
- const gss_buffer_t value)
+gss_eap_saml_attr_rovider::setAttribute(int complete,
+ const gss_buffer_t attr,
+ const gss_buffer_t value)
{
}
void
-gss_eap_saml_attr_provider::deleteAttribute(const gss_buffer_t value)
+gss_eap_saml_attr_source::deleteAttribute(const gss_buffer_t value)
{
}
const saml2::Attribute *
-gss_eap_saml_attr_provider::getAttribute(const gss_buffer_t attr) const
+gss_eap_saml_attr_source::getAttribute(const gss_buffer_t attr) const
{
const saml2::Assertion *assertion = getAssertion();
saml2::AttributeStatement *statement;
}
bool
-gss_eap_saml_attr_provider::getAttribute(const gss_buffer_t attr,
- int *authenticated,
- int *complete,
- gss_buffer_t value,
- gss_buffer_t display_value,
- int *more) const
+gss_eap_saml_attr_source::getAttribute(const gss_buffer_t attr,
+ int *authenticated,
+ int *complete,
+ gss_buffer_t value,
+ gss_buffer_t display_value,
+ int *more) const
{
const saml2::Attribute *a;
const saml2::AttributeValue *av;
}
gss_any_t
-gss_eap_saml_attr_provider::mapToAny(int authenticated,
- gss_buffer_t type_id) const
+gss_eap_saml_attr_source::mapToAny(int authenticated,
+ gss_buffer_t type_id) const
{
return (gss_any_t)NULL;
}
void
-gss_eap_saml_attr_provider::releaseAnyNameMapping(gss_buffer_t type_id,
- gss_any_t input) const
+gss_eap_saml_attr_source::releaseAnyNameMapping(gss_buffer_t type_id,
+ gss_any_t input) const
{
}
void
-gss_eap_saml_attr_provider::exportToBuffer(gss_buffer_t buffer) const
+gss_eap_saml_attr_source::exportToBuffer(gss_buffer_t buffer) const
{
buffer->length = 0;
buffer->value = NULL;
}
bool
-gss_eap_saml_attr_provider::initFromBuffer(const gss_eap_attr_ctx *ctx,
- const gss_buffer_t buffer)
+gss_eap_saml_attr_source::initFromBuffer(const gss_eap_attr_ctx *ctx,
+ const gss_buffer_t buffer)
{
return true;
}
bool
-gss_eap_saml_attr_provider::init(void)
+gss_eap_saml_attr_source::init(void)
{
return true;
}
void
-gss_eap_saml_attr_provider::finalize(void)
+gss_eap_saml_attr_source::finalize(void)
{
}
-gss_eap_attr_provider *
-gss_eap_saml_attr_provider::createAttrContext(void)
+gss_eap_attr_source *
+gss_eap_saml_attr_source::createAttrContext(void)
{
- return new gss_eap_saml_attr_provider;
+ return new gss_eap_saml_attr_source;
}
};
};
-struct gss_eap_saml_assertion_provider : gss_eap_attr_provider {
+struct gss_eap_saml_assertion_source : gss_eap_attr_source {
public:
- gss_eap_saml_assertion_provider(void) {}
- ~gss_eap_saml_assertion_provider(void);
+ gss_eap_saml_assertion_source(void) {}
+ ~gss_eap_saml_assertion_source(void);
bool initFromExistingContext(const gss_eap_attr_ctx *source,
- const gss_eap_attr_provider *ctx);
+ const gss_eap_attr_source *ctx);
bool initFromGssContext(const gss_eap_attr_ctx *source,
const gss_cred_id_t cred,
const gss_ctx_id_t ctx);
static bool init();
static void finalize();
- static gss_eap_attr_provider *createAttrContext(void);
+ static gss_eap_attr_source *createAttrContext(void);
private:
static opensaml::saml2::Assertion *
opensaml::saml2::Assertion *m_assertion;
};
-struct gss_eap_saml_attr_provider : gss_eap_attr_provider {
+struct gss_eap_saml_attr_source : gss_eap_attr_source {
public:
- gss_eap_saml_attr_provider(void) {}
- ~gss_eap_saml_attr_provider(void);
+ gss_eap_saml_attr_source(void) {}
+ ~gss_eap_saml_attr_source(void);
bool getAttributeTypes(gss_eap_attr_enumeration_cb, void *data) const;
void setAttribute(int complete,
static bool init();
static void finalize();
- static gss_eap_attr_provider *createAttrContext(void);
+ static gss_eap_attr_source *createAttrContext(void);
private:
};
using namespace std;
bool
-gss_eap_shib_attr_provider::initFromExistingContext(const gss_eap_attr_ctx *source,
- const gss_eap_attr_provider *ctx)
+gss_eap_shib_attr_source::initFromExistingContext(const gss_eap_attr_ctx *source,
+ const gss_eap_attr_source *ctx)
{
- const gss_eap_shib_attr_provider *shib;
+ const gss_eap_shib_attr_source *shib;
- if (!gss_eap_attr_provider::initFromExistingContext(source, ctx))
+ if (!gss_eap_attr_source::initFromExistingContext(source, ctx))
return false;
- shib = dynamic_cast<const gss_eap_shib_attr_provider *>(ctx);
+ shib = dynamic_cast<const gss_eap_shib_attr_source *>(ctx);
if (shib != NULL)
m_attributes = duplicateAttributes(shib->getAttributes());
}
bool
-addRadiusAttribute(const gss_eap_attr_provider *provider,
+addRadiusAttribute(const gss_eap_attr_source *provider,
const gss_buffer_t attribute,
void *data)
{
- const gss_eap_shib_attr_provider *shib;
- const gss_eap_radius_attr_provider *radius;
+ const gss_eap_shib_attr_source *shib;
+ const gss_eap_radius_attr_source *radius;
int authenticated, complete, more = -1;
vector <string> attributeIds(1);
SimpleAttribute *a;
- radius = dynamic_cast<const gss_eap_radius_attr_provider *>(provider);
- shib = static_cast<const gss_eap_shib_attr_provider *>(data);
+ radius = dynamic_cast<const gss_eap_radius_attr_source *>(provider);
+ shib = static_cast<const gss_eap_shib_attr_source *>(data);
assert(radius != NULL && shib != NULL);
}
bool
-gss_eap_shib_attr_provider::initFromGssContext(const gss_eap_attr_ctx *source,
- const gss_cred_id_t gssCred,
- const gss_ctx_id_t gssCtx)
+gss_eap_shib_attr_source::initFromGssContext(const gss_eap_attr_ctx *source,
+ const gss_cred_id_t gssCred,
+ const gss_ctx_id_t gssCtx)
{
- const gss_eap_saml_assertion_provider *saml;
- const gss_eap_radius_attr_provider *radius;
+ const gss_eap_saml_assertion_source *saml;
+ const gss_eap_radius_attr_source *radius;
gss_buffer_desc nameBuf = GSS_C_EMPTY_BUFFER;
ShibbolethResolver *resolver = NULL;
OM_uint32 minor;
- if (!gss_eap_attr_provider::initFromGssContext(source, gssCred, gssCtx))
+ if (!gss_eap_attr_source::initFromGssContext(source, gssCred, gssCtx))
return false;
- saml = dynamic_cast<const gss_eap_saml_assertion_provider *>
+ saml = dynamic_cast<const gss_eap_saml_assertion_source *>
(source->getProvider(ATTR_TYPE_SAML_ASSERTION));
- radius = dynamic_cast<const gss_eap_radius_attr_provider *>
+ radius = dynamic_cast<const gss_eap_radius_attr_source *>
(source->getProvider(ATTR_TYPE_RADIUS));
if (gssCred != GSS_C_NO_CREDENTIAL &&
return true;
}
-gss_eap_shib_attr_provider::~gss_eap_shib_attr_provider(void)
+gss_eap_shib_attr_source::~gss_eap_shib_attr_source(void)
{
for_each(m_attributes.begin(),
m_attributes.end(),
}
int
-gss_eap_shib_attr_provider::getAttributeIndex(const gss_buffer_t attr) const
+gss_eap_shib_attr_source::getAttributeIndex(const gss_buffer_t attr) const
{
int i = 0;
}
void
-gss_eap_shib_attr_provider::setAttribute(int complete,
- const gss_buffer_t attr,
- const gss_buffer_t value)
+gss_eap_shib_attr_source::setAttribute(int complete,
+ const gss_buffer_t attr,
+ const gss_buffer_t value)
{
string attrStr((char *)attr->value, attr->length);
vector <string> ids(1);
}
void
-gss_eap_shib_attr_provider::deleteAttribute(const gss_buffer_t attr)
+gss_eap_shib_attr_source::deleteAttribute(const gss_buffer_t attr)
{
int i;
}
bool
-gss_eap_shib_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute,
- void *data) const
+gss_eap_shib_attr_source::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute,
+ void *data) const
{
for (vector<Attribute*>::const_iterator a = m_attributes.begin();
a != m_attributes.end();
}
const Attribute *
-gss_eap_shib_attr_provider::getAttribute(const gss_buffer_t attr) const
+gss_eap_shib_attr_source::getAttribute(const gss_buffer_t attr) const
{
const Attribute *ret = NULL;
}
bool
-gss_eap_shib_attr_provider::getAttribute(const gss_buffer_t attr,
- int *authenticated,
- int *complete,
- gss_buffer_t value,
- gss_buffer_t display_value,
- int *more) const
+gss_eap_shib_attr_source::getAttribute(const gss_buffer_t attr,
+ int *authenticated,
+ int *complete,
+ gss_buffer_t value,
+ gss_buffer_t display_value,
+ int *more) const
{
const Attribute *shibAttr = NULL;
gss_buffer_desc buf;
}
gss_any_t
-gss_eap_shib_attr_provider::mapToAny(int authenticated,
- gss_buffer_t type_id) const
+gss_eap_shib_attr_source::mapToAny(int authenticated,
+ gss_buffer_t type_id) const
{
gss_any_t output;
}
void
-gss_eap_shib_attr_provider::releaseAnyNameMapping(gss_buffer_t type_id,
- gss_any_t input) const
+gss_eap_shib_attr_source::releaseAnyNameMapping(gss_buffer_t type_id,
+ gss_any_t input) const
{
vector <Attribute *> *v = ((vector <Attribute *> *)input);
delete v;
}
void
-gss_eap_shib_attr_provider::exportToBuffer(gss_buffer_t buffer) const
+gss_eap_shib_attr_source::exportToBuffer(gss_buffer_t buffer) const
{
buffer->length = 0;
buffer->value = NULL;
}
bool
-gss_eap_shib_attr_provider::initFromBuffer(const gss_eap_attr_ctx *ctx,
- const gss_buffer_t buffer)
+gss_eap_shib_attr_source::initFromBuffer(const gss_eap_attr_ctx *ctx,
+ const gss_buffer_t buffer)
{
- if (!gss_eap_attr_provider::initFromBuffer(ctx, buffer))
+ if (!gss_eap_attr_source::initFromBuffer(ctx, buffer))
return false;
return true;
}
bool
-gss_eap_shib_attr_provider::init(void)
+gss_eap_shib_attr_source::init(void)
{
return ShibbolethResolver::init();
}
void
-gss_eap_shib_attr_provider::finalize(void)
+gss_eap_shib_attr_source::finalize(void)
{
ShibbolethResolver::term();
}
-gss_eap_attr_provider *
-gss_eap_shib_attr_provider::createAttrContext(void)
+gss_eap_attr_source *
+gss_eap_shib_attr_source::createAttrContext(void)
{
- return new gss_eap_shib_attr_provider;
+ return new gss_eap_shib_attr_source;
}
Attribute *
-gss_eap_shib_attr_provider::duplicateAttribute(const Attribute *src)
+gss_eap_shib_attr_source::duplicateAttribute(const Attribute *src)
{
Attribute *attribute;
}
vector <Attribute *>
-gss_eap_shib_attr_provider::duplicateAttributes(const vector <Attribute *>src)
+gss_eap_shib_attr_source::duplicateAttributes(const vector <Attribute *>src)
{
vector <Attribute *> dst;
class ShibbolethResolver;
};
-struct gss_eap_shib_attr_provider : gss_eap_attr_provider {
+struct gss_eap_shib_attr_source : gss_eap_attr_source {
public:
- gss_eap_shib_attr_provider(void) {}
- ~gss_eap_shib_attr_provider(void);
+ gss_eap_shib_attr_source(void) {}
+ ~gss_eap_shib_attr_source(void);
bool initFromExistingContext(const gss_eap_attr_ctx *source,
- const gss_eap_attr_provider *ctx);
+ const gss_eap_attr_source *ctx);
bool initFromGssContext(const gss_eap_attr_ctx *source,
const gss_cred_id_t cred,
const gss_ctx_id_t ctx);
static bool init();
static void finalize();
- static gss_eap_attr_provider *createAttrContext(void);
+ static gss_eap_attr_source *createAttrContext(void);
private:
static shibsp::Attribute *
}
friend bool
- addRadiusAttribute(const gss_eap_attr_provider *provider,
+ addRadiusAttribute(const gss_eap_attr_source *provider,
const gss_buffer_t attribute,
void *data);