kadm5-private.h revision 72445
1/*
2 * Copyright (c) 2000 Kungliga Tekniska H�gskolan
3 * (Royal Institute of Technology, Stockholm, Sweden).
4 * All rights reserved.
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 *
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 *
17 * 3. Neither the name of the Institute nor the names of its contributors
18 *    may be used to endorse or promote products derived from this software
19 *    without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34/* $Id: kadm5-private.h,v 1.3 2000/07/24 04:31:17 assar Exp $ */
35
36#ifndef __kadm5_privatex_h__
37#define __kadm5_privatex_h__
38
39kadm5_ret_t _kadm5_privs_to_string (u_int32_t, char*, size_t);
40
41kadm5_ret_t _kadm5_string_to_privs (const char*, u_int32_t*);
42
43HDB *_kadm5_s_get_db (void *);
44
45kadm5_ret_t
46_kadm5_acl_check_permission __P((
47	kadm5_server_context *context,
48	unsigned op,
49	krb5_const_principal princ));
50
51kadm5_ret_t
52_kadm5_acl_init __P((kadm5_server_context *context));
53
54kadm5_ret_t
55_kadm5_c_init_context __P((
56	kadm5_client_context **ctx,
57	kadm5_config_params *params,
58	krb5_context context));
59
60kadm5_ret_t
61_kadm5_client_recv __P((
62	kadm5_client_context *context,
63	krb5_data *reply));
64
65kadm5_ret_t
66_kadm5_client_send __P((
67	kadm5_client_context *context,
68	krb5_storage *sp));
69
70kadm5_ret_t
71_kadm5_connect __P((void*));
72
73kadm5_ret_t
74_kadm5_error_code __P((kadm5_ret_t code));
75
76kadm5_ret_t
77_kadm5_s_init_context __P((
78	kadm5_server_context **ctx,
79	kadm5_config_params *params,
80	krb5_context context));
81
82kadm5_ret_t
83_kadm5_set_keys __P((
84	kadm5_server_context *context,
85	hdb_entry *ent,
86	const char *password));
87
88kadm5_ret_t
89_kadm5_set_keys2 __P((
90	kadm5_server_context *context,
91	hdb_entry *ent,
92	int16_t n_key_data,
93	krb5_key_data *key_data));
94
95kadm5_ret_t
96_kadm5_set_keys3 __P((
97	kadm5_server_context *context,
98	hdb_entry *ent,
99	int n_keys,
100	krb5_keyblock *keyblocks));
101
102kadm5_ret_t
103_kadm5_set_keys_randomly __P((kadm5_server_context *context,
104			      hdb_entry *ent,
105			      krb5_keyblock **new_keys,
106			      int *n_keys));
107
108kadm5_ret_t
109_kadm5_set_modifier __P((
110	kadm5_server_context *context,
111	hdb_entry *ent));
112
113kadm5_ret_t
114_kadm5_bump_pw_expire __P((kadm5_server_context *context,
115			   hdb_entry *ent));
116
117kadm5_ret_t
118_kadm5_setup_entry __P((
119	kadm5_server_context *context,
120	hdb_entry *ent,
121	u_int32_t mask,
122	kadm5_principal_ent_t princ,
123	u_int32_t princ_mask,
124	kadm5_principal_ent_t def,
125	u_int32_t def_mask));
126
127kadm5_ret_t
128kadm5_log_get_version_fd (int fd, u_int32_t *ver);
129
130kadm5_ret_t
131kadm5_log_get_version (kadm5_server_context *context, u_int32_t *ver);
132
133kadm5_ret_t
134kadm5_log_set_version (kadm5_server_context *context, u_int32_t vno);
135
136kadm5_ret_t
137kadm5_log_init (kadm5_server_context *context);
138
139kadm5_ret_t
140kadm5_log_reinit (kadm5_server_context *context);
141
142kadm5_ret_t
143kadm5_log_create (kadm5_server_context *context,
144		  hdb_entry *ent);
145
146kadm5_ret_t
147kadm5_log_delete (kadm5_server_context *context,
148		  krb5_principal princ);
149
150kadm5_ret_t
151kadm5_log_rename (kadm5_server_context *context,
152		  krb5_principal source,
153		  hdb_entry *ent);
154
155kadm5_ret_t
156kadm5_log_modify (kadm5_server_context *context,
157		  hdb_entry *ent,
158		  u_int32_t mask);
159
160kadm5_ret_t
161kadm5_log_nop (kadm5_server_context *context);
162
163kadm5_ret_t
164kadm5_log_end (kadm5_server_context *context);
165
166kadm5_ret_t
167kadm5_log_foreach (kadm5_server_context *context,
168		   void (*func)(kadm5_server_context *server_context,
169				u_int32_t ver,
170				time_t timestamp,
171				enum kadm_ops op,
172				u_int32_t len,
173				krb5_storage *sp));
174
175kadm5_ret_t
176kadm5_log_replay_create (kadm5_server_context *context,
177			 u_int32_t ver,
178			 u_int32_t len,
179			 krb5_storage *sp);
180
181kadm5_ret_t
182kadm5_log_replay_delete (kadm5_server_context *context,
183			 u_int32_t ver,
184			 u_int32_t len,
185			 krb5_storage *sp);
186
187kadm5_ret_t
188kadm5_log_replay_rename (kadm5_server_context *context,
189			 u_int32_t ver,
190			 u_int32_t len,
191			 krb5_storage *sp);
192
193kadm5_ret_t
194kadm5_log_replay_modify (kadm5_server_context *context,
195			 u_int32_t ver,
196			 u_int32_t len,
197			 krb5_storage *sp);
198
199kadm5_ret_t
200kadm5_log_replay_nop (kadm5_server_context *context,
201		      u_int32_t ver,
202		      u_int32_t len,
203		      krb5_storage *sp);
204
205kadm5_ret_t
206kadm5_log_replay (kadm5_server_context *context,
207		  enum kadm_ops op,
208		  u_int32_t ver,
209		  u_int32_t len,
210		  krb5_storage *sp);
211
212krb5_storage *
213kadm5_log_goto_end (int fd);
214
215kadm5_ret_t
216kadm5_log_previous (krb5_storage *sp,
217		    u_int32_t *ver,
218		    time_t *timestamp,
219		    enum kadm_ops *op,
220		    u_int32_t *len);
221
222kadm5_ret_t
223kadm5_log_truncate (kadm5_server_context *server_context);
224
225kadm5_ret_t
226_kadm5_marshal_params __P((krb5_context context,
227			   kadm5_config_params *params,
228			   krb5_data *out));
229
230kadm5_ret_t
231_kadm5_unmarshal_params __P((krb5_context context,
232			     krb5_data *in,
233			     kadm5_config_params *params));
234
235void
236_kadm5_free_keys (kadm5_server_context *context,
237		  int len, Key *keys);
238
239void
240_kadm5_init_keys (Key *keys, int len);
241
242int
243_kadm5_cmp_keys(Key *keys1, int len1, Key *keys2, int len2);
244
245#endif /* __kadm5_privatex_h__ */
246