27c52a4b55ae6fea356f7a51afd5cfb2a5882355
[nfs-utils.git] / support / gssapi / g_set_allowable_enctypes.c
1 /* #ident  "@(#)gss_set_allowable_enctype.c 1.9     95/08/02 SMI" */
2
3 /*
4  * Copyright 1996 by Sun Microsystems, Inc.
5  *
6  * Permission to use, copy, modify, distribute, and sell this software
7  * and its documentation for any purpose is hereby granted without fee,
8  * provided that the above copyright notice appears in all copies and
9  * that both that copyright notice and this permission notice appear in
10  * supporting documentation, and that the name of Sun Microsystems not be used
11  * in advertising or publicity pertaining to distribution of the software
12  * without specific, written prior permission. Sun Microsystems makes no
13  * representations about the suitability of this software for any
14  * purpose.  It is provided "as is" without express or implied warranty.
15  *
16  * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18  * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
20  * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
21  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22  * PERFORMANCE OF THIS SOFTWARE.
23  */
24
25 /*
26  *  glue routine for gss_set_allowable_enctypes
27  */
28
29 #include "mglueP.h"
30 #include <stdio.h>
31 #ifdef HAVE_STDLIB_H
32 #include <stdlib.h>
33 #endif
34 #include <string.h>
35
36 OM_uint32 KRB5_CALLCONV
37 gss_set_allowable_enctypes(minor_status,
38                            cred_handle,
39                            mech_type,
40                            num_ktypes,
41                            ktypes)
42
43 OM_uint32 *             minor_status;
44 gss_cred_id_t           cred_handle;
45 gss_OID                 mech_type;
46 OM_uint32               num_ktypes;
47 void *                  ktypes;
48
49 {
50     gss_union_cred_t    union_cred;
51     gss_mechanism       mech;
52     gss_cred_id_t       mech_cred;
53
54     gss_initialize();
55
56     if (cred_handle == GSS_C_NO_CREDENTIAL)
57         return (GSS_S_NO_CRED);
58
59     if ((mech = __gss_get_mechanism(mech_type)) == NULL)
60         return (GSS_S_BAD_MECH);
61
62     if (!mech->gss_set_allowable_enctypes)
63         return (GSS_S_FAILURE);
64
65     /* get the mechanism-specific cred handle */
66
67     union_cred = (gss_union_cred_t) cred_handle;
68     mech_cred = __gss_get_mechanism_cred(union_cred, mech_type);
69
70     if (mech_cred == GSS_C_NO_CREDENTIAL)
71         return (GSS_S_NO_CRED);
72
73     /* Call the mechanism-specific routine */
74 #ifdef USE_MECH_CONTEXT
75     return (mech->gss_set_allowable_enctypes(mech->context, minor_status,
76 #else
77     return (mech->gss_set_allowable_enctypes(minor_status,
78 #endif
79                                              mech_cred, num_ktypes, ktypes));
80 }
81