reimplement gss_spnego_inquire_names_for_mech
add support function _gss_spnego_supported_mechs git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17810 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -34,6 +34,39 @@
|
|||||||
|
|
||||||
RCSID("$Id$");
|
RCSID("$Id$");
|
||||||
|
|
||||||
|
OM_uint32
|
||||||
|
_gss_spnego_supported_mechs(OM_uint32 *minor_status, gss_OID_set *mechs)
|
||||||
|
{
|
||||||
|
OM_uint32 ret, junk;
|
||||||
|
gss_OID_set m;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
ret = gss_indicate_mechs(minor_status, &m);
|
||||||
|
if (ret != GSS_S_COMPLETE)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = gss_create_empty_oid_set(minor_status, mechs);
|
||||||
|
if (ret != GSS_S_COMPLETE) {
|
||||||
|
gss_release_oid_set(&junk, &m);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < m->count; i++) {
|
||||||
|
if (gss_oid_equal(&m->elements[i], GSS_SPNEGO_MECHANISM))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ret = gss_add_oid_set_member(minor_status, &m->elements[i], mechs);
|
||||||
|
if (ret) {
|
||||||
|
gss_release_oid_set(&junk, &m);
|
||||||
|
gss_release_oid_set(&junk, mechs);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OM_uint32 gss_spnego_process_context_token
|
OM_uint32 gss_spnego_process_context_token
|
||||||
(OM_uint32 *minor_status,
|
(OM_uint32 *minor_status,
|
||||||
const gss_ctx_id_t context_handle,
|
const gss_ctx_id_t context_handle,
|
||||||
@@ -439,6 +472,49 @@ OM_uint32 gss_spnego_import_sec_context (
|
|||||||
return GSS_S_COMPLETE;
|
return GSS_S_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OM_uint32 gss_spnego_inquire_names_for_mech (
|
||||||
|
OM_uint32 * minor_status,
|
||||||
|
const gss_OID mechanism,
|
||||||
|
gss_OID_set * name_types
|
||||||
|
)
|
||||||
|
{
|
||||||
|
gss_OID_set mechs, names, n;
|
||||||
|
OM_uint32 ret, junk;
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
*name_types = NULL;
|
||||||
|
|
||||||
|
ret = _gss_spnego_supported_mechs(minor_status, &mechs);
|
||||||
|
if (ret != GSS_S_COMPLETE)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = gss_create_empty_oid_set(minor_status, &names);
|
||||||
|
if (ret != GSS_S_COMPLETE)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
for (i = 0; i < mechs->count; i++) {
|
||||||
|
ret = gss_inquire_names_for_mech(minor_status,
|
||||||
|
&mechs->elements[i],
|
||||||
|
&n);
|
||||||
|
if (ret)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (j = 0; j < n->count; j++)
|
||||||
|
gss_add_oid_set_member(minor_status,
|
||||||
|
&n->elements[j],
|
||||||
|
&names);
|
||||||
|
gss_release_oid_set(&junk, &n);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = GSS_S_COMPLETE;
|
||||||
|
*name_types = names;
|
||||||
|
out:
|
||||||
|
|
||||||
|
gss_release_oid_set(&junk, &mechs);
|
||||||
|
|
||||||
|
return GSS_S_COMPLETE;
|
||||||
|
}
|
||||||
|
|
||||||
OM_uint32 gss_spnego_inquire_mechs_for_name (
|
OM_uint32 gss_spnego_inquire_mechs_for_name (
|
||||||
OM_uint32 * minor_status,
|
OM_uint32 * minor_status,
|
||||||
const gss_name_t input_name,
|
const gss_name_t input_name,
|
||||||
@@ -467,6 +543,7 @@ OM_uint32 gss_spnego_canonicalize_name (
|
|||||||
gss_name_t * output_name
|
gss_name_t * output_name
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
/* XXX */
|
||||||
return gss_duplicate_name(minor_status, input_name, output_name);
|
return gss_duplicate_name(minor_status, input_name, output_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -102,6 +102,9 @@ OM_uint32 _gss_spnego_select_mech(OM_uint32 *, MechType *, gss_OID *);
|
|||||||
OM_uint32 _gss_spnego_alloc_cred(OM_uint32 *, gss_cred_id_t, gss_cred_id_t *);
|
OM_uint32 _gss_spnego_alloc_cred(OM_uint32 *, gss_cred_id_t, gss_cred_id_t *);
|
||||||
OM_uint32 _gss_spnego_release_cred(OM_uint32 *, gss_cred_id_t *);
|
OM_uint32 _gss_spnego_release_cred(OM_uint32 *, gss_cred_id_t *);
|
||||||
|
|
||||||
|
OM_uint32 _gss_spnego_supported_mechs(OM_uint32 *, gss_OID_set *);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Finally, function prototypes for the GSS-API routines.
|
* Finally, function prototypes for the GSS-API routines.
|
||||||
*/
|
*/
|
||||||
@@ -214,6 +217,12 @@ OM_uint32 gss_spnego_display_status
|
|||||||
gss_buffer_t /*status_string*/
|
gss_buffer_t /*status_string*/
|
||||||
);
|
);
|
||||||
|
|
||||||
|
OM_uint32 gss_spnego_inquire_names_for_mech (
|
||||||
|
OM_uint32 * minor_status,
|
||||||
|
const gss_OID mechanism,
|
||||||
|
gss_OID_set * name_types
|
||||||
|
);
|
||||||
|
|
||||||
OM_uint32 gss_spnego_compare_name
|
OM_uint32 gss_spnego_compare_name
|
||||||
(OM_uint32 * /*minor_status*/,
|
(OM_uint32 * /*minor_status*/,
|
||||||
const gss_name_t /*name1*/,
|
const gss_name_t /*name1*/,
|
||||||
|
Reference in New Issue
Block a user