more name testing

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17856 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2006-07-20 05:13:25 +00:00
parent 908ffa6950
commit e976877e0c

View File

@@ -102,10 +102,10 @@ main(int argc, char **argv)
{ {
gss_buffer_desc name_buffer; gss_buffer_desc name_buffer;
OM_uint32 maj_stat, min_stat; OM_uint32 maj_stat, min_stat;
gss_name_t name, MNname; gss_name_t name, MNname, MNname2;
int optidx = 0; int optidx = 0;
char *str; char *str;
int len; int len, equal;
setprogname(argv[0]); setprogname(argv[0]);
if(getarg(args, sizeof(args) / sizeof(args[0]), argc, argv, &optidx)) if(getarg(args, sizeof(args) / sizeof(args[0]), argc, argv, &optidx))
@@ -122,6 +122,10 @@ main(int argc, char **argv)
argc -= optidx; argc -= optidx;
argv += optidx; argv += optidx;
/*
* test import/export
*/
len = asprintf(&str, "ftp@freeze-arrow.mit.edu"); len = asprintf(&str, "ftp@freeze-arrow.mit.edu");
if (len == -1) if (len == -1)
errx(1, "asprintf"); errx(1, "asprintf");
@@ -143,14 +147,68 @@ main(int argc, char **argv)
if (maj_stat != GSS_S_COMPLETE) if (maj_stat != GSS_S_COMPLETE)
gss_err(1, min_stat, "canonicalize name error"); gss_err(1, min_stat, "canonicalize name error");
maj_stat = gss_export_name(&maj_stat, maj_stat = gss_export_name(&min_stat,
MNname, MNname,
&name_buffer); &name_buffer);
if (maj_stat != GSS_S_COMPLETE) if (maj_stat != GSS_S_COMPLETE)
gss_err(1, min_stat, "export name error (KRB5)"); gss_err(1, min_stat, "export name error (KRB5)");
gss_release_name(&min_stat, &MNname); /*
* Import the exported name and compare
*/
maj_stat = gss_import_name(&min_stat, &name_buffer,
GSS_C_NT_EXPORT_NAME,
&MNname2);
if (maj_stat != GSS_S_COMPLETE)
gss_err(1, min_stat, "import name error (exported KRB5 name)");
maj_stat = gss_compare_name(&min_stat, MNname, MNname2, &equal);
if (maj_stat != GSS_S_COMPLETE)
errx(1, "gss_compare_name");
if (!equal)
errx(1, "names not equal");
gss_release_name(&min_stat, &MNname2);
gss_release_buffer(&min_stat, &name_buffer); gss_release_buffer(&min_stat, &name_buffer);
gss_release_name(&min_stat, &MNname);
gss_release_name(&min_stat, &name);
/*
* Import oid less name and compare to mech name.
* Dovecot SASL lib does this.
*/
len = asprintf(&str, "lha");
if (len == -1)
errx(1, "asprintf");
name_buffer.value = str;
name_buffer.length = len;
maj_stat = gss_import_name(&min_stat, &name_buffer,
GSS_C_NO_OID,
&name);
if (maj_stat != GSS_S_COMPLETE)
gss_err(1, min_stat, "import (no oid) name error");
maj_stat = gss_import_name(&min_stat, &name_buffer,
GSS_KRB5_NT_USER_NAME,
&MNname);
if (maj_stat != GSS_S_COMPLETE)
gss_err(1, min_stat, "import (krb5 mn) name error");
free(str);
maj_stat = gss_compare_name(&min_stat, name, MNname, &equal);
if (maj_stat != GSS_S_COMPLETE)
errx(1, "gss_compare_name");
if (!equal)
errx(1, "names not equal");
gss_release_name(&min_stat, &MNname);
gss_release_name(&min_stat, &name);
#if 0 #if 0
maj_stat = gss_canonicalize_name (&min_stat, maj_stat = gss_canonicalize_name (&min_stat,
@@ -170,7 +228,6 @@ main(int argc, char **argv)
gss_release_name(&min_stat, &MNname); gss_release_name(&min_stat, &MNname);
gss_release_buffer(&min_stat, &name_buffer); gss_release_buffer(&min_stat, &name_buffer);
#endif #endif
gss_release_name(&min_stat, &name);
return 0; return 0;
} }