make attribute prefix a class method
[moonshot.git] / mech_eap / util_attr.h
index e55e9a9..6af4cf3 100644 (file)
@@ -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
@@ -45,7 +45,8 @@ 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 +76,78 @@ 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,
-                              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 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 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
+    {
+    }
+
+    virtual const char *prefix(void) const
+    {
+        return NULL;
+    }
+
+    virtual void exportToBuffer(gss_buffer_t buffer GSSEAP_UNUSED) const
+    {
+    }
+
     virtual bool initFromBuffer(const gss_eap_attr_ctx *manager,
-                                const gss_buffer_t buffer)
+                                const gss_buffer_t buffer GSSEAP_UNUSED)
     {
         return initWithManager(manager);
     }
 
     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 +200,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 +211,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 +239,9 @@ 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;
+
     gss_eap_attr_provider *getPrimaryProvider(void) const;
 
     /* make non-copyable */