Add naming extension SPIs
This commit is contained in:
@@ -92,15 +92,19 @@ mechsrc = \
|
||||
mech/gss_create_empty_oid_set.c \
|
||||
mech/gss_cred.c \
|
||||
mech/gss_decapsulate_token.c \
|
||||
mech/gss_delete_name_attribute.c \
|
||||
mech/gss_delete_sec_context.c \
|
||||
mech/gss_display_name.c \
|
||||
mech/gss_display_name_ext.c \
|
||||
mech/gss_display_status.c \
|
||||
mech/gss_duplicate_name.c \
|
||||
mech/gss_duplicate_oid.c \
|
||||
mech/gss_encapsulate_token.c \
|
||||
mech/gss_export_name.c \
|
||||
mech/gss_export_name_composite.c \
|
||||
mech/gss_export_sec_context.c \
|
||||
mech/gss_get_mic.c \
|
||||
mech/gss_get_name_attribute.c \
|
||||
mech/gss_import_name.c \
|
||||
mech/gss_import_sec_context.c \
|
||||
mech/gss_indicate_mechs.c \
|
||||
@@ -110,8 +114,10 @@ mechsrc = \
|
||||
mech/gss_inquire_cred_by_mech.c \
|
||||
mech/gss_inquire_cred_by_oid.c \
|
||||
mech/gss_inquire_mechs_for_name.c \
|
||||
mech/gss_inquire_name.c \
|
||||
mech/gss_inquire_names_for_mech.c \
|
||||
mech/gss_krb5.c \
|
||||
mech/gss_map_name_to_any.c \
|
||||
mech/gss_mech_switch.c \
|
||||
mech/gss_mo.c \
|
||||
mech/gss_names.c \
|
||||
@@ -120,6 +126,7 @@ mechsrc = \
|
||||
mech/gss_oid_to_str.c \
|
||||
mech/gss_process_context_token.c \
|
||||
mech/gss_pseudo_random.c \
|
||||
mech/gss_release_any_name_mapping.c \
|
||||
mech/gss_release_buffer.c \
|
||||
mech/gss_release_cred.c \
|
||||
mech/gss_release_name.c \
|
||||
@@ -127,6 +134,7 @@ mechsrc = \
|
||||
mech/gss_release_oid_set.c \
|
||||
mech/gss_seal.c \
|
||||
mech/gss_set_cred_option.c \
|
||||
mech/gss_set_name_attribute.c \
|
||||
mech/gss_set_sec_context_option.c \
|
||||
mech/gss_sign.c \
|
||||
mech/gss_store_cred.c \
|
||||
|
@@ -1017,6 +1017,72 @@ GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_add_cred_with_password (
|
||||
OM_uint32 * /*acceptor_time_rec*/
|
||||
);
|
||||
|
||||
/*
|
||||
* Naming extensions
|
||||
*/
|
||||
GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_display_name_ext (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_OID, /* display_as_name_type */
|
||||
gss_buffer_t /* display_name */
|
||||
);
|
||||
|
||||
GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_inquire_name (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
int *, /* name_is_MN */
|
||||
gss_OID *, /* MN_mech */
|
||||
gss_buffer_set_t * /* attrs */
|
||||
);
|
||||
|
||||
GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_get_name_attribute (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_buffer_t, /* attr */
|
||||
int *, /* authenticated */
|
||||
int *, /* complete */
|
||||
gss_buffer_t, /* value */
|
||||
gss_buffer_t, /* display_value */
|
||||
int * /* more */
|
||||
);
|
||||
|
||||
GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_set_name_attribute (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
int, /* complete */
|
||||
gss_buffer_t, /* attr */
|
||||
gss_buffer_t /* value */
|
||||
);
|
||||
|
||||
GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_delete_name_attribute (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_buffer_t /* attr */
|
||||
);
|
||||
|
||||
GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_export_name_composite (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_buffer_t /* exp_composite_name */
|
||||
);
|
||||
|
||||
typedef struct gss_any *gss_any_t;
|
||||
|
||||
GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_map_name_to_any (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
int, /* authenticated */
|
||||
gss_buffer_t, /* type_id */
|
||||
gss_any_t * /* output */
|
||||
);
|
||||
|
||||
GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL gss_release_any_name_mapping (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_buffer_t, /* type_id */
|
||||
gss_any_t * /* input */
|
||||
);
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
|
@@ -434,6 +434,67 @@ typedef OM_uint32 GSSAPI_CALLCONV _gss_add_cred_with_password_t (
|
||||
OM_uint32 * /* acceptor_time_rec */
|
||||
);
|
||||
|
||||
typedef OM_uint32 GSSAPI_CALLCONV _gss_display_name_ext_t (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_OID, /* display_as_name_type */
|
||||
gss_buffer_t /* display_name */
|
||||
);
|
||||
|
||||
typedef OM_uint32 GSSAPI_CALLCONV _gss_inquire_name_t (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
int *, /* name_is_MN */
|
||||
gss_OID *, /* MN_mech */
|
||||
gss_buffer_set_t * /* attrs */
|
||||
);
|
||||
|
||||
typedef OM_uint32 GSSAPI_CALLCONV _gss_get_name_attribute_t (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_buffer_t, /* attr */
|
||||
int *, /* authenticated */
|
||||
int *, /* complete */
|
||||
gss_buffer_t, /* value */
|
||||
gss_buffer_t, /* display_value */
|
||||
int * /* more */
|
||||
);
|
||||
|
||||
typedef OM_uint32 GSSAPI_CALLCONV _gss_set_name_attribute_t (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
int, /* complete */
|
||||
gss_buffer_t, /* attr */
|
||||
gss_buffer_t /* value */
|
||||
);
|
||||
|
||||
typedef OM_uint32 GSSAPI_CALLCONV _gss_delete_name_attribute_t (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_buffer_t /* attr */
|
||||
);
|
||||
|
||||
typedef OM_uint32 GSSAPI_CALLCONV _gss_export_name_composite_t (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_buffer_t /* exp_composite_name */
|
||||
);
|
||||
|
||||
typedef OM_uint32 GSSAPI_CALLCONV _gss_map_name_to_any_t (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
int, /* authenticated */
|
||||
gss_buffer_t, /* type_id */
|
||||
gss_any_t * /* output */
|
||||
);
|
||||
|
||||
typedef OM_uint32 GSSAPI_CALLCONV _gss_release_any_name_mapping_t (
|
||||
OM_uint32 *, /* minor_status */
|
||||
gss_name_t, /* name */
|
||||
gss_buffer_t, /* type_id */
|
||||
gss_any_t * /* input */
|
||||
);
|
||||
|
||||
#define GMI_VERSION 5
|
||||
|
||||
/* gm_flags */
|
||||
@@ -496,6 +557,14 @@ typedef struct gssapi_mech_interface_desc {
|
||||
size_t gm_mo_num;
|
||||
_gss_acquire_cred_with_password_t *gm_acquire_cred_with_password;
|
||||
_gss_add_cred_with_password_t *gm_add_cred_with_password;
|
||||
_gss_display_name_ext_t *gm_display_name_ext;
|
||||
_gss_inquire_name_t *gm_inquire_name;
|
||||
_gss_get_name_attribute_t *gm_get_name_attribute;
|
||||
_gss_set_name_attribute_t *gm_set_name_attribute;
|
||||
_gss_delete_name_attribute_t *gm_delete_name_attribute;
|
||||
_gss_export_name_composite_t *gm_export_name_composite;
|
||||
_gss_map_name_to_any_t *gm_map_name_to_any;
|
||||
_gss_release_any_name_mapping_t *gm_release_any_name_mapping;
|
||||
} gssapi_mech_interface_desc, *gssapi_mech_interface;
|
||||
|
||||
gssapi_mech_interface
|
||||
|
65
lib/gssapi/mech/gss_delete_name_attribute.c
Normal file
65
lib/gssapi/mech/gss_delete_name_attribute.c
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (c) 2010, PADL Software Pty Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of PADL Software nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY PADL SOFTWARE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL PADL SOFTWARE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "mech_locl.h"
|
||||
|
||||
OM_uint32
|
||||
gss_delete_name_attribute(OM_uint32 *minor_status,
|
||||
gss_name_t input_name,
|
||||
gss_buffer_t attr)
|
||||
{
|
||||
OM_uint32 major_status = GSS_S_UNAVAILABLE;
|
||||
struct _gss_name *name = (struct _gss_name *) input_name;
|
||||
struct _gss_mechanism_name *mn;
|
||||
|
||||
*minor_status = 0;
|
||||
|
||||
if (input_name == GSS_C_NO_NAME)
|
||||
return GSS_S_BAD_NAME;
|
||||
|
||||
HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
|
||||
gssapi_mech_interface m = mn->gmn_mech;
|
||||
|
||||
if (!m->gm_delete_name_attribute)
|
||||
continue;
|
||||
|
||||
major_status = m->gm_delete_name_attribute(minor_status,
|
||||
mn->gmn_name,
|
||||
attr);
|
||||
if (GSS_ERROR(major_status))
|
||||
_gss_mg_error(m, major_status, *minor_status);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
return major_status;
|
||||
}
|
68
lib/gssapi/mech/gss_display_name_ext.c
Normal file
68
lib/gssapi/mech/gss_display_name_ext.c
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright (c) 2010, PADL Software Pty Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of PADL Software nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY PADL SOFTWARE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL PADL SOFTWARE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "mech_locl.h"
|
||||
|
||||
OM_uint32
|
||||
gss_display_name_ext(OM_uint32 *minor_status,
|
||||
gss_name_t input_name,
|
||||
gss_OID display_as_name_type,
|
||||
gss_buffer_t display_name)
|
||||
{
|
||||
OM_uint32 major_status = GSS_S_UNAVAILABLE;
|
||||
struct _gss_name *name = (struct _gss_name *) input_name;
|
||||
struct _gss_mechanism_name *mn;
|
||||
|
||||
*minor_status = 0;
|
||||
_mg_buffer_zero(display_name);
|
||||
|
||||
if (input_name == GSS_C_NO_NAME)
|
||||
return GSS_S_BAD_NAME;
|
||||
|
||||
HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
|
||||
gssapi_mech_interface m = mn->gmn_mech;
|
||||
|
||||
if (!m->gm_display_name_ext)
|
||||
continue;
|
||||
|
||||
major_status = m->gm_display_name_ext(minor_status,
|
||||
mn->gmn_name,
|
||||
display_as_name_type,
|
||||
display_name);
|
||||
if (GSS_ERROR(major_status))
|
||||
_gss_mg_error(m, major_status, *minor_status);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
return major_status;
|
||||
}
|
66
lib/gssapi/mech/gss_export_name_composite.c
Normal file
66
lib/gssapi/mech/gss_export_name_composite.c
Normal file
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright (c) 2010, PADL Software Pty Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of PADL Software nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY PADL SOFTWARE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL PADL SOFTWARE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "mech_locl.h"
|
||||
|
||||
OM_uint32
|
||||
gss_export_name_composite(OM_uint32 *minor_status,
|
||||
gss_name_t input_name,
|
||||
gss_buffer_t exp_composite_name)
|
||||
{
|
||||
OM_uint32 major_status = GSS_S_UNAVAILABLE;
|
||||
struct _gss_name *name = (struct _gss_name *) input_name;
|
||||
struct _gss_mechanism_name *mn;
|
||||
|
||||
*minor_status = 0;
|
||||
_mg_buffer_zero(exp_composite_name);
|
||||
|
||||
if (input_name == GSS_C_NO_NAME)
|
||||
return GSS_S_BAD_NAME;
|
||||
|
||||
HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
|
||||
gssapi_mech_interface m = mn->gmn_mech;
|
||||
|
||||
if (!m->gm_export_name_composite)
|
||||
continue;
|
||||
|
||||
major_status = m->gm_export_name_composite(minor_status,
|
||||
mn->gmn_name,
|
||||
exp_composite_name);
|
||||
if (GSS_ERROR(major_status))
|
||||
_gss_mg_error(m, major_status, *minor_status);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
return major_status;
|
||||
}
|
@@ -1,17 +1,79 @@
|
||||
|
||||
/**
|
||||
/*
|
||||
* Copyright (c) 2010, PADL Software Pty Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of PADL Software nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY PADL SOFTWARE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL PADL SOFTWARE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "mech_locl.h"
|
||||
|
||||
OM_uint32
|
||||
gss_get_name_attribute(OM_uint32 *minor_status,
|
||||
gss_name_t name,
|
||||
gss_name_t input_name,
|
||||
gss_buffer_t attr,
|
||||
int *authenticated,
|
||||
int *complete,
|
||||
int *complete,
|
||||
gss_buffer_t value,
|
||||
gss_buffer_t display_value,
|
||||
int *more)
|
||||
{
|
||||
return GSS_S_FAILURE;
|
||||
OM_uint32 major_status = GSS_S_UNAVAILABLE;
|
||||
struct _gss_name *name = (struct _gss_name *) input_name;
|
||||
struct _gss_mechanism_name *mn;
|
||||
|
||||
*minor_status = 0;
|
||||
*authenticated = 0;
|
||||
*complete = 0;
|
||||
_mg_buffer_zero(value);
|
||||
_mg_buffer_zero(display_value);
|
||||
|
||||
if (input_name == GSS_C_NO_NAME)
|
||||
return GSS_S_BAD_NAME;
|
||||
|
||||
HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
|
||||
gssapi_mech_interface m = mn->gmn_mech;
|
||||
|
||||
if (!m->gm_get_name_attribute)
|
||||
continue;
|
||||
|
||||
major_status = m->gm_get_name_attribute(minor_status,
|
||||
mn->gmn_name,
|
||||
attr,
|
||||
authenticated,
|
||||
complete,
|
||||
value,
|
||||
display_value,
|
||||
more);
|
||||
if (GSS_ERROR(major_status))
|
||||
_gss_mg_error(m, major_status, *minor_status);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
return major_status;
|
||||
}
|
||||
|
@@ -1,23 +1,77 @@
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
/*
|
||||
* Copyright (c) 2010, PADL Software Pty Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of PADL Software nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY PADL SOFTWARE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL PADL SOFTWARE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "mech_locl.h"
|
||||
|
||||
OM_uint32
|
||||
gss_inquire_name(OM_uint32 *minor_status,
|
||||
gss_name_t name,
|
||||
gss_name_t input_name,
|
||||
int *name_is_MN,
|
||||
gss_OID *MN_mech,
|
||||
gss_buffer_set_t *attrs)
|
||||
{
|
||||
OM_uint32 major_status = GSS_S_UNAVAILABLE;
|
||||
struct _gss_name *name = (struct _gss_name *) input_name;
|
||||
struct _gss_mechanism_name *mn;
|
||||
|
||||
*minor_status = 0;
|
||||
*name_is_MN = 0;
|
||||
*MN_mech = NULL;
|
||||
attrs->count = 0;
|
||||
attrs->elements = NULL;
|
||||
*MN_mech = GSS_C_NO_OID;
|
||||
*attrs = GSS_C_NO_BUFFER_SET;
|
||||
|
||||
return GSS_S_FAILURE;
|
||||
if (input_name == GSS_C_NO_NAME)
|
||||
return GSS_S_BAD_NAME;
|
||||
|
||||
HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
|
||||
gssapi_mech_interface m = mn->gmn_mech;
|
||||
|
||||
if (!m->gm_inquire_name)
|
||||
continue;
|
||||
|
||||
major_status = m->gm_inquire_name(minor_status,
|
||||
mn->gmn_name,
|
||||
NULL,
|
||||
MN_mech,
|
||||
attrs);
|
||||
if (major_status == GSS_S_COMPLETE) {
|
||||
*name_is_MN = 1;
|
||||
#if 0
|
||||
if (*MN_mech == GSS_C_NO_OID)
|
||||
*MN_mech = &m->gm_mech_oid;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
_gss_mg_error(m, major_status, *minor_status);
|
||||
}
|
||||
|
||||
return major_status;
|
||||
}
|
||||
|
70
lib/gssapi/mech/gss_map_name_to_any.c
Normal file
70
lib/gssapi/mech/gss_map_name_to_any.c
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright (c) 2010, PADL Software Pty Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of PADL Software nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY PADL SOFTWARE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL PADL SOFTWARE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "mech_locl.h"
|
||||
|
||||
OM_uint32
|
||||
gss_map_name_to_any(OM_uint32 *minor_status,
|
||||
gss_name_t input_name,
|
||||
int authenticated,
|
||||
gss_buffer_t type_id,
|
||||
gss_any_t *output)
|
||||
{
|
||||
OM_uint32 major_status = GSS_S_UNAVAILABLE;
|
||||
struct _gss_name *name = (struct _gss_name *) input_name;
|
||||
struct _gss_mechanism_name *mn;
|
||||
|
||||
*minor_status = 0;
|
||||
*output = (gss_any_t)0;
|
||||
|
||||
if (input_name == GSS_C_NO_NAME)
|
||||
return GSS_S_BAD_NAME;
|
||||
|
||||
HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
|
||||
gssapi_mech_interface m = mn->gmn_mech;
|
||||
|
||||
if (!m->gm_map_name_to_any)
|
||||
continue;
|
||||
|
||||
major_status = m->gm_map_name_to_any(minor_status,
|
||||
mn->gmn_name,
|
||||
authenticated,
|
||||
type_id,
|
||||
output);
|
||||
if (GSS_ERROR(major_status))
|
||||
_gss_mg_error(m, major_status, *minor_status);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
return major_status;
|
||||
}
|
@@ -348,6 +348,14 @@ _gss_load_mech(void)
|
||||
OPTSYM(wrap_iov_length);
|
||||
OPTSPISYM(acquire_cred_with_password);
|
||||
OPTSYM(add_cred_with_password);
|
||||
OPTSYM(display_name_ext);
|
||||
OPTSYM(inquire_name);
|
||||
OPTSYM(get_name_attribute);
|
||||
OPTSYM(set_name_attribute);
|
||||
OPTSYM(delete_name_attribute);
|
||||
OPTSYM(export_name_composite);
|
||||
OPTSYM(map_name_to_any);
|
||||
OPTSYM(release_any_name_mapping);
|
||||
|
||||
/* pick up the oid sets of names */
|
||||
|
||||
|
69
lib/gssapi/mech/gss_release_any_name_mapping.c
Normal file
69
lib/gssapi/mech/gss_release_any_name_mapping.c
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (c) 2010, PADL Software Pty Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of PADL Software nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY PADL SOFTWARE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL PADL SOFTWARE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "mech_locl.h"
|
||||
|
||||
OM_uint32
|
||||
gss_release_any_name_mapping(OM_uint32 *minor_status,
|
||||
gss_name_t input_name,
|
||||
gss_buffer_t type_id,
|
||||
gss_any_t *input)
|
||||
{
|
||||
OM_uint32 major_status = GSS_S_UNAVAILABLE;
|
||||
struct _gss_name *name = (struct _gss_name *) input_name;
|
||||
struct _gss_mechanism_name *mn;
|
||||
|
||||
*minor_status = 0;
|
||||
|
||||
if (input_name == GSS_C_NO_NAME)
|
||||
return GSS_S_BAD_NAME;
|
||||
|
||||
HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
|
||||
gssapi_mech_interface m = mn->gmn_mech;
|
||||
|
||||
if (!m->gm_release_any_name_mapping)
|
||||
continue;
|
||||
|
||||
major_status = m->gm_release_any_name_mapping(minor_status,
|
||||
mn->gmn_name,
|
||||
type_id,
|
||||
input);
|
||||
if (GSS_ERROR(major_status))
|
||||
_gss_mg_error(m, major_status, *minor_status);
|
||||
else {
|
||||
*input = (gss_any_t)0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return major_status;
|
||||
}
|
69
lib/gssapi/mech/gss_set_name_attribute.c
Normal file
69
lib/gssapi/mech/gss_set_name_attribute.c
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (c) 2010, PADL Software Pty Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of PADL Software nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY PADL SOFTWARE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL PADL SOFTWARE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "mech_locl.h"
|
||||
|
||||
OM_uint32
|
||||
gss_set_name_attribute(OM_uint32 *minor_status,
|
||||
gss_name_t input_name,
|
||||
int complete,
|
||||
gss_buffer_t attr,
|
||||
gss_buffer_t value)
|
||||
{
|
||||
OM_uint32 major_status = GSS_S_UNAVAILABLE;
|
||||
struct _gss_name *name = (struct _gss_name *) input_name;
|
||||
struct _gss_mechanism_name *mn;
|
||||
|
||||
*minor_status = 0;
|
||||
|
||||
if (input_name == GSS_C_NO_NAME)
|
||||
return GSS_S_BAD_NAME;
|
||||
|
||||
HEIM_SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
|
||||
gssapi_mech_interface m = mn->gmn_mech;
|
||||
|
||||
if (!m->gm_set_name_attribute)
|
||||
continue;
|
||||
|
||||
major_status = m->gm_set_name_attribute(minor_status,
|
||||
mn->gmn_name,
|
||||
complete,
|
||||
attr,
|
||||
value);
|
||||
if (GSS_ERROR(major_status))
|
||||
_gss_mg_error(m, major_status, *minor_status);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
return major_status;
|
||||
}
|
@@ -25,16 +25,20 @@ HEIMDAL_GSS_2.0 {
|
||||
gss_create_empty_buffer_set;
|
||||
gss_create_empty_oid_set;
|
||||
gss_decapsulate_token;
|
||||
gss_delete_name_attribute;
|
||||
gss_delete_sec_context;
|
||||
gss_display_name;
|
||||
gss_display_name_ext;
|
||||
gss_display_status;
|
||||
gss_duplicate_name;
|
||||
gss_duplicate_oid;
|
||||
gss_encapsulate_token;
|
||||
gss_export_cred;
|
||||
gss_export_name;
|
||||
gss_export_name_composite;
|
||||
gss_export_sec_context;
|
||||
gss_get_mic;
|
||||
gss_get_name_attribute;
|
||||
gss_import_cred;
|
||||
gss_import_name;
|
||||
gss_import_sec_context;
|
||||
@@ -45,6 +49,7 @@ HEIMDAL_GSS_2.0 {
|
||||
gss_inquire_cred_by_mech;
|
||||
gss_inquire_cred_by_oid;
|
||||
gss_inquire_mechs_for_name;
|
||||
gss_inquire_name;
|
||||
gss_inquire_names_for_mech;
|
||||
gss_inquire_sec_context_by_oid;
|
||||
gss_inquire_sec_context_by_oid;
|
||||
@@ -55,11 +60,13 @@ HEIMDAL_GSS_2.0 {
|
||||
gss_krb5_get_tkt_flags;
|
||||
gss_krb5_import_cred;
|
||||
gss_krb5_set_allowable_enctypes;
|
||||
gss_map_name_to_any;
|
||||
gss_mg_collect_error;
|
||||
gss_oid_equal;
|
||||
gss_oid_to_str;
|
||||
gss_process_context_token;
|
||||
gss_pseudo_random;
|
||||
gss_release_any_name_mapping;
|
||||
gss_release_buffer;
|
||||
gss_release_buffer_set;
|
||||
gss_release_cred;
|
||||
@@ -69,6 +76,7 @@ HEIMDAL_GSS_2.0 {
|
||||
gss_release_oid_set;
|
||||
gss_seal;
|
||||
gss_set_cred_option;
|
||||
gss_set_name_attribute;
|
||||
gss_set_sec_context_option;
|
||||
gss_sign;
|
||||
gss_test_oid_set_member;
|
||||
|
Reference in New Issue
Block a user