some cleanup work on marshalling
[mech_eap.git] / util_attr.h
index eb0a041..6141658 100644 (file)
@@ -41,6 +41,8 @@
 #define ATTR_TYPE_MAX               (ATTR_TYPE_LOCAL + 1U)
 
 #ifdef __cplusplus
+#include <string>
+
 struct gss_eap_attr_ctx;
 
 struct gss_eap_attr_provider
@@ -90,9 +92,9 @@ public:
     virtual void releaseAnyNameMapping(gss_buffer_t type_id,
                                        gss_any_t input) const {}
 
-    virtual void marshall(gss_buffer_t buffer) const {}
-    virtual bool unmarshall(const gss_eap_attr_ctx *ctx,
-                            const gss_buffer_t buffer) { return false; }
+    virtual void exportToBuffer(gss_buffer_t buffer) const {}
+    virtual bool initFromBuffer(const gss_eap_attr_ctx *ctx,
+                                const gss_buffer_t buffer) { return false; }
 
     static bool init() { return true; }
     static void finalize() {}
@@ -103,12 +105,12 @@ protected:
     const gss_eap_attr_ctx *m_source;
 };
 
-typedef gss_eap_attr_provider *(*gss_eap_attr_create_cb)(void);
+typedef gss_eap_attr_provider *(*gss_eap_attr_create_factory)(void);
 
 struct gss_eap_attr_ctx : gss_eap_attr_provider
 {
 public:
-    gss_eap_attr_ctx(void) {}
+    gss_eap_attr_ctx(void);
     ~gss_eap_attr_ctx(void);
 
     bool initFromExistingContext(const gss_eap_attr_ctx *source,
@@ -117,8 +119,6 @@ public:
                             const gss_cred_id_t cred,
                             const gss_ctx_id_t ctx);
 
-    static gss_eap_attr_ctx *createAttrContext(void);
-
     bool getAttributeTypes(gss_eap_attr_enumeration_cb, void *data) const;
     bool getAttributeTypes(gss_buffer_set_t *attrs);
 
@@ -137,16 +137,16 @@ public:
     void releaseAnyNameMapping(gss_buffer_t type_id,
                                gss_any_t input) const;
 
-    void marshall(gss_buffer_t buffer) const;
-    bool unmarshall(const gss_eap_attr_ctx *ctx,
-                    const gss_buffer_t buffer);
+    void exportToBuffer(gss_buffer_t buffer) const;
+    bool initFromBuffer(const gss_eap_attr_ctx *ctx,
+                        const gss_buffer_t buffer);
     static bool init();
     static void finalize();
 
     static unsigned int
     attributePrefixToType(const gss_buffer_t prefix);
 
-    static gss_buffer_t
+    static const gss_buffer_t
     attributeTypeToPrefix(unsigned int type);
 
     static void
@@ -166,6 +166,13 @@ public:
                          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_eap_attr_provider *getProvider(unsigned int type) const;
     gss_eap_attr_provider *getProvider(const gss_buffer_t prefix) const;