]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/kgssapi/gssd.x
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / kgssapi / gssd.x
1 /*-
2  * Copyright (c) 2008 Isilon Inc http://www.isilon.com/
3  * Authors: Doug Rabson <dfr@rabson.org>
4  * Developed with Red Inc: Alfred Perlstein <alfred@freebsd.org>
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25  * SUCH DAMAGE.
26  */
27
28 /* $FreeBSD$ */
29
30 #ifdef RPC_HDR
31
32 %#ifdef _KERNEL
33 %#include <kgssapi/gssapi.h>
34 %#else
35 %#include <gssapi/gssapi.h>
36 %#endif
37
38 %extern bool_t xdr_gss_buffer_desc(XDR *xdrs, gss_buffer_desc *buf);
39 %extern bool_t xdr_gss_OID_desc(XDR *xdrs, gss_OID_desc *oid);
40 %extern bool_t xdr_gss_OID(XDR *xdrs, gss_OID *oidp);
41 %extern bool_t xdr_gss_OID_set_desc(XDR *xdrs, gss_OID_set_desc *set);
42 %extern bool_t xdr_gss_OID_set(XDR *xdrs, gss_OID_set *setp);
43 %extern bool_t xdr_gss_channel_bindings_t(XDR *xdrs, gss_channel_bindings_t *chp);
44
45 #endif
46
47 typedef uint64_t gssd_ctx_id_t;
48 typedef uint64_t gssd_cred_id_t;
49 typedef uint64_t gssd_name_t;
50
51 struct init_sec_context_res {
52         uint32_t        major_status;
53         uint32_t        minor_status;
54         gssd_ctx_id_t   ctx;
55         gss_OID         actual_mech_type;
56         gss_buffer_desc output_token;
57         uint32_t        ret_flags;
58         uint32_t        time_rec;
59 };
60
61 struct init_sec_context_args {
62         uint32_t        uid;
63         gssd_cred_id_t  cred;
64         gssd_ctx_id_t   ctx;
65         gssd_name_t     name;
66         gss_OID         mech_type;
67         uint32_t        req_flags;
68         uint32_t        time_req;
69         gss_channel_bindings_t input_chan_bindings;
70         gss_buffer_desc input_token;
71 };
72
73 struct accept_sec_context_res {
74         uint32_t        major_status;
75         uint32_t        minor_status;
76         gssd_ctx_id_t   ctx;
77         gssd_name_t     src_name;
78         gss_OID         mech_type;
79         gss_buffer_desc output_token;
80         uint32_t        ret_flags;
81         uint32_t        time_rec;
82         gssd_cred_id_t  delegated_cred_handle;
83 };
84
85 struct accept_sec_context_args {
86         gssd_ctx_id_t   ctx;
87         gssd_cred_id_t  cred;
88         gss_buffer_desc input_token;
89         gss_channel_bindings_t input_chan_bindings;
90 };
91
92 struct delete_sec_context_res {
93         uint32_t        major_status;
94         uint32_t        minor_status;
95         gss_buffer_desc output_token;
96 };
97
98 struct delete_sec_context_args {
99         gssd_ctx_id_t   ctx;
100 };
101
102 enum sec_context_format {
103         KGSS_HEIMDAL_0_6,
104         KGSS_HEIMDAL_1_1
105 };
106
107 struct export_sec_context_res {
108         uint32_t        major_status;
109         uint32_t        minor_status;
110         enum sec_context_format format;
111         gss_buffer_desc interprocess_token;
112 };
113
114 struct export_sec_context_args {
115        gssd_ctx_id_t    ctx;
116 };
117
118 struct import_name_res {
119         uint32_t        major_status;
120         uint32_t        minor_status;
121         gssd_name_t     output_name;
122 };
123
124 struct import_name_args {
125         gss_buffer_desc input_name_buffer;
126         gss_OID         input_name_type;
127 };
128
129 struct canonicalize_name_res {
130         uint32_t        major_status;
131         uint32_t        minor_status;
132         gssd_name_t     output_name;
133 };
134
135 struct canonicalize_name_args {
136         gssd_name_t     input_name;
137         gss_OID         mech_type;
138 };
139
140 struct export_name_res {
141         uint32_t        major_status;
142         uint32_t        minor_status;
143         gss_buffer_desc exported_name;
144 };
145
146 struct export_name_args {
147         gssd_name_t     input_name;
148 };
149
150 struct release_name_res {
151         uint32_t        major_status;
152         uint32_t        minor_status;
153 };
154
155 struct release_name_args {
156         gssd_name_t     input_name;
157 };
158
159 struct pname_to_uid_res {
160         uint32_t        major_status;
161         uint32_t        minor_status;
162         uint32_t        uid;
163         uint32_t        gid;
164         uint32_t        gidlist<>;
165 };
166
167 struct pname_to_uid_args {
168        gssd_name_t      pname;
169        gss_OID          mech;
170 };
171
172 struct acquire_cred_res {
173         uint32_t        major_status;
174         uint32_t        minor_status;
175         gssd_cred_id_t  output_cred;
176         gss_OID_set     actual_mechs;
177         uint32_t        time_rec;
178 };
179
180 struct acquire_cred_args {
181         uint32_t        uid;
182         gssd_name_t     desired_name;
183         uint32_t        time_req;
184         gss_OID_set     desired_mechs;
185         int             cred_usage;
186 };
187
188 struct set_cred_option_res {
189         uint32_t        major_status;
190         uint32_t        minor_status;
191 };
192
193 struct set_cred_option_args {
194        gssd_cred_id_t   cred;
195        gss_OID          option_name;
196        gss_buffer_desc  option_value;
197 };
198
199 struct release_cred_res {
200         uint32_t        major_status;
201         uint32_t        minor_status;
202 };
203
204 struct release_cred_args {
205         gssd_cred_id_t  cred;
206 };
207
208 struct display_status_res {
209         uint32_t        major_status;
210         uint32_t        minor_status;
211         uint32_t        message_context;
212         gss_buffer_desc status_string;
213 };
214
215 struct display_status_args {
216        uint32_t         status_value;
217        int              status_type;
218        gss_OID          mech_type;
219        uint32_t         message_context;
220 };
221
222 program GSSD {
223         version GSSDVERS {
224                 void GSSD_NULL(void) = 0;
225
226                 init_sec_context_res
227                 GSSD_INIT_SEC_CONTEXT(init_sec_context_args) = 1;
228                         
229                 accept_sec_context_res
230                 GSSD_ACCEPT_SEC_CONTEXT(accept_sec_context_args) = 2;
231                         
232                 delete_sec_context_res
233                 GSSD_DELETE_SEC_CONTEXT(delete_sec_context_args) = 3;
234                         
235                 export_sec_context_res
236                 GSSD_EXPORT_SEC_CONTEXT(export_sec_context_args) = 4;
237                         
238                 import_name_res
239                 GSSD_IMPORT_NAME(import_name_args) = 5;
240
241                 canonicalize_name_res
242                 GSSD_CANONICALIZE_NAME(canonicalize_name_args) = 6;
243
244                 export_name_res
245                 GSSD_EXPORT_NAME(export_name_args) = 7;
246
247                 release_name_res
248                 GSSD_RELEASE_NAME(release_name_args) = 8;
249
250                 pname_to_uid_res
251                 GSSD_PNAME_TO_UID(pname_to_uid_args) = 9;
252
253                 acquire_cred_res
254                 GSSD_ACQUIRE_CRED(acquire_cred_args) = 10;
255
256                 set_cred_option_res
257                 GSSD_SET_CRED_OPTION(set_cred_option_args) = 11;
258
259                 release_cred_res
260                 GSSD_RELEASE_CRED(release_cred_args) = 12;
261
262                 display_status_res
263                 GSSD_DISPLAY_STATUS(display_status_args) = 13;
264         } = 1;
265 } = 0x40677373;