Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/kadm5/admin.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ | |
2 /* lib/kadm5/admin.h */ | |
3 /* | |
4 * Copyright 2001, 2008 by the Massachusetts Institute of Technology. | |
5 * All Rights Reserved. | |
6 * | |
7 * Export of this software from the United States of America may | |
8 * require a specific license from the United States Government. | |
9 * It is the responsibility of any person or organization contemplating | |
10 * export to obtain such a license before exporting. | |
11 * | |
12 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and | |
13 * distribute this software and its documentation for any purpose and | |
14 * without fee is hereby granted, provided that the above copyright | |
15 * notice appear in all copies and that both that copyright notice and | |
16 * this permission notice appear in supporting documentation, and that | |
17 * the name of M.I.T. not be used in advertising or publicity pertaining | |
18 * to distribution of the software without specific, written prior | |
19 * permission. Furthermore if you modify this software you must label | |
20 * your software as modified software and not distribute it in such a | |
21 * fashion that it might be confused with the original M.I.T. software. | |
22 * M.I.T. makes no representations about the suitability of | |
23 * this software for any purpose. It is provided "as is" without express | |
24 * or implied warranty. | |
25 */ | |
26 /* | |
27 * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved | |
28 * | |
29 * $Header$ | |
30 */ | |
31 | |
32 /* | |
33 * This API is not considered as stable as the main krb5 API. | |
34 * | |
35 * - We may make arbitrary incompatible changes between feature | |
36 * releases (e.g. from 1.7 to 1.8). | |
37 * - We will make some effort to avoid making incompatible changes for | |
38 * bugfix releases, but will make them if necessary. | |
39 */ | |
40 | |
41 #ifndef __KADM5_ADMIN_H__ | |
42 #define __KADM5_ADMIN_H__ | |
43 | |
44 #include <sys/types.h> | |
45 #include <gssrpc/rpc.h> | |
46 #include <krb5.h> | |
47 #include <kdb.h> | |
48 #include <com_err.h> | |
49 #include <kadm5/kadm_err.h> | |
50 #include <kadm5/chpass_util_strings.h> | |
51 | |
52 #ifndef KADM5INT_BEGIN_DECLS | |
53 #if defined(__cplusplus) | |
54 #define KADM5INT_BEGIN_DECLS extern "C" { | |
55 #define KADM5INT_END_DECLS } | |
56 #else | |
57 #define KADM5INT_BEGIN_DECLS | |
58 #define KADM5INT_END_DECLS | |
59 #endif | |
60 #endif | |
61 | |
62 KADM5INT_BEGIN_DECLS | |
63 | |
64 #define KADM5_ADMIN_SERVICE "kadmin/admin" | |
65 #define KADM5_CHANGEPW_SERVICE "kadmin/changepw" | |
66 #define KADM5_HIST_PRINCIPAL "kadmin/history" | |
67 #define KADM5_KIPROP_HOST_SERVICE "kiprop" | |
68 | |
69 typedef krb5_principal kadm5_princ_t; | |
70 typedef char *kadm5_policy_t; | |
71 typedef long kadm5_ret_t; | |
72 | |
73 #define KADM5_PW_FIRST_PROMPT \ | |
74 (error_message(CHPASS_UTIL_NEW_PASSWORD_PROMPT)) | |
75 #define KADM5_PW_SECOND_PROMPT \ | |
76 (error_message(CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT)) | |
77 | |
78 /* | |
79 * Successful return code | |
80 */ | |
81 #define KADM5_OK 0 | |
82 | |
83 /* | |
84 * Field masks | |
85 */ | |
86 | |
87 /* kadm5_principal_ent_t */ | |
88 #define KADM5_PRINCIPAL 0x000001 | |
89 #define KADM5_PRINC_EXPIRE_TIME 0x000002 | |
90 #define KADM5_PW_EXPIRATION 0x000004 | |
91 #define KADM5_LAST_PWD_CHANGE 0x000008 | |
92 #define KADM5_ATTRIBUTES 0x000010 | |
93 #define KADM5_MAX_LIFE 0x000020 | |
94 #define KADM5_MOD_TIME 0x000040 | |
95 #define KADM5_MOD_NAME 0x000080 | |
96 #define KADM5_KVNO 0x000100 | |
97 #define KADM5_MKVNO 0x000200 | |
98 #define KADM5_AUX_ATTRIBUTES 0x000400 | |
99 #define KADM5_POLICY 0x000800 | |
100 #define KADM5_POLICY_CLR 0x001000 | |
101 /* version 2 masks */ | |
102 #define KADM5_MAX_RLIFE 0x002000 | |
103 #define KADM5_LAST_SUCCESS 0x004000 | |
104 #define KADM5_LAST_FAILED 0x008000 | |
105 #define KADM5_FAIL_AUTH_COUNT 0x010000 | |
106 #define KADM5_KEY_DATA 0x020000 | |
107 #define KADM5_TL_DATA 0x040000 | |
108 #ifdef notyet /* Novell */ | |
109 #define KADM5_CPW_FUNCTION 0x080000 | |
110 #define KADM5_RANDKEY_USED 0x100000 | |
111 #endif | |
112 #define KADM5_LOAD 0x200000 | |
113 #define KADM5_KEY_HIST 0x400000 | |
114 | |
115 /* all but KEY_DATA, TL_DATA, LOAD */ | |
116 #define KADM5_PRINCIPAL_NORMAL_MASK 0x41ffff | |
117 | |
118 | |
119 /* kadm5_policy_ent_t */ | |
120 #define KADM5_PW_MAX_LIFE 0x00004000 | |
121 #define KADM5_PW_MIN_LIFE 0x00008000 | |
122 #define KADM5_PW_MIN_LENGTH 0x00010000 | |
123 #define KADM5_PW_MIN_CLASSES 0x00020000 | |
124 #define KADM5_PW_HISTORY_NUM 0x00040000 | |
125 #define KADM5_REF_COUNT 0x00080000 | |
126 #define KADM5_PW_MAX_FAILURE 0x00100000 | |
127 #define KADM5_PW_FAILURE_COUNT_INTERVAL 0x00200000 | |
128 #define KADM5_PW_LOCKOUT_DURATION 0x00400000 | |
129 #define KADM5_POLICY_ATTRIBUTES 0x00800000 | |
130 #define KADM5_POLICY_MAX_LIFE 0x01000000 | |
131 #define KADM5_POLICY_MAX_RLIFE 0x02000000 | |
132 #define KADM5_POLICY_ALLOWED_KEYSALTS 0x04000000 | |
133 #define KADM5_POLICY_TL_DATA 0x08000000 | |
134 | |
135 /* kadm5_config_params */ | |
136 #define KADM5_CONFIG_REALM 0x00000001 | |
137 #define KADM5_CONFIG_DBNAME 0x00000002 | |
138 #define KADM5_CONFIG_MKEY_NAME 0x00000004 | |
139 #define KADM5_CONFIG_MAX_LIFE 0x00000008 | |
140 #define KADM5_CONFIG_MAX_RLIFE 0x00000010 | |
141 #define KADM5_CONFIG_EXPIRATION 0x00000020 | |
142 #define KADM5_CONFIG_FLAGS 0x00000040 | |
143 /*#define KADM5_CONFIG_ADMIN_KEYTAB 0x00000080*/ | |
144 #define KADM5_CONFIG_STASH_FILE 0x00000100 | |
145 #define KADM5_CONFIG_ENCTYPE 0x00000200 | |
146 #define KADM5_CONFIG_ADBNAME 0x00000400 | |
147 #define KADM5_CONFIG_ADB_LOCKFILE 0x00000800 | |
148 #define KADM5_CONFIG_KADMIND_LISTEN 0x00001000 | |
149 #define KADM5_CONFIG_ACL_FILE 0x00002000 | |
150 #define KADM5_CONFIG_KADMIND_PORT 0x00004000 | |
151 #define KADM5_CONFIG_ENCTYPES 0x00008000 | |
152 #define KADM5_CONFIG_ADMIN_SERVER 0x00010000 | |
153 #define KADM5_CONFIG_DICT_FILE 0x00020000 | |
154 #define KADM5_CONFIG_MKEY_FROM_KBD 0x00040000 | |
155 #define KADM5_CONFIG_KPASSWD_PORT 0x00080000 | |
156 #define KADM5_CONFIG_OLD_AUTH_GSSAPI 0x00100000 | |
157 #define KADM5_CONFIG_NO_AUTH 0x00200000 | |
158 #define KADM5_CONFIG_AUTH_NOFALLBACK 0x00400000 | |
159 #define KADM5_CONFIG_KPASSWD_LISTEN 0x00800000 | |
160 #define KADM5_CONFIG_IPROP_ENABLED 0x01000000 | |
161 #define KADM5_CONFIG_ULOG_SIZE 0x02000000 | |
162 #define KADM5_CONFIG_POLL_TIME 0x04000000 | |
163 #define KADM5_CONFIG_IPROP_LOGFILE 0x08000000 | |
164 #define KADM5_CONFIG_IPROP_PORT 0x10000000 | |
165 #define KADM5_CONFIG_KVNO 0x20000000 | |
166 #define KADM5_CONFIG_IPROP_RESYNC_TIMEOUT 0x40000000 | |
167 #define KADM5_CONFIG_IPROP_LISTEN 0x80000000 | |
168 /* | |
169 * permission bits | |
170 */ | |
171 #define KADM5_PRIV_GET 0x01 | |
172 #define KADM5_PRIV_ADD 0x02 | |
173 #define KADM5_PRIV_MODIFY 0x04 | |
174 #define KADM5_PRIV_DELETE 0x08 | |
175 | |
176 /* | |
177 * API versioning constants | |
178 */ | |
179 #define KADM5_MASK_BITS 0xffffff00 | |
180 | |
181 #define KADM5_STRUCT_VERSION_MASK 0x12345600 | |
182 #define KADM5_STRUCT_VERSION_1 (KADM5_STRUCT_VERSION_MASK|0x01) | |
183 #define KADM5_STRUCT_VERSION KADM5_STRUCT_VERSION_1 | |
184 | |
185 #define KADM5_API_VERSION_MASK 0x12345700 | |
186 #define KADM5_API_VERSION_2 (KADM5_API_VERSION_MASK|0x02) | |
187 #define KADM5_API_VERSION_3 (KADM5_API_VERSION_MASK|0x03) | |
188 #define KADM5_API_VERSION_4 (KADM5_API_VERSION_MASK|0x04) | |
189 | |
190 typedef struct _kadm5_principal_ent_t { | |
191 krb5_principal principal; | |
192 krb5_timestamp princ_expire_time; | |
193 krb5_timestamp last_pwd_change; | |
194 krb5_timestamp pw_expiration; | |
195 krb5_deltat max_life; | |
196 krb5_principal mod_name; | |
197 krb5_timestamp mod_date; | |
198 krb5_flags attributes; | |
199 krb5_kvno kvno; | |
200 krb5_kvno mkvno; | |
201 char *policy; | |
202 long aux_attributes; | |
203 | |
204 /* version 2 fields */ | |
205 krb5_deltat max_renewable_life; | |
206 krb5_timestamp last_success; | |
207 krb5_timestamp last_failed; | |
208 krb5_kvno fail_auth_count; | |
209 krb5_int16 n_key_data; | |
210 krb5_int16 n_tl_data; | |
211 krb5_tl_data *tl_data; | |
212 krb5_key_data *key_data; | |
213 } kadm5_principal_ent_rec, *kadm5_principal_ent_t; | |
214 | |
215 typedef struct _kadm5_policy_ent_t { | |
216 char *policy; | |
217 long pw_min_life; | |
218 long pw_max_life; | |
219 long pw_min_length; | |
220 long pw_min_classes; | |
221 long pw_history_num; | |
222 long policy_refcnt; /* no longer used */ | |
223 | |
224 /* version 3 fields */ | |
225 krb5_kvno pw_max_fail; | |
226 krb5_deltat pw_failcnt_interval; | |
227 krb5_deltat pw_lockout_duration; | |
228 | |
229 /* version 4 fields */ | |
230 krb5_flags attributes; | |
231 krb5_deltat max_life; | |
232 krb5_deltat max_renewable_life; | |
233 char *allowed_keysalts; | |
234 krb5_int16 n_tl_data; | |
235 krb5_tl_data *tl_data; | |
236 } kadm5_policy_ent_rec, *kadm5_policy_ent_t; | |
237 | |
238 /* | |
239 * Data structure returned by kadm5_get_config_params() | |
240 */ | |
241 typedef struct _kadm5_config_params { | |
242 long mask; | |
243 char * realm; | |
244 int kadmind_port; | |
245 int kpasswd_port; | |
246 | |
247 char * admin_server; | |
248 #ifdef notyet /* Novell */ /* ABI change? */ | |
249 char * kpasswd_server; | |
250 #endif | |
251 | |
252 /* Deprecated except for db2 backwards compatibility. Don't add | |
253 new uses except as fallbacks for parameters that should be | |
254 specified in the database module section of the config | |
255 file. */ | |
256 char * dbname; | |
257 | |
258 char * acl_file; | |
259 char * dict_file; | |
260 | |
261 int mkey_from_kbd; | |
262 char * stash_file; | |
263 char * mkey_name; | |
264 krb5_enctype enctype; | |
265 krb5_deltat max_life; | |
266 krb5_deltat max_rlife; | |
267 krb5_timestamp expiration; | |
268 krb5_flags flags; | |
269 krb5_key_salt_tuple *keysalts; | |
270 krb5_int32 num_keysalts; | |
271 krb5_kvno kvno; | |
272 bool_t iprop_enabled; | |
273 uint32_t iprop_ulogsize; | |
274 krb5_deltat iprop_poll_time; | |
275 char * iprop_logfile; | |
276 /* char * iprop_server;*/ | |
277 int iprop_port; | |
278 int iprop_resync_timeout; | |
279 char * kadmind_listen; | |
280 char * kpasswd_listen; | |
281 char * iprop_listen; | |
282 } kadm5_config_params; | |
283 | |
284 typedef struct _kadm5_key_data { | |
285 krb5_kvno kvno; | |
286 krb5_keyblock key; | |
287 krb5_keysalt salt; | |
288 } kadm5_key_data; | |
289 | |
290 /* | |
291 * functions | |
292 */ | |
293 | |
294 krb5_error_code kadm5_get_config_params(krb5_context context, | |
295 int use_kdc_config, | |
296 kadm5_config_params *params_in, | |
297 kadm5_config_params *params_out); | |
298 | |
299 krb5_error_code kadm5_free_config_params(krb5_context context, | |
300 kadm5_config_params *params); | |
301 | |
302 krb5_error_code kadm5_get_admin_service_name(krb5_context, char *, | |
303 char *, size_t); | |
304 | |
305 /* | |
306 * For all initialization functions, the caller must first initialize | |
307 * a context with kadm5_init_krb5_context which will survive as long | |
308 * as the resulting handle. The caller should free the context with | |
309 * krb5_free_context. | |
310 */ | |
311 | |
312 kadm5_ret_t kadm5_init(krb5_context context, char *client_name, | |
313 char *pass, char *service_name, | |
314 kadm5_config_params *params, | |
315 krb5_ui_4 struct_version, | |
316 krb5_ui_4 api_version, | |
317 char **db_args, | |
318 void **server_handle); | |
319 kadm5_ret_t kadm5_init_anonymous(krb5_context context, char *client_name, | |
320 char *service_name, | |
321 kadm5_config_params *params, | |
322 krb5_ui_4 struct_version, | |
323 krb5_ui_4 api_version, | |
324 char **db_args, | |
325 void **server_handle); | |
326 kadm5_ret_t kadm5_init_with_password(krb5_context context, | |
327 char *client_name, | |
328 char *pass, | |
329 char *service_name, | |
330 kadm5_config_params *params, | |
331 krb5_ui_4 struct_version, | |
332 krb5_ui_4 api_version, | |
333 char **db_args, | |
334 void **server_handle); | |
335 kadm5_ret_t kadm5_init_with_skey(krb5_context context, | |
336 char *client_name, | |
337 char *keytab, | |
338 char *service_name, | |
339 kadm5_config_params *params, | |
340 krb5_ui_4 struct_version, | |
341 krb5_ui_4 api_version, | |
342 char **db_args, | |
343 void **server_handle); | |
344 kadm5_ret_t kadm5_init_with_creds(krb5_context context, | |
345 char *client_name, | |
346 krb5_ccache cc, | |
347 char *service_name, | |
348 kadm5_config_params *params, | |
349 krb5_ui_4 struct_version, | |
350 krb5_ui_4 api_version, | |
351 char **db_args, | |
352 void **server_handle); | |
353 kadm5_ret_t kadm5_lock(void *server_handle); | |
354 kadm5_ret_t kadm5_unlock(void *server_handle); | |
355 kadm5_ret_t kadm5_flush(void *server_handle); | |
356 kadm5_ret_t kadm5_destroy(void *server_handle); | |
357 kadm5_ret_t kadm5_create_principal(void *server_handle, | |
358 kadm5_principal_ent_t ent, | |
359 long mask, char *pass); | |
360 kadm5_ret_t kadm5_create_principal_3(void *server_handle, | |
361 kadm5_principal_ent_t ent, | |
362 long mask, | |
363 int n_ks_tuple, | |
364 krb5_key_salt_tuple *ks_tuple, | |
365 char *pass); | |
366 kadm5_ret_t kadm5_delete_principal(void *server_handle, | |
367 krb5_principal principal); | |
368 kadm5_ret_t kadm5_modify_principal(void *server_handle, | |
369 kadm5_principal_ent_t ent, | |
370 long mask); | |
371 kadm5_ret_t kadm5_rename_principal(void *server_handle, | |
372 krb5_principal,krb5_principal); | |
373 kadm5_ret_t kadm5_get_principal(void *server_handle, | |
374 krb5_principal principal, | |
375 kadm5_principal_ent_t ent, | |
376 long mask); | |
377 kadm5_ret_t kadm5_chpass_principal(void *server_handle, | |
378 krb5_principal principal, | |
379 char *pass); | |
380 kadm5_ret_t kadm5_chpass_principal_3(void *server_handle, | |
381 krb5_principal principal, | |
382 krb5_boolean keepold, | |
383 int n_ks_tuple, | |
384 krb5_key_salt_tuple *ks_tuple, | |
385 char *pass); | |
386 kadm5_ret_t kadm5_randkey_principal(void *server_handle, | |
387 krb5_principal principal, | |
388 krb5_keyblock **keyblocks, | |
389 int *n_keys); | |
390 kadm5_ret_t kadm5_randkey_principal_3(void *server_handle, | |
391 krb5_principal principal, | |
392 krb5_boolean keepold, | |
393 int n_ks_tuple, | |
394 krb5_key_salt_tuple *ks_tuple, | |
395 krb5_keyblock **keyblocks, | |
396 int *n_keys); | |
397 | |
398 kadm5_ret_t kadm5_setkey_principal(void *server_handle, | |
399 krb5_principal principal, | |
400 krb5_keyblock *keyblocks, | |
401 int n_keys); | |
402 | |
403 kadm5_ret_t kadm5_setkey_principal_3(void *server_handle, | |
404 krb5_principal principal, | |
405 krb5_boolean keepold, | |
406 int n_ks_tuple, | |
407 krb5_key_salt_tuple *ks_tuple, | |
408 krb5_keyblock *keyblocks, | |
409 int n_keys); | |
410 | |
411 kadm5_ret_t kadm5_setkey_principal_4(void *server_handle, | |
412 krb5_principal principal, | |
413 krb5_boolean keepold, | |
414 kadm5_key_data *key_data, | |
415 int n_key_data); | |
416 | |
417 kadm5_ret_t kadm5_decrypt_key(void *server_handle, | |
418 kadm5_principal_ent_t entry, krb5_int32 | |
419 ktype, krb5_int32 stype, krb5_int32 | |
420 kvno, krb5_keyblock *keyblock, | |
421 krb5_keysalt *keysalt, int *kvnop); | |
422 | |
423 kadm5_ret_t kadm5_create_policy(void *server_handle, | |
424 kadm5_policy_ent_t ent, | |
425 long mask); | |
426 kadm5_ret_t kadm5_delete_policy(void *server_handle, | |
427 kadm5_policy_t policy); | |
428 kadm5_ret_t kadm5_modify_policy(void *server_handle, | |
429 kadm5_policy_ent_t ent, | |
430 long mask); | |
431 kadm5_ret_t kadm5_get_policy(void *server_handle, | |
432 kadm5_policy_t policy, | |
433 kadm5_policy_ent_t ent); | |
434 kadm5_ret_t kadm5_get_privs(void *server_handle, | |
435 long *privs); | |
436 | |
437 kadm5_ret_t kadm5_chpass_principal_util(void *server_handle, | |
438 krb5_principal princ, | |
439 char *new_pw, | |
440 char **ret_pw, | |
441 char *msg_ret, | |
442 unsigned int msg_len); | |
443 | |
444 kadm5_ret_t kadm5_free_principal_ent(void *server_handle, | |
445 kadm5_principal_ent_t | |
446 ent); | |
447 kadm5_ret_t kadm5_free_policy_ent(void *server_handle, | |
448 kadm5_policy_ent_t ent); | |
449 | |
450 kadm5_ret_t kadm5_get_principals(void *server_handle, | |
451 char *exp, char ***princs, | |
452 int *count); | |
453 | |
454 kadm5_ret_t kadm5_get_policies(void *server_handle, | |
455 char *exp, char ***pols, | |
456 int *count); | |
457 | |
458 kadm5_ret_t kadm5_free_key_data(void *server_handle, | |
459 krb5_int16 *n_key_data, | |
460 krb5_key_data *key_data); | |
461 | |
462 kadm5_ret_t kadm5_free_name_list(void *server_handle, char **names, | |
463 int count); | |
464 | |
465 krb5_error_code kadm5_init_krb5_context (krb5_context *); | |
466 | |
467 krb5_error_code kadm5_init_iprop(void *server_handle, char **db_args); | |
468 | |
469 kadm5_ret_t kadm5_get_principal_keys(void *server_handle, | |
470 krb5_principal principal, | |
471 krb5_kvno kvno, | |
472 kadm5_key_data **key_data, | |
473 int *n_key_data); | |
474 | |
475 kadm5_ret_t kadm5_purgekeys(void *server_handle, | |
476 krb5_principal principal, | |
477 int keepkvno); | |
478 | |
479 kadm5_ret_t kadm5_get_strings(void *server_handle, | |
480 krb5_principal principal, | |
481 krb5_string_attr **strings_out, | |
482 int *count_out); | |
483 | |
484 kadm5_ret_t kadm5_set_string(void *server_handle, | |
485 krb5_principal principal, | |
486 const char *key, | |
487 const char *value); | |
488 | |
489 kadm5_ret_t kadm5_free_strings(void *server_handle, | |
490 krb5_string_attr *strings, | |
491 int count); | |
492 | |
493 kadm5_ret_t kadm5_free_kadm5_key_data(krb5_context context, int n_key_data, | |
494 kadm5_key_data *key_data); | |
495 | |
496 KADM5INT_END_DECLS | |
497 | |
498 #endif /* __KADM5_ADMIN_H__ */ |