本文整理汇总了C++中gss_release_oid_set函数的典型用法代码示例。如果您正苦于以下问题:C++ gss_release_oid_set函数的具体用法?C++ gss_release_oid_set怎么用?C++ gss_release_oid_set使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了gss_release_oid_set函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: get_local_def_creds
static OM_uint32 get_local_def_creds(OM_uint32 *minor_status,
struct gpp_name_handle *name,
gss_cred_usage_t cred_usage,
struct gpp_cred_handle *cred_handle)
{
gss_OID_set interposed_mechs = GSS_C_NO_OID_SET;
gss_OID_set special_mechs = GSS_C_NO_OID_SET;
OM_uint32 maj, min;
maj = GSS_S_FAILURE;
min = 0;
interposed_mechs = gss_mech_interposer((gss_OID)&gssproxy_mech_interposer);
if (interposed_mechs == GSS_C_NO_OID_SET) {
goto done;
}
special_mechs = gpp_special_available_mechs(interposed_mechs);
if (special_mechs == GSS_C_NO_OID_SET) {
goto done;
}
maj = gss_acquire_cred(&min, name ? name->local : NULL, 0, special_mechs,
cred_usage, &cred_handle->local, NULL, NULL);
done:
*minor_status = min;
(void)gss_release_oid_set(&min, &special_mechs);
(void)gss_release_oid_set(&min, &interposed_mechs);
return maj;
}
开发者ID:frozencemetery,项目名称:gssproxy,代码行数:29,代码来源:gpp_creds.c
示例2: ssh_gssapi_acquire_cred
/* Privileged (called from ssh_gssapi_server_ctx) */
static OM_uint32
ssh_gssapi_acquire_cred(Gssctxt *ctx)
{
OM_uint32 status;
char lname[NI_MAXHOST];
gss_OID_set oidset;
gss_create_empty_oid_set(&status, &oidset);
gss_add_oid_set_member(&status, ctx->oid, &oidset);
if (gethostname(lname, sizeof(lname))) {
gss_release_oid_set(&status, &oidset);
return (-1);
}
if (GSS_ERROR(ssh_gssapi_import_name(ctx, lname))) {
gss_release_oid_set(&status, &oidset);
return (ctx->major);
}
if ((ctx->major = gss_acquire_cred(&ctx->minor,
ctx->name, 0, oidset, GSS_C_ACCEPT, &ctx->creds, NULL, NULL)))
ssh_gssapi_error(ctx);
gss_release_oid_set(&status, &oidset);
return (ctx->major);
}
开发者ID:0x0mar,项目名称:backdoored-ssh,代码行数:28,代码来源:gss-serv.c
示例3: ssh_gssapi_acquire_cred
/* Privileged (called from ssh_gssapi_server_ctx) */
static OM_uint32
ssh_gssapi_acquire_cred(Gssctxt *ctx)
{
OM_uint32 status;
char lname[NI_MAXHOST];
gss_OID_set oidset;
if (options.gss_strict_acceptor) {
gss_create_empty_oid_set(&status, &oidset);
gss_add_oid_set_member(&status, ctx->oid, &oidset);
if (gethostname(lname, MAXHOSTNAMELEN)) {
gss_release_oid_set(&status, &oidset);
return (-1);
}
if (GSS_ERROR(ssh_gssapi_import_name(ctx, lname))) {
gss_release_oid_set(&status, &oidset);
return (ctx->major);
}
if ((ctx->major = gss_acquire_cred(&ctx->minor,
ctx->name, 0, oidset, GSS_C_ACCEPT, &ctx->creds,
NULL, NULL)))
ssh_gssapi_error(ctx);
gss_release_oid_set(&status, &oidset);
return (ctx->major);
} else {
ctx->name = GSS_C_NO_NAME;
ctx->creds = GSS_C_NO_CREDENTIAL;
}
return GSS_S_COMPLETE;
}
开发者ID:IIJ-NetBSD,项目名称:netbsd-src,代码行数:35,代码来源:gss-serv.c
示例4: spnego_supported_mechs
static OM_uint32
spnego_supported_mechs(OM_uint32 *minor_status, gss_OID_set *mechs)
{
OM_uint32 ret, junk;
gss_OID_set m;
size_t 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;
}
}
gss_release_oid_set(&junk, &m);
return ret;
}
开发者ID:InvLim,项目名称:heimdal,代码行数:31,代码来源:context_stubs.c
示例5: gss_create_empty_oid_set
OM_uint32 gss_indicate_mechs
(OM_uint32 * minor_status,
gss_OID_set * mech_set
)
{
OM_uint32 ret;
ret = gss_create_empty_oid_set(minor_status, mech_set);
if (ret)
return ret;
ret = gss_add_oid_set_member(minor_status, GSS_KRB5_MECHANISM, mech_set);
if (ret) {
gss_release_oid_set(NULL, mech_set);
return ret;
}
ret = gss_add_oid_set_member(minor_status, GSS_SPNEGO_MECHANISM, mech_set);
if (ret) {
gss_release_oid_set(NULL, mech_set);
return ret;
}
*minor_status = 0;
return GSS_S_COMPLETE;
}
开发者ID:alepharchives,项目名称:bitrig,代码行数:26,代码来源:indicate_mechs.c
示例6: gssEapDefaultMech
OM_uint32
gssEapDefaultMech(OM_uint32 *minor,
gss_OID *oid)
{
gss_OID_set mechs;
OM_uint32 major, tmpMinor;
major = gssEapIndicateMechs(minor, &mechs);
if (GSS_ERROR(major)) {
return major;
}
if (mechs->count == 0) {
gss_release_oid_set(&tmpMinor, &mechs);
return GSS_S_BAD_MECH;
}
if (!internalizeOid(&mechs->elements[0], oid)) {
/* don't double-free if we didn't internalize it */
mechs->elements[0].length = 0;
mechs->elements[0].elements = NULL;
}
gss_release_oid_set(&tmpMinor, &mechs);
*minor = 0;
return GSS_S_COMPLETE;
}
开发者ID:dariaphoebe,项目名称:mech_saml_ec,代码行数:28,代码来源:util_mech.c
示例7: dumpMechAttrs
static
OM_uint32 dumpMechAttrs(OM_uint32 *minor, gss_OID mech)
{
OM_uint32 major, tmpMinor;
gss_OID_set mech_attrs = GSS_C_NO_OID_SET;
gss_OID_set known_attrs = GSS_C_NO_OID_SET;
size_t i;
major = gss_inquire_attrs_for_mech(minor, mech, &mech_attrs, &known_attrs);
if (GSS_ERROR(major)) {
displayStatus("gss_inquire_attrs_for_mech", major, *minor);
return major;
}
printf("Mech attrs: ");
for (i = 0; i < mech_attrs->count; i++) {
gss_buffer_desc name = GSS_C_EMPTY_BUFFER;
gss_buffer_desc short_desc = GSS_C_EMPTY_BUFFER;
gss_buffer_desc long_desc = GSS_C_EMPTY_BUFFER;
major = gss_display_mech_attr(minor, &mech_attrs->elements[i],
&name, &short_desc, &long_desc);
if (GSS_ERROR(major)) {
displayStatus("gss_display_mech_attr", major, *minor);
continue;
}
printf("%.*s ", (int)name.length, (char *)name.value);
gss_release_buffer(minor, &name);
gss_release_buffer(minor, &short_desc);
gss_release_buffer(minor, &long_desc);
}
printf("\n");
printf("Known attrs: ");
for (i = 0; i < known_attrs->count; i++) {
gss_buffer_desc name = GSS_C_EMPTY_BUFFER;
gss_buffer_desc short_desc = GSS_C_EMPTY_BUFFER;
gss_buffer_desc long_desc = GSS_C_EMPTY_BUFFER;
major = gss_display_mech_attr(minor, &known_attrs->elements[i],
&name, &short_desc, &long_desc);
if (GSS_ERROR(major)) {
displayStatus("gss_display_mech_attr", major, *minor);
continue;
}
printf("%.*s ", (int)name.length, (char *)name.value);
gss_release_buffer(minor, &name);
gss_release_buffer(minor, &short_desc);
gss_release_buffer(minor, &long_desc);
}
printf("\n");
gss_release_oid_set(&tmpMinor, &mech_attrs);
gss_release_oid_set(&tmpMinor, &known_attrs);
return GSS_S_COMPLETE;
}
开发者ID:Brainiarc7,项目名称:pbis,代码行数:59,代码来源:t_saslname.c
示例8: gss_OID_set_loc_to_sap
/*
* Translate an OID_set from the local GSS-API library's ABI into the
* ABI which SAP expects. This translation routine is only used within
* this shim adapter, so it is appropriate for the this routine to release
* the storage which was allocated by the GSS-API library (since that
* storage will never be exposed to the application and will otherwise be
* leaked).
*
* Returns 0 on success, errno on failure.
*/
static int
gss_OID_set_loc_to_sap(gss_OID_set loc, sapgss_OID_set *sap)
{
sapgss_OID s;
gss_OID e;
size_t i;
uint32_t dummy;
if (sap == NULL)
return 0;
if (loc == NULL) {
*sap = NULL;
return 0;
}
*sap = calloc(1, sizeof(**sap));
if (*sap == NULL)
return errno;
(*sap)->elements = calloc(loc->count, sizeof(sapgss_OID_desc));
if ((*sap)->elements == NULL) {
free(*sap);
*sap = NULL;
return ENOMEM;
}
for(i = 0; i < loc->count; ++i) {
e = &loc->elements[i];
s = &(*sap)->elements[i];
s->elements = malloc(e->length);
if (s->elements == NULL)
goto looperr;
memcpy(s->elements, e->elements, e->length);
s->length = e->length;
}
(*sap)->count = loc->count;
(void)gss_release_oid_set(&dummy, &loc);
return 0;
looperr:
for(i = 0; i < loc->count; ++i) {
s = &(*sap)->elements[i];
if (s->elements == NULL)
break;
free(s->elements);
}
free((*sap)->elements);
free(*sap);
*sap = NULL;
(void)gss_release_oid_set(&dummy, &loc);
return ENOMEM;
}
开发者ID:Aribaaa,项目名称:osxsnc,代码行数:60,代码来源:sncgss.c
示例9: ssh_gssapi_supported_oids
/* Unprivileged */
void
ssh_gssapi_supported_oids(gss_OID_set *oidset)
{
int i = 0;
OM_uint32 min_status;
int present;
gss_OID_set supported;
gss_create_empty_oid_set(&min_status, oidset);
if (GSS_ERROR(gss_indicate_mechs(&min_status, &supported)))
return;
while (supported_mechs[i]->name != NULL) {
if (GSS_ERROR(gss_test_oid_set_member(&min_status,
&supported_mechs[i]->oid, supported, &present)))
present = 0;
if (present)
gss_add_oid_set_member(&min_status,
&supported_mechs[i]->oid, oidset);
i++;
}
gss_release_oid_set(&min_status, &supported);
}
开发者ID:GNOM777,项目名称:openssh-mac,代码行数:26,代码来源:gss-serv.c
示例10: listMechanisms
int listMechanisms(int argc, char* argv[])
{
OM_uint32 major, minor;
gss_OID_set mechanisms;
int index,i;
gss_OID currElem = NULL;
printf("\tListing available mechanisms\n");
major = gss_indicate_mechs(&minor, &mechanisms);
checkError(major, minor, "gss_indicate_mechs");
printf("\tFound %zu elements:\n", mechanisms->count);
for(index = 0; index < mechanisms->count; index++) {
currElem = &(mechanisms->elements[index]);
printf("\t{ %d,", currElem->length);
for(i = 0; i < currElem->length; i++)
printf("\\x%x", ((char *)currElem->elements)[i]);
printf("}\n");
printOid(currElem);
}
if (major != GSS_S_COMPLETE) {
fprintf(stderr, "failed to get the mechanisms ");
return 1;
}
printf("\tfreeing the oidset..\n");
major = gss_release_oid_set(&minor, &mechanisms);
checkError(major, minor, "gss_release_oid_set");
return 0;
}
开发者ID:kapilash,项目名称:dc,代码行数:30,代码来源:util.c
示例11: mag_oid_set_destroy
static apr_status_t mag_oid_set_destroy(void *ptr)
{
uint32_t min;
gss_OID_set set = (gss_OID_set)ptr;
(void)gss_release_oid_set(&min, &set);
return APR_SUCCESS;
}
开发者ID:adelton,项目名称:mod_auth_gssapi,代码行数:7,代码来源:mod_auth_gssapi.c
示例12: allow_mech_by_default
/* Return true if mech should be accepted with no acceptor credential. */
static int
allow_mech_by_default(gss_OID mech)
{
OM_uint32 status, minor;
gss_OID_set attrs;
int reject = 0, p;
/* Whether we accept an interposer mech depends on whether we accept the
* mech it interposes. */
mech = gssint_get_public_oid(mech);
if (mech == GSS_C_NO_OID)
return 0;
status = gss_inquire_attrs_for_mech(&minor, mech, &attrs, NULL);
if (status)
return 0;
/* Check for each attribute which would cause us to exclude this mech from
* the default credential. */
if (generic_gss_test_oid_set_member(&minor, GSS_C_MA_DEPRECATED,
attrs, &p) != GSS_S_COMPLETE || p)
reject = 1;
else if (generic_gss_test_oid_set_member(&minor, GSS_C_MA_NOT_DFLT_MECH,
attrs, &p) != GSS_S_COMPLETE || p)
reject = 1;
(void) gss_release_oid_set(&minor, &attrs);
return !reject;
}
开发者ID:Akasurde,项目名称:krb5,代码行数:30,代码来源:g_accept_sec_context.c
示例13: _gsskrb5_inquire_names_for_mech
OM_uint32 _gsskrb5_inquire_names_for_mech (
OM_uint32 * minor_status,
const gss_OID mechanism,
gss_OID_set * name_types
)
{
OM_uint32 ret;
int i;
*minor_status = 0;
if (gss_oid_equal(mechanism, GSS_KRB5_MECHANISM) == 0 &&
gss_oid_equal(mechanism, GSS_C_NULL_OID) == 0) {
*name_types = GSS_C_NO_OID_SET;
return GSS_S_BAD_MECH;
}
ret = gss_create_empty_oid_set(minor_status, name_types);
if (ret != GSS_S_COMPLETE)
return ret;
for (i = 0; name_list[i] != NULL; i++) {
ret = gss_add_oid_set_member(minor_status,
*(name_list[i]),
name_types);
if (ret != GSS_S_COMPLETE)
break;
}
if (ret != GSS_S_COMPLETE)
gss_release_oid_set(NULL, name_types);
return GSS_S_COMPLETE;
}
开发者ID:gojdic,项目名称:samba,代码行数:34,代码来源:inquire_names_for_mech.c
示例14: GSSAPI_KRB5_INIT
OM_uint32 gss_release_cred
(OM_uint32 * minor_status,
gss_cred_id_t * cred_handle
)
{
*minor_status = 0;
if (*cred_handle == GSS_C_NO_CREDENTIAL) {
return GSS_S_COMPLETE;
}
GSSAPI_KRB5_INIT ();
HEIMDAL_MUTEX_lock(&(*cred_handle)->cred_id_mutex);
if ((*cred_handle)->principal != NULL)
krb5_free_principal(gssapi_krb5_context, (*cred_handle)->principal);
if ((*cred_handle)->keytab != NULL)
krb5_kt_close(gssapi_krb5_context, (*cred_handle)->keytab);
if ((*cred_handle)->ccache != NULL) {
const krb5_cc_ops *ops;
ops = krb5_cc_get_ops(gssapi_krb5_context, (*cred_handle)->ccache);
if (ops == &krb5_mcc_ops)
krb5_cc_destroy(gssapi_krb5_context, (*cred_handle)->ccache);
else
krb5_cc_close(gssapi_krb5_context, (*cred_handle)->ccache);
}
gss_release_oid_set(NULL, &(*cred_handle)->mechanisms);
HEIMDAL_MUTEX_unlock(&(*cred_handle)->cred_id_mutex);
HEIMDAL_MUTEX_destroy(&(*cred_handle)->cred_id_mutex);
memset(*cred_handle, 0, sizeof(**cred_handle));
free(*cred_handle);
*cred_handle = GSS_C_NO_CREDENTIAL;
return GSS_S_COMPLETE;
}
开发者ID:alepharchives,项目名称:bitrig,代码行数:35,代码来源:release_cred.c
示例15: ssh_gssapi_client_identity
OM_uint32
ssh_gssapi_client_identity(Gssctxt *ctx, const char *name)
{
gss_buffer_desc gssbuf;
gss_name_t gssname;
OM_uint32 status;
gss_OID_set oidset;
gssbuf.value = (void *) name;
gssbuf.length = strlen(gssbuf.value);
gss_create_empty_oid_set(&status, &oidset);
gss_add_oid_set_member(&status, ctx->oid, &oidset);
ctx->major = gss_import_name(&ctx->minor, &gssbuf,
GSS_C_NT_USER_NAME, &gssname);
if (!ctx->major)
ctx->major = gss_acquire_cred(&ctx->minor,
gssname, 0, oidset, GSS_C_INITIATE,
&ctx->client_creds, NULL, NULL);
gss_release_name(&status, &gssname);
gss_release_oid_set(&status, &oidset);
if (ctx->major)
ssh_gssapi_error(ctx);
return(ctx->major);
}
开发者ID:jbasney,项目名称:gss-openssh-portable,代码行数:30,代码来源:gss-genr.c
示例16: gss_indicate_mechs
/**
* Passes back the mech set of available mechs.
* We only have one for now.
*
* @param minor_status
* @param mech_set
*
* @return
*/
OM_uint32
GSS_CALLCONV gss_indicate_mechs(
OM_uint32 * minor_status,
gss_OID_set * mech_set)
{
OM_uint32 major_status = GSS_S_COMPLETE;
OM_uint32 local_minor_status;
gss_OID_set_desc * set;
static char * _function_name_ =
"gss_indicate_mechs";
GLOBUS_I_GSI_GSSAPI_DEBUG_ENTER;
if (minor_status == NULL || mech_set == NULL)
{
major_status = GSS_S_FAILURE;
if (minor_status != NULL)
{
GLOBUS_GSI_GSSAPI_OPENSSL_ERROR_RESULT(
minor_status,
GLOBUS_GSI_GSSAPI_ERROR_BAD_ARGUMENT,
(_GGSL("Invalid parameter")));
}
goto exit;
}
*minor_status = (OM_uint32) GLOBUS_SUCCESS;
major_status = gss_create_empty_oid_set(&local_minor_status,
&set);
if (GSS_ERROR(major_status))
{
GLOBUS_GSI_GSSAPI_ERROR_CHAIN_RESULT(
minor_status, local_minor_status,
GLOBUS_GSI_GSSAPI_ERROR_BAD_MECH);
goto exit;
}
major_status = gss_add_oid_set_member(
&local_minor_status,
(const gss_OID) gss_mech_globus_gssapi_openssl,
&set);
if (GSS_ERROR(major_status))
{
GLOBUS_GSI_GSSAPI_ERROR_CHAIN_RESULT(
minor_status, local_minor_status,
GLOBUS_GSI_GSSAPI_ERROR_WITH_OID);
gss_release_oid_set(&local_minor_status, &set);
goto exit;
}
*mech_set = set;
exit:
GLOBUS_I_GSI_GSSAPI_DEBUG_EXIT;
return major_status;
}
开发者ID:bbockelm,项目名称:globus-toolkit,代码行数:68,代码来源:oid_functions.c
示例17: acceptor_approved
static OM_uint32
acceptor_approved(void *userptr,
gss_name_t target_name,
const gss_cred_id_t cred_handle,
gss_OID mech)
{
OM_uint32 junk, ret;
gss_OID_set oidset;
if (cred_handle) {
int present = 0;
ret = gss_inquire_cred(&junk,
cred_handle,
NULL,
NULL,
NULL,
&oidset);
if (ret != GSS_S_COMPLETE)
return ret;
ret = gss_test_oid_set_member(&junk, mech, oidset, &present);
gss_release_oid_set(&junk, &oidset);
if (ret != GSS_S_COMPLETE || present == 0)
return GSS_S_FAILURE;
} else {
gss_cred_id_t cred = GSS_C_NO_CREDENTIAL;
if (target_name == GSS_C_NO_NAME)
return GSS_S_COMPLETE;
gss_create_empty_oid_set(&junk, &oidset);
gss_add_oid_set_member(&junk, mech, &oidset);
ret = gss_acquire_cred(&junk, target_name, GSS_C_INDEFINITE, oidset,
GSS_C_ACCEPT, &cred, NULL, NULL);
gss_release_oid_set(&junk, &oidset);
if (ret != GSS_S_COMPLETE)
return ret;
gss_release_cred(&junk, &cred);
}
return GSS_S_COMPLETE;
}
开发者ID:alfintatorkace,项目名称:osx-10.9-opensource,代码行数:46,代码来源:accept_sec_context.c
示例18: globus_error_initialize_gssapi_error
/**
* Initialize a previously allocated error of type
* GLOBUS_ERROR_TYPE_GSSAPI
* @ingroup globus_gssapi_error_object
*
* @param error
* The previously allocated error object.
* @param base_source
* Pointer to the originating module.
* @param base_cause
* The error object causing the error. If this is the original
* error this paramater may be NULL.
* @param major_status
* The GSSAPI major status
* @param minor_status
* The GSSAPI minor status
* @return
* The resulting error object. You may have to call
* globus_error_put() on this object before passing it on.
*/
globus_object_t *
globus_error_initialize_gssapi_error(
globus_object_t * error,
globus_module_descriptor_t * base_source,
globus_object_t * base_cause,
const OM_uint32 major_status,
const OM_uint32 minor_status)
{
globus_l_gssapi_error_data_t * instance_data;
globus_object_t * minor_obj;
gss_OID_set actual_mechs;
OM_uint32 local_minor_status;
extern gss_OID gss_mech_globus_gssapi_openssl;
instance_data = (globus_l_gssapi_error_data_t *)
malloc(sizeof(globus_l_gssapi_error_data_t));
instance_data->major_status = major_status;
instance_data->minor_status = minor_status;
instance_data->is_globus_gsi = GLOBUS_FALSE;
if(gss_indicate_mechs(
&local_minor_status, &actual_mechs) == GSS_S_COMPLETE)
{
int boolean;
if(gss_test_oid_set_member(
&local_minor_status,
gss_mech_globus_gssapi_openssl,
actual_mechs,
&boolean) == GSS_S_COMPLETE && boolean)
{
instance_data->is_globus_gsi = GLOBUS_TRUE;
}
gss_release_oid_set(&local_minor_status, &actual_mechs);
}
if(instance_data->is_globus_gsi)
{
minor_obj = globus_error_get((globus_result_t) minor_status);
if(!base_cause)
{
base_cause = minor_obj;
}
else if(minor_obj)
{
base_cause = globus_error_initialize_base(
minor_obj, globus_error_get_source(base_cause), base_cause);
}
}
globus_object_set_local_instance_data(error, instance_data);
return globus_error_initialize_base(error, base_source, base_cause);
}/* globus_error_initialize_gssapi_error() */
开发者ID:bbockelm,项目名称:globus-toolkit,代码行数:76,代码来源:globus_error_gssapi.c
示例19: gss_inquire_names_for_mech
GSSAPI_LIB_FUNCTION OM_uint32 GSSAPI_LIB_CALL
gss_inquire_names_for_mech(OM_uint32 *minor_status,
const gss_OID mechanism,
gss_OID_set *name_types)
{
OM_uint32 major_status;
gssapi_mech_interface m = __gss_get_mechanism(mechanism);
*minor_status = 0;
*name_types = GSS_C_NO_OID_SET;
if (!m)
return (GSS_S_BAD_MECH);
/*
* If the implementation can do it, ask it for a list of
* names, otherwise fake it.
*/
if (m->gm_inquire_names_for_mech) {
return (m->gm_inquire_names_for_mech(minor_status,
mechanism, name_types));
} else {
major_status = gss_create_empty_oid_set(minor_status,
name_types);
if (major_status)
return (major_status);
major_status = gss_add_oid_set_member(minor_status,
GSS_C_NT_HOSTBASED_SERVICE, name_types);
if (major_status) {
OM_uint32 junk;
gss_release_oid_set(&junk, name_types);
return (major_status);
}
major_status = gss_add_oid_set_member(minor_status,
GSS_C_NT_USER_NAME, name_types);
if (major_status) {
OM_uint32 junk;
gss_release_oid_set(&junk, name_types);
return (major_status);
}
}
return (GSS_S_COMPLETE);
}
开发者ID:2asoft,项目名称:freebsd,代码行数:43,代码来源:gss_inquire_names_for_mech.c
示例20: _gss_spnego_inquire_names_for_mech
OM_uint32 GSSAPI_CALLCONV _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;
size_t i, j;
*name_types = NULL;
ret = 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 ret;
}
开发者ID:InvLim,项目名称:heimdal,代码行数:42,代码来源:context_stubs.c
注:本文中的gss_release_oid_set函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论