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;
}
&display_value,
&more);
if (GSS_ERROR(major)) {
- displayStatus("gss_get_name_attribute", major, minor);
+ displayStatus("gss_get_name_attribute", major, *minor);
break;
}
&asserted,
&complete);
if (GSS_ERROR(major)) {
- displayStatus("gss_inquire_name", major, minor);
+ displayStatus("gss_inquire_name", major, *minor);
goto cleanup;
}
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
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;
}
(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;
}
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);
&display_value,
&more);
if (GSS_ERROR(major)) {
- displayStatus("gss_get_name_attribute", major, minor);
+ displayStatus("gss_get_name_attribute", major, *minor);
break;
}
&asserted,
&complete);
if (GSS_ERROR(major)) {
- displayStatus("gss_inquire_name", major, minor);
+ displayStatus("gss_inquire_name", major, *minor);
goto 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,
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,