X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=util_attr.h;h=1a427f7b15570d6bb3506afdb5cf462291b2ebb0;hb=e063ba4e45d12dbc1a397653f9e77228835e4a2b;hp=e55e9a95f58855400bfdfa24430d342d1de9270a;hpb=6a99d8c157e3bbe68fb107f00a6d9538e90c93e2;p=mech_eap.git diff --git a/util_attr.h b/util_attr.h index e55e9a9..1a427f7 100644 --- a/util_attr.h +++ b/util_attr.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, JANET(UK) + * Copyright (c) 2011, JANET(UK) * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -41,11 +41,14 @@ #include #include +#include + struct gss_eap_attr_provider; struct gss_eap_attr_ctx; typedef bool -(*gss_eap_attr_enumeration_cb)(const gss_eap_attr_provider *source, +(*gss_eap_attr_enumeration_cb)(const gss_eap_attr_ctx *ctx, + const gss_eap_attr_provider *source, const gss_buffer_t attribute, void *data); @@ -75,50 +78,88 @@ public: } virtual bool initFromExistingContext(const gss_eap_attr_ctx *manager, - const gss_eap_attr_provider *ctx) + const gss_eap_attr_provider *ctx GSSEAP_UNUSED) { return initWithManager(manager); } virtual bool initFromGssContext(const gss_eap_attr_ctx *manager, - const gss_cred_id_t cred, - const gss_ctx_id_t ctx) + const gss_cred_id_t cred GSSEAP_UNUSED, + const gss_ctx_id_t ctx GSSEAP_UNUSED) { return initWithManager(manager); } - virtual bool getAttributeTypes(gss_eap_attr_enumeration_cb, void *data) const + virtual bool getAttributeTypes(gss_eap_attr_enumeration_cb GSSEAP_UNUSED, + void *data GSSEAP_UNUSED) const + { + return false; + } + + virtual bool setAttribute(int complete GSSEAP_UNUSED, + const gss_buffer_t attr GSSEAP_UNUSED, + const gss_buffer_t value GSSEAP_UNUSED) + { + return false; + } + + virtual bool deleteAttribute(const gss_buffer_t value GSSEAP_UNUSED) + { + return false; + } + + virtual bool getAttribute(const gss_buffer_t attr GSSEAP_UNUSED, + int *authenticated GSSEAP_UNUSED, + int *complete GSSEAP_UNUSED, + gss_buffer_t value GSSEAP_UNUSED, + gss_buffer_t display_value GSSEAP_UNUSED, + int *more GSSEAP_UNUSED) const { return false; } - virtual bool setAttribute(int complete, - const gss_buffer_t attr, - const gss_buffer_t value) { return false; } - virtual bool deleteAttribute(const gss_buffer_t value) { return false; } - virtual bool getAttribute(const gss_buffer_t attr, - int *authenticated, - int *complete, - gss_buffer_t value, - gss_buffer_t display_value, - int *more) const { return false; } - - virtual gss_any_t mapToAny(int authenticated, - gss_buffer_t type_id) const { return NULL; } - virtual void releaseAnyNameMapping(gss_buffer_t type_id, - gss_any_t input) const {} - - virtual void exportToBuffer(gss_buffer_t buffer) const {} - virtual bool initFromBuffer(const gss_eap_attr_ctx *manager, - const gss_buffer_t buffer) + virtual gss_any_t mapToAny(int authenticated GSSEAP_UNUSED, + gss_buffer_t type_id GSSEAP_UNUSED) const + { + return NULL; + } + + virtual void releaseAnyNameMapping(gss_buffer_t type_id GSSEAP_UNUSED, + gss_any_t input GSSEAP_UNUSED) const + { + } + + /* prefix to be prepended to attributes emitted by gss_get_name_attribute */ + virtual const char *prefix(void) const + { + return NULL; + } + + /* optional key for storing JSON dictionary */ + virtual const char *name(void) const + { + return NULL; + } + + virtual bool initWithJsonObject(const gss_eap_attr_ctx *manager, + json_t *object GSSEAP_UNUSED) { return initWithManager(manager); } + + virtual json_t *jsonRepresentation(void) const + { + return NULL; + } + virtual time_t getExpiryTime(void) const { return 0; } - virtual OM_uint32 mapException(OM_uint32 *minor, std::exception &e) const - { return GSS_S_CONTINUE_NEEDED; } + virtual OM_uint32 mapException(OM_uint32 *minor GSSEAP_UNUSED, + std::exception &e GSSEAP_UNUSED) const + { + return GSS_S_CONTINUE_NEEDED; + } static bool init(void) { return true; } static void finalize(void) {} @@ -171,12 +212,9 @@ public: void exportToBuffer(gss_buffer_t buffer) const; bool initFromBuffer(const gss_buffer_t buffer); - static unsigned int - attributePrefixToType(const gss_buffer_t prefix); - - static const gss_buffer_t - attributeTypeToPrefix(unsigned int type); - + static std::string + composeAttributeName(const gss_buffer_t prefix, + const gss_buffer_t suffix); static void decomposeAttributeName(const gss_buffer_t attribute, gss_buffer_t prefix, @@ -185,28 +223,23 @@ public: composeAttributeName(const gss_buffer_t prefix, const gss_buffer_t suffix, gss_buffer_t attribute); - static void + + std::string + composeAttributeName(unsigned int type, + const gss_buffer_t suffix); + void decomposeAttributeName(const gss_buffer_t attribute, unsigned int *type, - gss_buffer_t suffix); - static void + gss_buffer_t suffix) const; + void composeAttributeName(unsigned int type, const gss_buffer_t suffix, - gss_buffer_t attribute); - - static std::string - composeAttributeName(const gss_buffer_t prefix, - const gss_buffer_t suffix); - static std::string - composeAttributeName(unsigned int type, - const gss_buffer_t suffix); + gss_buffer_t attribute) const; gss_eap_attr_provider *getProvider(unsigned int type) const; - gss_eap_attr_provider *getProvider(const gss_buffer_t prefix) const; static void registerProvider(unsigned int type, - const char *prefix, gss_eap_attr_create_provider factory); static void unregisterProvider(unsigned int type); @@ -218,6 +251,12 @@ private: bool providerEnabled(unsigned int type) const; void releaseProvider(unsigned int type); + unsigned int attributePrefixToType(const gss_buffer_t prefix) const; + gss_buffer_desc attributeTypeToPrefix(unsigned int type) const; + + bool initWithJsonObject(json_t *object); + json_t *jsonRepresentation(void) const; + gss_eap_attr_provider *getPrimaryProvider(void) const; /* make non-copyable */