xref: /freebsd/crypto/heimdal/lib/gssapi/krb5/external.c (revision 6a068746777241722b2b32c5d0bc443a2a64d80b)
1c19800e8SDoug Rabson /*
2*ae771770SStanislav Sedov  * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
3c19800e8SDoug Rabson  * (Royal Institute of Technology, Stockholm, Sweden).
4c19800e8SDoug Rabson  * All rights reserved.
5c19800e8SDoug Rabson  *
6c19800e8SDoug Rabson  * Redistribution and use in source and binary forms, with or without
7c19800e8SDoug Rabson  * modification, are permitted provided that the following conditions
8c19800e8SDoug Rabson  * are met:
9c19800e8SDoug Rabson  *
10c19800e8SDoug Rabson  * 1. Redistributions of source code must retain the above copyright
11c19800e8SDoug Rabson  *    notice, this list of conditions and the following disclaimer.
12c19800e8SDoug Rabson  *
13c19800e8SDoug Rabson  * 2. Redistributions in binary form must reproduce the above copyright
14c19800e8SDoug Rabson  *    notice, this list of conditions and the following disclaimer in the
15c19800e8SDoug Rabson  *    documentation and/or other materials provided with the distribution.
16c19800e8SDoug Rabson  *
17c19800e8SDoug Rabson  * 3. Neither the name of the Institute nor the names of its contributors
18c19800e8SDoug Rabson  *    may be used to endorse or promote products derived from this software
19c19800e8SDoug Rabson  *    without specific prior written permission.
20c19800e8SDoug Rabson  *
21c19800e8SDoug Rabson  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22c19800e8SDoug Rabson  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23c19800e8SDoug Rabson  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24c19800e8SDoug Rabson  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25c19800e8SDoug Rabson  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26c19800e8SDoug Rabson  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27c19800e8SDoug Rabson  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28c19800e8SDoug Rabson  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29c19800e8SDoug Rabson  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30c19800e8SDoug Rabson  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31c19800e8SDoug Rabson  * SUCH DAMAGE.
32c19800e8SDoug Rabson  */
33c19800e8SDoug Rabson 
34*ae771770SStanislav Sedov #include "gsskrb5_locl.h"
35c19800e8SDoug Rabson #include <gssapi_mech.h>
36c19800e8SDoug Rabson 
37c19800e8SDoug Rabson /*
38c19800e8SDoug Rabson  * The implementation must reserve static storage for a
39c19800e8SDoug Rabson  * gss_OID_desc object containing the value
40c19800e8SDoug Rabson  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12"
41c19800e8SDoug Rabson  *              "\x01\x02\x01\x01"},
42c19800e8SDoug Rabson  * corresponding to an object-identifier value of
43c19800e8SDoug Rabson  * {iso(1) member-body(2) United States(840) mit(113554)
44c19800e8SDoug Rabson  *  infosys(1) gssapi(2) generic(1) user_name(1)}.  The constant
45c19800e8SDoug Rabson  * GSS_C_NT_USER_NAME should be initialized to point
46c19800e8SDoug Rabson  * to that gss_OID_desc.
47c19800e8SDoug Rabson  */
48c19800e8SDoug Rabson 
49*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_nt_user_name_oid_desc =
50c19800e8SDoug Rabson     {10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12" "\x01\x02\x01\x01")};
51c19800e8SDoug Rabson 
52c19800e8SDoug Rabson /*
53c19800e8SDoug Rabson  * The implementation must reserve static storage for a
54c19800e8SDoug Rabson  * gss_OID_desc object containing the value
55c19800e8SDoug Rabson  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12"
56c19800e8SDoug Rabson  *              "\x01\x02\x01\x02"},
57c19800e8SDoug Rabson  * corresponding to an object-identifier value of
58c19800e8SDoug Rabson  * {iso(1) member-body(2) United States(840) mit(113554)
59c19800e8SDoug Rabson  *  infosys(1) gssapi(2) generic(1) machine_uid_name(2)}.
60c19800e8SDoug Rabson  * The constant GSS_C_NT_MACHINE_UID_NAME should be
61c19800e8SDoug Rabson  * initialized to point to that gss_OID_desc.
62c19800e8SDoug Rabson  */
63c19800e8SDoug Rabson 
64*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_nt_machine_uid_name_oid_desc =
65c19800e8SDoug Rabson     {10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12" "\x01\x02\x01\x02")};
66c19800e8SDoug Rabson 
67c19800e8SDoug Rabson /*
68c19800e8SDoug Rabson  * The implementation must reserve static storage for a
69c19800e8SDoug Rabson  * gss_OID_desc object containing the value
70c19800e8SDoug Rabson  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12"
71c19800e8SDoug Rabson  *              "\x01\x02\x01\x03"},
72c19800e8SDoug Rabson  * corresponding to an object-identifier value of
73c19800e8SDoug Rabson  * {iso(1) member-body(2) United States(840) mit(113554)
74c19800e8SDoug Rabson  *  infosys(1) gssapi(2) generic(1) string_uid_name(3)}.
75c19800e8SDoug Rabson  * The constant GSS_C_NT_STRING_UID_NAME should be
76c19800e8SDoug Rabson  * initialized to point to that gss_OID_desc.
77c19800e8SDoug Rabson  */
78c19800e8SDoug Rabson 
79*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_nt_string_uid_name_oid_desc =
80c19800e8SDoug Rabson     {10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12" "\x01\x02\x01\x03")};
81c19800e8SDoug Rabson 
82c19800e8SDoug Rabson /*
83c19800e8SDoug Rabson  * The implementation must reserve static storage for a
84c19800e8SDoug Rabson  * gss_OID_desc object containing the value
85c19800e8SDoug Rabson  * {6, (void *)"\x2b\x06\x01\x05\x06\x02"},
86c19800e8SDoug Rabson  * corresponding to an object-identifier value of
87c19800e8SDoug Rabson  * {iso(1) org(3) dod(6) internet(1) security(5)
88c19800e8SDoug Rabson  * nametypes(6) gss-host-based-services(2)).  The constant
89c19800e8SDoug Rabson  * GSS_C_NT_HOSTBASED_SERVICE_X should be initialized to point
90c19800e8SDoug Rabson  * to that gss_OID_desc.  This is a deprecated OID value, and
91c19800e8SDoug Rabson  * implementations wishing to support hostbased-service names
92c19800e8SDoug Rabson  * should instead use the GSS_C_NT_HOSTBASED_SERVICE OID,
93c19800e8SDoug Rabson  * defined below, to identify such names;
94c19800e8SDoug Rabson  * GSS_C_NT_HOSTBASED_SERVICE_X should be accepted a synonym
95c19800e8SDoug Rabson  * for GSS_C_NT_HOSTBASED_SERVICE when presented as an input
96c19800e8SDoug Rabson  * parameter, but should not be emitted by GSS-API
97c19800e8SDoug Rabson  * implementations
98c19800e8SDoug Rabson  */
99c19800e8SDoug Rabson 
100*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_nt_hostbased_service_x_oid_desc =
101c19800e8SDoug Rabson     {6, rk_UNCONST("\x2b\x06\x01\x05\x06\x02")};
102c19800e8SDoug Rabson 
103c19800e8SDoug Rabson /*
104c19800e8SDoug Rabson  * The implementation must reserve static storage for a
105c19800e8SDoug Rabson  * gss_OID_desc object containing the value
106c19800e8SDoug Rabson  * {10, (void *)"\x2a\x86\x48\x86\xf7\x12"
107c19800e8SDoug Rabson  *              "\x01\x02\x01\x04"}, corresponding to an
108c19800e8SDoug Rabson  * object-identifier value of {iso(1) member-body(2)
109c19800e8SDoug Rabson  * Unites States(840) mit(113554) infosys(1) gssapi(2)
110c19800e8SDoug Rabson  * generic(1) service_name(4)}.  The constant
111c19800e8SDoug Rabson  * GSS_C_NT_HOSTBASED_SERVICE should be initialized
112c19800e8SDoug Rabson  * to point to that gss_OID_desc.
113c19800e8SDoug Rabson  */
114*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_nt_hostbased_service_oid_desc =
115c19800e8SDoug Rabson     {10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12" "\x01\x02\x01\x04")};
116c19800e8SDoug Rabson 
117c19800e8SDoug Rabson /*
118c19800e8SDoug Rabson  * The implementation must reserve static storage for a
119c19800e8SDoug Rabson  * gss_OID_desc object containing the value
120c19800e8SDoug Rabson  * {6, (void *)"\x2b\x06\01\x05\x06\x03"},
121c19800e8SDoug Rabson  * corresponding to an object identifier value of
122c19800e8SDoug Rabson  * {1(iso), 3(org), 6(dod), 1(internet), 5(security),
123c19800e8SDoug Rabson  * 6(nametypes), 3(gss-anonymous-name)}.  The constant
124c19800e8SDoug Rabson  * and GSS_C_NT_ANONYMOUS should be initialized to point
125c19800e8SDoug Rabson  * to that gss_OID_desc.
126c19800e8SDoug Rabson  */
127c19800e8SDoug Rabson 
128*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_nt_anonymous_oid_desc =
129c19800e8SDoug Rabson     {6, rk_UNCONST("\x2b\x06\01\x05\x06\x03")};
130c19800e8SDoug Rabson 
131c19800e8SDoug Rabson /*
132c19800e8SDoug Rabson  * The implementation must reserve static storage for a
133c19800e8SDoug Rabson  * gss_OID_desc object containing the value
134c19800e8SDoug Rabson  * {6, (void *)"\x2b\x06\x01\x05\x06\x04"},
135c19800e8SDoug Rabson  * corresponding to an object-identifier value of
136c19800e8SDoug Rabson  * {1(iso), 3(org), 6(dod), 1(internet), 5(security),
137c19800e8SDoug Rabson  * 6(nametypes), 4(gss-api-exported-name)}.  The constant
138c19800e8SDoug Rabson  * GSS_C_NT_EXPORT_NAME should be initialized to point
139c19800e8SDoug Rabson  * to that gss_OID_desc.
140c19800e8SDoug Rabson  */
141c19800e8SDoug Rabson 
142*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE __gss_c_nt_export_name_oid_desc =
143c19800e8SDoug Rabson     {6, rk_UNCONST("\x2b\x06\x01\x05\x06\x04") };
144c19800e8SDoug Rabson 
145c19800e8SDoug Rabson /*
146c19800e8SDoug Rabson  *   This name form shall be represented by the Object Identifier {iso(1)
147c19800e8SDoug Rabson  *   member-body(2) United States(840) mit(113554) infosys(1) gssapi(2)
148c19800e8SDoug Rabson  *   krb5(2) krb5_name(1)}.  The recommended symbolic name for this type
149c19800e8SDoug Rabson  *   is "GSS_KRB5_NT_PRINCIPAL_NAME".
150c19800e8SDoug Rabson  */
151c19800e8SDoug Rabson 
152*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE __gss_krb5_nt_principal_name_oid_desc =
153c19800e8SDoug Rabson     {10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12\x01\x02\x02\x01") };
154c19800e8SDoug Rabson 
155c19800e8SDoug Rabson /*
156c19800e8SDoug Rabson  * draft-ietf-cat-iakerb-09, IAKERB:
157c19800e8SDoug Rabson  *   The mechanism ID for IAKERB proxy GSS-API Kerberos, in accordance
158c19800e8SDoug Rabson  *   with the mechanism proposed by SPNEGO [7] for negotiating protocol
159c19800e8SDoug Rabson  *   variations, is:  {iso(1) org(3) dod(6) internet(1) security(5)
160c19800e8SDoug Rabson  *   mechanisms(5) iakerb(10) iakerbProxyProtocol(1)}.  The proposed
161c19800e8SDoug Rabson  *   mechanism ID for IAKERB minimum messages GSS-API Kerberos, in
162c19800e8SDoug Rabson  *   accordance with the mechanism proposed by SPNEGO for negotiating
163c19800e8SDoug Rabson  *   protocol variations, is: {iso(1) org(3) dod(6) internet(1)
164c19800e8SDoug Rabson  *   security(5) mechanisms(5) iakerb(10)
165c19800e8SDoug Rabson  *   iakerbMinimumMessagesProtocol(2)}.
166c19800e8SDoug Rabson  */
167c19800e8SDoug Rabson 
168*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE  __gss_iakerb_proxy_mechanism_oid_desc =
169c19800e8SDoug Rabson     {7, rk_UNCONST("\x2b\x06\x01\x05\x05\x0a\x01")};
170c19800e8SDoug Rabson 
171*ae771770SStanislav Sedov gss_OID_desc GSSAPI_LIB_VARIABLE __gss_iakerb_min_msg_mechanism_oid_desc =
172c19800e8SDoug Rabson     {7, rk_UNCONST("\x2b\x06\x01\x05\x05\x0a\x02") };
173c19800e8SDoug Rabson 
174c19800e8SDoug Rabson /*
175c19800e8SDoug Rabson  * Context for krb5 calls.
176c19800e8SDoug Rabson  */
177c19800e8SDoug Rabson 
178*ae771770SStanislav Sedov #if 0
179*ae771770SStanislav Sedov static gss_mo_desc krb5_mo[] = {
180*ae771770SStanislav Sedov     {
181*ae771770SStanislav Sedov 	GSS_C_MA_SASL_MECH_NAME,
182*ae771770SStanislav Sedov 	GSS_MO_MA,
183*ae771770SStanislav Sedov 	"SASL mech name",
184*ae771770SStanislav Sedov 	rk_UNCONST("GS2-KRB5"),
185*ae771770SStanislav Sedov 	_gss_mo_get_ctx_as_string,
186*ae771770SStanislav Sedov 	NULL
187*ae771770SStanislav Sedov     },
188*ae771770SStanislav Sedov     {
189*ae771770SStanislav Sedov 	GSS_C_MA_MECH_NAME,
190*ae771770SStanislav Sedov 	GSS_MO_MA,
191*ae771770SStanislav Sedov 	"Mechanism name",
192*ae771770SStanislav Sedov 	rk_UNCONST("KRB5"),
193*ae771770SStanislav Sedov 	_gss_mo_get_ctx_as_string,
194*ae771770SStanislav Sedov 	NULL
195*ae771770SStanislav Sedov     },
196*ae771770SStanislav Sedov     {
197*ae771770SStanislav Sedov 	GSS_C_MA_MECH_DESCRIPTION,
198*ae771770SStanislav Sedov 	GSS_MO_MA,
199*ae771770SStanislav Sedov 	"Mechanism description",
200*ae771770SStanislav Sedov 	rk_UNCONST("Heimdal Kerberos 5 mech"),
201*ae771770SStanislav Sedov 	_gss_mo_get_ctx_as_string,
202*ae771770SStanislav Sedov 	NULL
203*ae771770SStanislav Sedov     },
204*ae771770SStanislav Sedov     {
205*ae771770SStanislav Sedov 	GSS_C_MA_MECH_CONCRETE,
206*ae771770SStanislav Sedov 	GSS_MO_MA
207*ae771770SStanislav Sedov     },
208*ae771770SStanislav Sedov     {
209*ae771770SStanislav Sedov 	GSS_C_MA_ITOK_FRAMED,
210*ae771770SStanislav Sedov 	GSS_MO_MA
211*ae771770SStanislav Sedov     },
212*ae771770SStanislav Sedov     {
213*ae771770SStanislav Sedov 	GSS_C_MA_AUTH_INIT,
214*ae771770SStanislav Sedov 	GSS_MO_MA
215*ae771770SStanislav Sedov     },
216*ae771770SStanislav Sedov     {
217*ae771770SStanislav Sedov 	GSS_C_MA_AUTH_TARG,
218*ae771770SStanislav Sedov 	GSS_MO_MA
219*ae771770SStanislav Sedov     },
220*ae771770SStanislav Sedov     {
221*ae771770SStanislav Sedov 	GSS_C_MA_AUTH_INIT_ANON,
222*ae771770SStanislav Sedov 	GSS_MO_MA
223*ae771770SStanislav Sedov     },
224*ae771770SStanislav Sedov     {
225*ae771770SStanislav Sedov 	GSS_C_MA_DELEG_CRED,
226*ae771770SStanislav Sedov 	GSS_MO_MA
227*ae771770SStanislav Sedov     },
228*ae771770SStanislav Sedov     {
229*ae771770SStanislav Sedov 	GSS_C_MA_INTEG_PROT,
230*ae771770SStanislav Sedov 	GSS_MO_MA
231*ae771770SStanislav Sedov     },
232*ae771770SStanislav Sedov     {
233*ae771770SStanislav Sedov 	GSS_C_MA_CONF_PROT,
234*ae771770SStanislav Sedov 	GSS_MO_MA
235*ae771770SStanislav Sedov     },
236*ae771770SStanislav Sedov     {
237*ae771770SStanislav Sedov 	GSS_C_MA_MIC,
238*ae771770SStanislav Sedov 	GSS_MO_MA
239*ae771770SStanislav Sedov     },
240*ae771770SStanislav Sedov     {
241*ae771770SStanislav Sedov 	GSS_C_MA_WRAP,
242*ae771770SStanislav Sedov 	GSS_MO_MA
243*ae771770SStanislav Sedov     },
244*ae771770SStanislav Sedov     {
245*ae771770SStanislav Sedov 	GSS_C_MA_PROT_READY,
246*ae771770SStanislav Sedov 	GSS_MO_MA
247*ae771770SStanislav Sedov     },
248*ae771770SStanislav Sedov     {
249*ae771770SStanislav Sedov 	GSS_C_MA_REPLAY_DET,
250*ae771770SStanislav Sedov 	GSS_MO_MA
251*ae771770SStanislav Sedov     },
252*ae771770SStanislav Sedov     {
253*ae771770SStanislav Sedov 	GSS_C_MA_OOS_DET,
254*ae771770SStanislav Sedov 	GSS_MO_MA
255*ae771770SStanislav Sedov     },
256*ae771770SStanislav Sedov     {
257*ae771770SStanislav Sedov 	GSS_C_MA_CBINDINGS,
258*ae771770SStanislav Sedov 	GSS_MO_MA
259*ae771770SStanislav Sedov     },
260*ae771770SStanislav Sedov     {
261*ae771770SStanislav Sedov 	GSS_C_MA_PFS,
262*ae771770SStanislav Sedov 	GSS_MO_MA
263*ae771770SStanislav Sedov     },
264*ae771770SStanislav Sedov     {
265*ae771770SStanislav Sedov 	GSS_C_MA_CTX_TRANS,
266*ae771770SStanislav Sedov 	GSS_MO_MA
267*ae771770SStanislav Sedov     }
268*ae771770SStanislav Sedov };
269*ae771770SStanislav Sedov #endif
270*ae771770SStanislav Sedov 
271c19800e8SDoug Rabson /*
272c19800e8SDoug Rabson  *
273c19800e8SDoug Rabson  */
274c19800e8SDoug Rabson 
275c19800e8SDoug Rabson static gssapi_mech_interface_desc krb5_mech = {
276c19800e8SDoug Rabson     GMI_VERSION,
277c19800e8SDoug Rabson     "kerberos 5",
278*ae771770SStanislav Sedov     {9, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12\x01\x02\x02") },
279*ae771770SStanislav Sedov     0,
280c19800e8SDoug Rabson     _gsskrb5_acquire_cred,
281c19800e8SDoug Rabson     _gsskrb5_release_cred,
282c19800e8SDoug Rabson     _gsskrb5_init_sec_context,
283c19800e8SDoug Rabson     _gsskrb5_accept_sec_context,
284c19800e8SDoug Rabson     _gsskrb5_process_context_token,
285c19800e8SDoug Rabson     _gsskrb5_delete_sec_context,
286c19800e8SDoug Rabson     _gsskrb5_context_time,
287c19800e8SDoug Rabson     _gsskrb5_get_mic,
288c19800e8SDoug Rabson     _gsskrb5_verify_mic,
289c19800e8SDoug Rabson     _gsskrb5_wrap,
290c19800e8SDoug Rabson     _gsskrb5_unwrap,
291c19800e8SDoug Rabson     _gsskrb5_display_status,
292c19800e8SDoug Rabson     _gsskrb5_indicate_mechs,
293c19800e8SDoug Rabson     _gsskrb5_compare_name,
294c19800e8SDoug Rabson     _gsskrb5_display_name,
295c19800e8SDoug Rabson     _gsskrb5_import_name,
296c19800e8SDoug Rabson     _gsskrb5_export_name,
297c19800e8SDoug Rabson     _gsskrb5_release_name,
298c19800e8SDoug Rabson     _gsskrb5_inquire_cred,
299c19800e8SDoug Rabson     _gsskrb5_inquire_context,
300c19800e8SDoug Rabson     _gsskrb5_wrap_size_limit,
301c19800e8SDoug Rabson     _gsskrb5_add_cred,
302c19800e8SDoug Rabson     _gsskrb5_inquire_cred_by_mech,
303c19800e8SDoug Rabson     _gsskrb5_export_sec_context,
304c19800e8SDoug Rabson     _gsskrb5_import_sec_context,
305c19800e8SDoug Rabson     _gsskrb5_inquire_names_for_mech,
306c19800e8SDoug Rabson     _gsskrb5_inquire_mechs_for_name,
307c19800e8SDoug Rabson     _gsskrb5_canonicalize_name,
308c19800e8SDoug Rabson     _gsskrb5_duplicate_name,
309c19800e8SDoug Rabson     _gsskrb5_inquire_sec_context_by_oid,
310c19800e8SDoug Rabson     _gsskrb5_inquire_cred_by_oid,
311c19800e8SDoug Rabson     _gsskrb5_set_sec_context_option,
312c19800e8SDoug Rabson     _gsskrb5_set_cred_option,
313*ae771770SStanislav Sedov     _gsskrb5_pseudo_random,
314*ae771770SStanislav Sedov #if 0
315*ae771770SStanislav Sedov     _gk_wrap_iov,
316*ae771770SStanislav Sedov     _gk_unwrap_iov,
317*ae771770SStanislav Sedov     _gk_wrap_iov_length,
318*ae771770SStanislav Sedov #else
319*ae771770SStanislav Sedov     NULL,
320*ae771770SStanislav Sedov     NULL,
321*ae771770SStanislav Sedov     NULL,
322*ae771770SStanislav Sedov #endif
323*ae771770SStanislav Sedov     _gsskrb5_store_cred,
324*ae771770SStanislav Sedov     _gsskrb5_export_cred,
325*ae771770SStanislav Sedov     _gsskrb5_import_cred,
326*ae771770SStanislav Sedov     _gsskrb5_acquire_cred_ext,
327*ae771770SStanislav Sedov     NULL,
328*ae771770SStanislav Sedov     NULL,
329*ae771770SStanislav Sedov     NULL,
330*ae771770SStanislav Sedov     NULL,
331*ae771770SStanislav Sedov     NULL,
332*ae771770SStanislav Sedov     NULL,
333*ae771770SStanislav Sedov #if 0
334*ae771770SStanislav Sedov     krb5_mo,
335*ae771770SStanislav Sedov     sizeof(krb5_mo) / sizeof(krb5_mo[0]),
336*ae771770SStanislav Sedov #else
337*ae771770SStanislav Sedov     NULL,
338*ae771770SStanislav Sedov     0,
339*ae771770SStanislav Sedov #endif
340*ae771770SStanislav Sedov     _gsskrb5_pname_to_uid,
341*ae771770SStanislav Sedov     _gsskrb5_authorize_localname,
342*ae771770SStanislav Sedov     NULL,
343*ae771770SStanislav Sedov     NULL,
344*ae771770SStanislav Sedov     NULL,
345*ae771770SStanislav Sedov     NULL,
346*ae771770SStanislav Sedov     NULL,
347*ae771770SStanislav Sedov     NULL,
348*ae771770SStanislav Sedov     NULL
349c19800e8SDoug Rabson };
350c19800e8SDoug Rabson 
351c19800e8SDoug Rabson gssapi_mech_interface
__gss_krb5_initialize(void)352c19800e8SDoug Rabson __gss_krb5_initialize(void)
353c19800e8SDoug Rabson {
354c19800e8SDoug Rabson     return &krb5_mech;
355c19800e8SDoug Rabson }
356