]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
cleanup, add some more naming extensions tests to S4U
authorLuke Howard <lukeh@padl.com>
Sun, 13 Sep 2009 09:37:29 +0000 (09:37 +0000)
committerLuke Howard <lukeh@padl.com>
Sun, 13 Sep 2009 09:37:29 +0000 (09:37 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/users/lhoward/authdata@22742 dc483132-0cff-0310-8789-dd5450dbe970

src/tests/gssapi/t_namingexts.c
src/tests/gssapi/t_s4u.c

index 605e15cb6c0975260d462fc5903ab3f8cb2c3dde..f6da146c4a6e1647f8a1557aec7a29c72e89be0a 100644 (file)
@@ -77,14 +77,14 @@ displayCanonName(OM_uint32 *minor, gss_name_t name, char *tag)
 
     major = gss_canonicalize_name(minor, name, (gss_OID)gss_mech_krb5, &canon);
     if (GSS_ERROR(major)) {
-        displayStatus("gss_canonicalize_name", major, minor);
+        displayStatus("gss_canonicalize_name", major, *minor);
         return major;
     }
 
     major = gss_display_name(minor, canon, &buf, NULL);
     if (GSS_ERROR(major)) {
         gss_release_name(&tmp, &canon);
-        displayStatus("gss_display_name", major, minor);
+        displayStatus("gss_display_name", major, *minor);
         return major;
     }
 
@@ -123,7 +123,7 @@ dumpAttribute(OM_uint32 *minor,
                                        &display_value,
                                        &more);
         if (GSS_ERROR(major)) {
-            displayStatus("gss_get_name_attribute", major, minor);
+            displayStatus("gss_get_name_attribute", major, *minor);
             break;
         }
 
@@ -168,7 +168,7 @@ enumerateAttributes(OM_uint32 *minor,
                              &asserted,
                              &complete);
     if (GSS_ERROR(major)) {
-        displayStatus("gss_inquire_name", major, minor);
+        displayStatus("gss_inquire_name", major, *minor);
         goto cleanup;
     }
 
@@ -262,13 +262,12 @@ testGreetAuthzData(OM_uint32 *minor,
                                    1,
                                    &attr,
                                    &value);
-    if (GSS_ERROR(major)) {
-        if (major != GSS_S_UNAVAILABLE)
-            displayStatus("gss_set_name_attribute", major, minor);
-        return major;
-    }
+    if (major == GSS_S_UNAVAILABLE)
+        return GSS_S_COMPLETE;
+    else if (GSS_ERROR(major))
+        displayStatus("gss_set_name_attribute", major, *minor);
 
-    return GSS_S_COMPLETE;
+    return major;
 }
 
 static OM_uint32
@@ -292,7 +291,7 @@ initAcceptSecContext(OM_uint32 *minor,
     major = gss_inquire_cred(minor, verifier_cred_handle,
                              &target_name, NULL, NULL, NULL);
     if (GSS_ERROR(major)) {
-        displayStatus("gss_inquire_cred", major, minor);
+        displayStatus("gss_inquire_cred", major, *minor);
         return major;
     }
 
@@ -320,7 +319,7 @@ initAcceptSecContext(OM_uint32 *minor,
         (void) gss_release_name(minor, &target_name);
 
     if (GSS_ERROR(major)) {
-        displayStatus("gss_init_sec_context", major, minor);
+        displayStatus("gss_init_sec_context", major, *minor);
         return major;
     }
 
@@ -339,7 +338,7 @@ initAcceptSecContext(OM_uint32 *minor,
                                    NULL);
 
     if (GSS_ERROR(major))
-        displayStatus("gss_accept_sec_context", major, minor);
+        displayStatus("gss_accept_sec_context", major, *minor);
     else {
         displayCanonName(minor, source_name, "Source name");
         enumerateAttributes(minor, source_name, 1);
index 8e9487a48f8651eea6efd42af1de70255e01a11b..33e0e94dcf74c6018365f60792deb02a38e74a8b 100644 (file)
@@ -167,7 +167,7 @@ dumpAttribute(OM_uint32 *minor,
                                        &display_value,
                                        &more);
         if (GSS_ERROR(major)) {
-            displayStatus("gss_get_name_attribute", major, minor);
+            displayStatus("gss_get_name_attribute", major, *minor);
             break;
         }
 
@@ -212,7 +212,7 @@ enumerateAttributes(OM_uint32 *minor,
                              &asserted,
                              &complete);
     if (GSS_ERROR(major)) {
-        displayStatus("gss_inquire_name", major, minor);
+        displayStatus("gss_inquire_name", major, *minor);
         goto cleanup;
     }
 
@@ -238,6 +238,50 @@ cleanup:
     return major;
 }
 
+static OM_uint32
+testGreetAuthzData(OM_uint32 *minor,
+                   gss_name_t *name)
+{
+    OM_uint32 major, tmp_minor;
+    gss_buffer_desc attr;
+    gss_buffer_desc value;
+    gss_name_t canon;
+
+    major = gss_canonicalize_name(minor,
+                                  *name,
+                                  (gss_OID)gss_mech_krb5,
+                                  &canon);
+    if (GSS_ERROR(major)) {
+        displayStatus("gss_canonicalize_name", major, *minor);
+        return major;
+    }
+
+    attr.value = "greet:greeting";
+    attr.length = strlen((char *)attr.value);
+
+    value.value = "Hello, acceptor world!";
+    value.length = strlen((char *)value.value);
+
+    major = gss_set_name_attribute(minor,
+                                   canon,
+                                   1,
+                                   &attr,
+                                   &value);
+    if (major == GSS_S_UNAVAILABLE)
+        major = GSS_S_COMPLETE;
+    else if (GSS_ERROR(major))
+        displayStatus("gss_set_name_attribute", major, *minor);
+    else {
+        gss_release_name(&tmp_minor, name);
+        *name = canon;
+        canon = GSS_C_NO_NAME;
+    }
+
+    if (canon != GSS_C_NO_NAME)
+        gss_release_name(&tmp_minor, &canon);
+
+    return GSS_S_COMPLETE;
+}
 
 static OM_uint32
 initAcceptSecContext(OM_uint32 *minor,
@@ -467,6 +511,10 @@ int main(int argc, char *argv[])
     printf("Protocol transition tests follow\n");
     printf("-----------------------------------\n\n");
 
+    major = testGreetAuthzData(&minor, &user);
+    if (GSS_ERROR(major))
+        goto out;
+
     /* get S4U2Self cred */
     major = gss_acquire_cred_impersonate_name(&minor,
                                               impersonator_cred_handle,