X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=util_shib.h;h=7cacd665b18d690d94a52d8adb0bbc07f8f1dded;hb=e063ba4e45d12dbc1a397653f9e77228835e4a2b;hp=2f3022815ffe95e3a8e823cafcb81371c552ce53;hpb=0f049c2d14f54631ff88c12edb005f89b372d65a;p=mech_eap.git diff --git a/util_shib.h b/util_shib.h index 2f30228..7cacd66 100644 --- a/util_shib.h +++ b/util_shib.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 @@ -30,9 +30,15 @@ * SUCH DAMAGE. */ +/* + * Local attribute provider. + */ + #ifndef _UTIL_SHIB_H_ #define _UTIL_SHIB_H_ 1 +#ifdef __cplusplus + #include namespace shibsp { @@ -54,10 +60,10 @@ public: const gss_cred_id_t cred, const gss_ctx_id_t ctx); - void setAttribute(int complete, + bool setAttribute(int complete, const gss_buffer_t attr, const gss_buffer_t value); - void deleteAttribute(const gss_buffer_t value); + bool deleteAttribute(const gss_buffer_t value); bool getAttributeTypes(gss_eap_attr_enumeration_cb, void *data) const; bool getAttribute(const gss_buffer_t attr, int *authenticated, @@ -70,30 +76,33 @@ public: void releaseAnyNameMapping(gss_buffer_t type_id, gss_any_t input) const; - void exportToBuffer(gss_buffer_t buffer) const; - bool initFromBuffer(const gss_eap_attr_ctx *ctx, - const gss_buffer_t buffer); + const char *prefix(void) const; + const char *name(void) const; + bool initWithJsonObject(const gss_eap_attr_ctx *manager, + json_t *obj); + json_t *jsonRepresentation(void) const; + static bool init(void); + static void finalize(void); - static bool init(); - static void finalize(); + OM_uint32 mapException(OM_uint32 *minor, std::exception &e) const; static gss_eap_attr_provider *createAttrContext(void); + std::vector getAttributes(void) const { + return m_attributes; + } + private: static shibsp::Attribute * duplicateAttribute(const shibsp::Attribute *src); static std::vector duplicateAttributes(const std::vector src); - int getAttributeIndex(const gss_buffer_t attr) const; + ssize_t getAttributeIndex(const gss_buffer_t attr) const; const shibsp::Attribute *getAttribute(const gss_buffer_t attr) const; - std::vector getAttributes(void) const { - return m_attributes; - } - - bool authenticated() const { return m_authenticated; } + bool authenticated(void) const { return m_authenticated; } friend bool addRadiusAttribute(const gss_eap_attr_provider *source, @@ -104,4 +113,15 @@ private: 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_ */