1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*
23 * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef	_GSSAPIP_DUMMY_H
28#define	_GSSAPIP_DUMMY_H
29
30#pragma ident	"%Z%%M%	%I%	%E% SMI"
31
32#ifdef	__cplusplus
33extern "C" {
34#endif
35
36#include <gssapi/gssapi.h>
37
38#define	SEC_CONTEXT_TOKEN 1
39#define	DUMMY_SIZE_OF_INT 4
40
41typedef void * dummy_token_t;
42
43/* dummy name structure for internal representation. */
44typedef struct {
45	gss_OID type;
46	gss_buffer_t buffer;
47} dummy_name_desc, *dummy_name_t;
48
49/* Structure for context handle */
50typedef struct {
51	OM_uint32 last_stat;
52	int token_number;
53	int established;
54} dummy_gss_ctx_id_rec, *dummy_gss_ctx_id_t;
55
56/* Dummy oid structure */
57static const gss_OID_desc dummy_oids[] = {
58	{10, "\053\006\001\004\001\052\002\032\001\002"},
59};
60const gss_OID_desc * const gss_mech_dummy = dummy_oids+0;
61static const gss_OID_set_desc dummy_oidsets[] = {
62	{1, (gss_OID) dummy_oids+0},
63};
64const gss_OID_set_desc * const gss_mech_set_dummy = dummy_oidsets+0;
65
66#define	TWRITE_STR(ptr, str, len) \
67	(void) memcpy((ptr), (char *) (str), (len)); \
68	(ptr) += (len);
69#ifndef	_KERNEL
70
71#ifdef DEBUG_ON
72
73#define	dprintf(a) printf(a)
74#define	dprintf1(a, b) printf(a, b)
75
76#else
77
78#define	dprintf(a)
79#define	dprintf1(a, b)
80#define	DUMMY_STATIC
81
82#endif	/* DEBUG_ON */
83
84#else	/* _KERNEL */
85
86#if defined(DEBUG) && !defined(DUMMY_MECH_DEBUG)
87#define	DUMMY_MECH_DEBUG
88#endif
89
90#ifdef DUMMY_MECH_DEBUG
91#define	DUMMY_MECH_LOG(A, B, C) \
92	((void)((dummy_mech_log & (A)) && (printf((B), (C)), TRUE)))
93#define	DUMMY_MECH_LOG0(A, B)   \
94	((void)((dummy_mech_log & (A)) && (printf(B), TRUE)))
95#else
96#define	DUMMY_MECH_LOG(A, B, C)
97#define	DUMMY_MECH_LOG0(A, B)
98
99#endif
100
101#define	dprintf(a)	DUMMY_MECH_LOG0(8, a)
102#define	dprintf1(a, b)	DUMMY_MECH_LOG(8, a, b)
103#define	DUMMY_STATIC	static
104
105#endif	/* _KERNEL */
106
107/*
108 * declarations of internal name mechanism functions
109 */
110
111OM_uint32 dummy_gss_acquire_cred
112	(
113		void *,			/* dummy context */
114		OM_uint32 *,		/* minor_status */
115		gss_name_t,		/* desired_name */
116		OM_uint32,		/* time_req */
117		gss_OID_set,		/* desired_mechs */
118		gss_cred_usage_t,	/* cred_usage */
119		gss_cred_id_t *,	/* output_cred_handle */
120		gss_OID_set *,		/* actual_mechs */
121		OM_uint32 *		/* time_rec */
122	/* */);
123
124OM_uint32 dummy_gss_release_cred
125	(
126		void *,			/* dummy context */
127		OM_uint32 *,		/* minor_status */
128		gss_cred_id_t *		/* cred_handle */
129	/* */);
130
131OM_uint32 dummy_gss_init_sec_context
132	(
133		void *,			/* dummy context */
134		OM_uint32 *,		/* minor_status */
135		gss_cred_id_t,		/* claimant_cred_handle */
136		gss_ctx_id_t *,		/* context_handle */
137		gss_name_t,		/* target_name */
138		gss_OID,		/* mech_type */
139		OM_uint32,		/* req_flags */
140		OM_uint32,		/* time_req */
141		gss_channel_bindings_t, /* input_chan_bindings */
142		gss_buffer_t,		/* input_token */
143		gss_OID *,		/* actual_mech_type */
144		gss_buffer_t,		/* output_token */
145		OM_uint32 *,		/* ret_flags */
146		OM_uint32 *		/* time_rec */
147	/* */);
148
149OM_uint32 dummy_gss_accept_sec_context
150	(
151		void *,			/* dummy context */
152		OM_uint32 *,		/* minor_status */
153		gss_ctx_id_t *,		/* context_handle */
154		gss_cred_id_t,		/* verifier_cred_handle */
155		gss_buffer_t,		/* input_token_buffer */
156		gss_channel_bindings_t, /* input_chan_bindings */
157		gss_name_t *,		/* src_name */
158		gss_OID *,		/* mech_type */
159		gss_buffer_t,		/* output_token */
160		OM_uint32 *,		/* ret_flags */
161		OM_uint32 *,		/* time_rec */
162		gss_cred_id_t *		/* delegated_cred_handle */
163	/* */);
164
165OM_uint32 dummy_gss_process_context_token
166	(
167		void *,			/* dummy context */
168		OM_uint32 *,		/* minor_status */
169		gss_ctx_id_t,		/* context_handle */
170		gss_buffer_t		/* token_buffer */
171	/* */);
172
173DUMMY_STATIC OM_uint32 dummy_gss_delete_sec_context
174	(
175		void *,			/* dummy context */
176		OM_uint32 *,		/* minor_status */
177		gss_ctx_id_t *,		/* context_handle */
178		gss_buffer_t		/* output_token */
179#ifdef	_KERNEL
180	/* */, OM_uint32
181#endif
182	/* */);
183
184OM_uint32 dummy_gss_context_time
185	(
186		void *,			/* dummy context */
187		OM_uint32 *,		/* minor_status */
188		gss_ctx_id_t,		/* context_handle */
189		OM_uint32 *		/* time_rec */
190	/* */);
191
192DUMMY_STATIC OM_uint32 dummy_gss_sign
193	(
194		void *,			/* dummy context */
195		OM_uint32 *,		/* minor_status */
196		gss_ctx_id_t,		/* context_handle */
197		int,			/* qop_req */
198		gss_buffer_t,		/* message_buffer */
199		gss_buffer_t		/* message_token */
200#ifdef	_KERNEL
201	/* */, OM_uint32
202#endif
203	/* */);
204
205DUMMY_STATIC OM_uint32 dummy_gss_verify
206	(
207		void *,			/* dummy context */
208		OM_uint32 *,		/* minor_status */
209		gss_ctx_id_t,		/* context_handle */
210		gss_buffer_t,		/* message_buffer */
211		gss_buffer_t,		/* token_buffer */
212		int *			/* qop_state */
213#ifdef	_KERNEL
214	/* */, OM_uint32
215
216#endif
217	/* */);
218/* EXPORT DELETE START */
219DUMMY_STATIC OM_uint32 dummy_gss_seal
220	(
221		void *,			/* dummy context */
222		OM_uint32 *,		/* minor_status */
223		gss_ctx_id_t,		/* context_handle */
224		int,			/* conf_req_flag */
225		int,			/* qop_req */
226		gss_buffer_t,		/* input_message_buffer */
227		int *,			/* conf_state */
228		gss_buffer_t		/* output_message_buffer */
229#ifdef	_KERNEL
230	/* */, OM_uint32
231#endif
232	/* */);
233
234DUMMY_STATIC OM_uint32 dummy_gss_unseal
235	(
236		void *,			/* dummy context */
237		OM_uint32 *,		/* minor_status */
238		gss_ctx_id_t,		/* context_handle */
239		gss_buffer_t,		/* input_message_buffer */
240		gss_buffer_t,		/* output_message_buffer */
241		int *,			/* conf_state */
242		int *			/* qop_state */
243#ifdef	_KERNEL
244	/* */, OM_uint32
245#endif
246	/* */);
247/* EXPORT DELETE END */
248
249OM_uint32 dummy_gss_display_status
250	(
251		void *,			/* dummy context */
252		OM_uint32 *,		/* minor_status */
253		OM_uint32,		/* status_value */
254		int,			/* status_type */
255		gss_OID,		/* mech_type */
256		OM_uint32 *,		/* message_context */
257		gss_buffer_t		/* status_string */
258	/* */);
259
260OM_uint32 dummy_gss_indicate_mechs
261	(
262		void *,			/* dummy context */
263		OM_uint32 *,		/* minor_status */
264		gss_OID_set *		/* mech_set */
265	/* */);
266
267OM_uint32 dummy_gss_compare_name
268	(
269		void *,			/* dummy context */
270		OM_uint32 *,		/* minor_status */
271		gss_name_t,		/* name1 */
272		gss_name_t,		/* name2 */
273		int *			/* name_equal */
274	/* */);
275
276OM_uint32 dummy_gss_display_name
277	(
278		void *,			/* dummy context */
279		OM_uint32 *,		/* minor_status */
280		gss_name_t,		/* input_name */
281		gss_buffer_t,		/* output_name_buffer */
282		gss_OID *		/* output_name_type */
283	/* */);
284
285OM_uint32 dummy_gss_import_name
286	(
287		void *,			/* dummy context */
288		OM_uint32 *,		/* minor_status */
289		gss_buffer_t,		/* input_name_buffer */
290		gss_OID,		/* input_name_type */
291		gss_name_t *		/* output_name */
292	/* */);
293
294OM_uint32 dummy_gss_release_name
295	(
296		void *,			/* dummy context */
297		OM_uint32 *,		/* minor_status */
298		gss_name_t *		/* input_name */
299	/* */);
300
301OM_uint32 dummy_gss_inquire_cred
302	(
303		void *,			/* dummy context */
304		OM_uint32 *,		/* minor_status */
305		gss_cred_id_t,		/* cred_handle */
306		gss_name_t *,		/* name */
307		OM_uint32 *,		/* lifetime */
308		gss_cred_usage_t *,	/* cred_usage */
309		gss_OID_set *		/* mechanisms */
310	/* */);
311
312OM_uint32 dummy_gss_inquire_context
313	(
314		void *,			/* dummy context */
315		OM_uint32 *,		/* minor_status */
316		gss_ctx_id_t,		/* context_handle */
317		gss_name_t *,		/* initiator_name */
318		gss_name_t *,		/* acceptor_name */
319		OM_uint32 *,		/* lifetime_rec */
320		gss_OID *,		/* mech_type */
321		OM_uint32 *,		/* ret_flags */
322		int *,			/* locally_initiated */
323		int *			/* open */
324	/* */);
325
326/* New V2 entry points */
327OM_uint32 dummy_gss_get_mic
328	(
329		void *,			/* dummy context */
330		OM_uint32 *,		/* minor_status */
331		gss_ctx_id_t,		/* context_handle */
332		gss_qop_t,		/* qop_req */
333		gss_buffer_t,		/* message_buffer */
334		gss_buffer_t		/* message_token */
335	/* */);
336
337OM_uint32 dummy_gss_verify_mic
338	(
339		void *,			/* dummy context */
340		OM_uint32 *,		/* minor_status */
341		gss_ctx_id_t,		/* context_handle */
342		gss_buffer_t,		/* message_buffer */
343		gss_buffer_t,		/* message_token */
344		gss_qop_t *		/* qop_state */
345	/* */);
346
347OM_uint32 dummy_gss_wrap
348	(
349		void *,			/* dummy context */
350		OM_uint32 *,		/* minor_status */
351		gss_ctx_id_t,		/* context_handle */
352		int,			/* conf_req_flag */
353		gss_qop_t,		/* qop_req */
354		gss_buffer_t,		/* input_message_buffer */
355		int *,			/* conf_state */
356		gss_buffer_t		/* output_message_buffer */
357	/* */);
358
359OM_uint32 dummy_gss_unwrap
360	(
361		void *,			/* dummy context */
362		OM_uint32 *,		/* minor_status */
363		gss_ctx_id_t,		/* context_handle */
364		gss_buffer_t,		/* input_message_buffer */
365		gss_buffer_t,		/* output_message_buffer */
366		int *,			/* conf_state */
367		gss_qop_t *		/* qop_state */
368	/* */);
369
370OM_uint32 dummy_gss_wrap_size_limit
371	(
372		void *,			/* dummy context */
373		OM_uint32 *,		/* minor_status */
374		gss_ctx_id_t,		/* context_handle */
375		int,			/* conf_req_flag */
376		gss_qop_t,		/* qop_req */
377		OM_uint32,		/* req_output_size */
378		OM_uint32 *		/* max_input_size */
379	/* */);
380
381OM_uint32 dummy_gss_add_cred
382	(
383		void *,			/* dummy context */
384		OM_uint32 *,		/* minor_status */
385		gss_cred_id_t,		/* input_cred_handle */
386		gss_name_t,		/* desired_name */
387		gss_OID,		/* desired_mech */
388		gss_cred_usage_t,	/* cred_usage */
389		OM_uint32,		/* initiator_time_req */
390		OM_uint32,		/* acceptor_time_req */
391		gss_cred_id_t *,	/* output_cred_handle */
392		gss_OID_set *,		/* actual_mechs */
393		OM_uint32 *,		/* initiator_time_rec */
394		OM_uint32 *		/* acceptor_time_rec */
395	/* */);
396
397OM_uint32 dummy_gss_inquire_cred_by_mech
398	(
399		void *,			/* dummy context */
400		OM_uint32  *,		/* minor_status */
401		gss_cred_id_t,		/* cred_handle */
402		gss_OID,		/* mech_type */
403		gss_name_t *,		/* name */
404		OM_uint32 *,		/* initiator_lifetime */
405		OM_uint32 *,		/* acceptor_lifetime */
406		gss_cred_usage_t *	/* cred_usage */
407	/* */);
408
409OM_uint32 dummy_gss_export_sec_context
410	(
411		void *,			/* dummy context */
412		OM_uint32 *,		/* minor_status */
413		gss_ctx_id_t *,		/* context_handle */
414		gss_buffer_t		/* interprocess_token */
415	/* */);
416
417OM_uint32 dummy_gss_import_sec_context
418	(
419		void *,			/* dummy context */
420		OM_uint32 *,		/* minor_status */
421		gss_buffer_t,		/* interprocess_token */
422		gss_ctx_id_t *		/* context_handle */
423	/* */);
424
425#if 0
426OM_uint32 dummy_gss_release_oid
427	(
428		OM_uint32 *,		/* minor_status */
429		gss_OID *		/* oid */
430	/* */);
431#endif
432
433OM_uint32 dummy_gss_internal_release_oid
434	(
435		void *,			/* dummy context  */
436		OM_uint32 *,		/* minor_status */
437		gss_OID *		/* oid */
438	/* */);
439
440OM_uint32 dummy_gss_inquire_names_for_mech
441	(
442		void *,		/* dummy context */
443		OM_uint32 *,		/* minor_status */
444		gss_OID,		/* mechanism */
445		gss_OID_set *		/* name_types */
446	/* */);
447
448OM_uint32 dummy_pname_to_uid
449	(
450		void *,			/* dummy context */
451		OM_uint32 *,		/* minor status */
452		const gss_name_t,	/* pname */
453		uid_t *			/* uidOut */
454	/* */);
455
456
457#ifdef	__cplusplus
458}
459#endif
460
461#endif /* _GSSAPIP_DUMMY_H */
462