various fixes, add a sample attribute to exercise code
authorLuke Howard <lukeh@padl.com>
Sun, 19 Sep 2010 22:08:51 +0000 (00:08 +0200)
committerLuke Howard <lukeh@padl.com>
Sun, 19 Sep 2010 22:08:51 +0000 (00:08 +0200)
mech_eap/util_attr.cpp
mech_eap/util_saml.cpp
mech_eap/util_shib.cpp

index 44e1505..c564c62 100644 (file)
@@ -262,7 +262,6 @@ addAttribute(const gss_eap_attr_provider *provider,
              void *data)
 {
     eap_gss_get_attr_types_args *args = (eap_gss_get_attr_types_args *)data;
-    gss_buffer_t prefix = GSS_C_NO_BUFFER;
     gss_buffer_desc qualified;
     OM_uint32 major, minor;
 
@@ -271,7 +270,7 @@ addAttribute(const gss_eap_attr_provider *provider,
         major = gss_add_buffer_set_member(&minor, &qualified, &args->attrs);
         gss_release_buffer(&minor, &qualified);
     } else {
-        major = gss_add_buffer_set_member(&minor, prefix, &args->attrs);
+        major = gss_add_buffer_set_member(&minor, attribute, &args->attrs);
     }
 
     return GSS_ERROR(major) == false;
index 0733fa9..3f62e1d 100644 (file)
@@ -154,8 +154,15 @@ bool
 gss_eap_saml_assertion_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute,
                                                    void *data) const
 {
+    bool ret;
+
     /* just add the prefix */
-    return addAttribute(this, GSS_C_NO_BUFFER, data);
+    if (m_assertion != NULL)
+        ret = addAttribute(this, GSS_C_NO_BUFFER, data);
+    else
+        ret = true;
+
+    return ret;
 }
 
 void
index 9f46ead..a374ac5 100644 (file)
@@ -199,6 +199,14 @@ gss_eap_shib_attr_provider::initFromGssContext(const gss_eap_attr_ctx *manager,
 
     delete resolver;
 
+#ifdef GSSEAP_DEBUG
+    gss_buffer_desc testattr = {
+        sizeof("urn:greet:greeting") - 1, (void *)"urn:greet:greeting" };
+    gss_buffer_desc testval =
+        { sizeof("Hello, GSS EAP.") - 1, (void *)"Hello, GSS EAP." };
+    setAttribute(true, &testattr, &testval);
+#endif /* GSSEAP_DEBUG */
+
     return true;
 }
 
@@ -230,10 +238,7 @@ gss_eap_shib_attr_provider::setAttribute(int complete,
                                          const gss_buffer_t value)
 {
     string attrStr((char *)attr->value, attr->length);
-    vector <string> ids(1);
-
-    ids.push_back(attrStr);
-
+    vector <string> ids(1, attrStr);
     SimpleAttribute *a = new SimpleAttribute(ids);
 
     if (value->length != 0) {
@@ -439,8 +444,25 @@ gss_eap_shib_attr_provider::initFromBuffer(const gss_eap_attr_ctx *ctx,
 bool
 gss_eap_shib_attr_provider::init(void)
 {
+#if 1
+    SPConfig& conf=SPConfig::getConfig();
+    conf.setFeatures(
+        SPConfig::Metadata |
+        SPConfig::Trust |
+        SPConfig::AttributeResolution |
+        SPConfig::Credentials |
+        SPConfig::OutOfProcess
+        );
+    if (!conf.init())
+        return false;
+    if (!conf.instantiate()) {
+        conf.term();
+        return false;
+    }
+#else
     if (!ShibbolethResolver::init())
         return false;
+#endif
 
     gss_eap_attr_ctx::registerProvider(ATTR_TYPE_LOCAL,
                                        NULL,
@@ -465,10 +487,8 @@ gss_eap_shib_attr_provider::createAttrContext(void)
 Attribute *
 gss_eap_shib_attr_provider::duplicateAttribute(const Attribute *src)
 {
-    Attribute *attribute;
-
     DDF obj = src->marshall();
-    attribute = Attribute::unmarshall(obj);
+    Attribute *attribute = Attribute::unmarshall(obj);
     obj.destroy();
 
     return attribute;