17c478bd9Sstevel@tonic-gate /* 2*46736d35Ssemery * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 37c478bd9Sstevel@tonic-gate * Use is subject to license terms. 47c478bd9Sstevel@tonic-gate */ 57c478bd9Sstevel@tonic-gate 67c478bd9Sstevel@tonic-gate #ifndef __KADM5_ADMIN_H__ 77c478bd9Sstevel@tonic-gate #define __KADM5_ADMIN_H__ 87c478bd9Sstevel@tonic-gate 97c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 107c478bd9Sstevel@tonic-gate 117c478bd9Sstevel@tonic-gate #ifdef __cplusplus 127c478bd9Sstevel@tonic-gate extern "C" { 137c478bd9Sstevel@tonic-gate #endif 147c478bd9Sstevel@tonic-gate 157c478bd9Sstevel@tonic-gate /* 167c478bd9Sstevel@tonic-gate * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 177c478bd9Sstevel@tonic-gate * 187c478bd9Sstevel@tonic-gate * Openvision retains the copyright to derivative works of 197c478bd9Sstevel@tonic-gate * this source code. Do *NOT* create a derivative of this 207c478bd9Sstevel@tonic-gate * source code before consulting with your legal department. 217c478bd9Sstevel@tonic-gate * Do *NOT* integrate *ANY* of this source code into another 227c478bd9Sstevel@tonic-gate * product before consulting with your legal department. 237c478bd9Sstevel@tonic-gate * 247c478bd9Sstevel@tonic-gate * For further information, read the top-level Openvision 257c478bd9Sstevel@tonic-gate * copyright which is contained in the top-level MIT Kerberos 267c478bd9Sstevel@tonic-gate * copyright. 277c478bd9Sstevel@tonic-gate * 287c478bd9Sstevel@tonic-gate * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 297c478bd9Sstevel@tonic-gate * 307c478bd9Sstevel@tonic-gate */ 3156a424ccSmp153739 /* 3256a424ccSmp153739 * lib/kadm5/admin.h 3356a424ccSmp153739 * 3456a424ccSmp153739 * Copyright 2001 by the Massachusetts Institute of Technology. 3556a424ccSmp153739 * All Rights Reserved. 3656a424ccSmp153739 * 3756a424ccSmp153739 * Export of this software from the United States of America may 3856a424ccSmp153739 * require a specific license from the United States Government. 3956a424ccSmp153739 * It is the responsibility of any person or organization contemplating 4056a424ccSmp153739 * export to obtain such a license before exporting. 4156a424ccSmp153739 * 4256a424ccSmp153739 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 4356a424ccSmp153739 * distribute this software and its documentation for any purpose and 4456a424ccSmp153739 * without fee is hereby granted, provided that the above copyright 4556a424ccSmp153739 * notice appear in all copies and that both that copyright notice and 4656a424ccSmp153739 * this permission notice appear in supporting documentation, and that 4756a424ccSmp153739 * the name of M.I.T. not be used in advertising or publicity pertaining 4856a424ccSmp153739 * to distribution of the software without specific, written prior 4956a424ccSmp153739 * permission. Furthermore if you modify this software you must label 5056a424ccSmp153739 * your software as modified software and not distribute it in such a 5156a424ccSmp153739 * fashion that it might be confused with the original M.I.T. software. 5256a424ccSmp153739 * M.I.T. makes no representations about the suitability of 5356a424ccSmp153739 * this software for any purpose. It is provided "as is" without express 5456a424ccSmp153739 * or implied warranty. 5556a424ccSmp153739 * 5656a424ccSmp153739 */ 577c478bd9Sstevel@tonic-gate /* 587c478bd9Sstevel@tonic-gate * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved 597c478bd9Sstevel@tonic-gate * 6056a424ccSmp153739 * $Header: /cvs/krbdev/krb5/src/lib/kadm5/admin.h,v 1.54 2004/08/21 02:31:09 tlyu Exp $ 617c478bd9Sstevel@tonic-gate */ 627c478bd9Sstevel@tonic-gate 637c478bd9Sstevel@tonic-gate #include <sys/types.h> 647c478bd9Sstevel@tonic-gate #include <rpc/types.h> 657c478bd9Sstevel@tonic-gate #include <rpc/rpc.h> 667c478bd9Sstevel@tonic-gate #include <krb5.h> 677c478bd9Sstevel@tonic-gate #include <k5-int.h> 687c478bd9Sstevel@tonic-gate #include <com_err.h> 697c478bd9Sstevel@tonic-gate #include <kadm5/kadm_err.h> 707c478bd9Sstevel@tonic-gate #include <kadm5/adb_err.h> 717c478bd9Sstevel@tonic-gate #include <kadm5/chpass_util_strings.h> 727c478bd9Sstevel@tonic-gate 737c478bd9Sstevel@tonic-gate #define KADM5_ADMIN_SERVICE_P "kadmin@admin" 747c478bd9Sstevel@tonic-gate #define KADM5_ADMIN_SERVICE "kadmin/admin" 757c478bd9Sstevel@tonic-gate #define KADM5_CHANGEPW_SERVICE_P "kadmin@changepw" 767c478bd9Sstevel@tonic-gate #define KADM5_CHANGEPW_SERVICE "kadmin/changepw" 777c478bd9Sstevel@tonic-gate #define KADM5_HIST_PRINCIPAL "kadmin/history" 787c478bd9Sstevel@tonic-gate #define KADM5_ADMIN_HOST_SERVICE "kadmin" 797c478bd9Sstevel@tonic-gate #define KADM5_CHANGEPW_HOST_SERVICE "changepw" 807c478bd9Sstevel@tonic-gate #define KADM5_KIPROP_HOST_SERVICE "kiprop" 817c478bd9Sstevel@tonic-gate 827c478bd9Sstevel@tonic-gate typedef krb5_principal kadm5_princ_t; 837c478bd9Sstevel@tonic-gate typedef char *kadm5_policy_t; 847c478bd9Sstevel@tonic-gate typedef long kadm5_ret_t; 857c478bd9Sstevel@tonic-gate typedef int rpc_int32; 867c478bd9Sstevel@tonic-gate typedef unsigned int rpc_u_int32; 877c478bd9Sstevel@tonic-gate 887c478bd9Sstevel@tonic-gate #define KADM5_PW_FIRST_PROMPT \ 8956a424ccSmp153739 (error_message(CHPASS_UTIL_NEW_PASSWORD_PROMPT)) 907c478bd9Sstevel@tonic-gate #define KADM5_PW_SECOND_PROMPT \ 9156a424ccSmp153739 (error_message(CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT)) 927c478bd9Sstevel@tonic-gate 937c478bd9Sstevel@tonic-gate /* 9456a424ccSmp153739 * Successful return code 957c478bd9Sstevel@tonic-gate */ 967c478bd9Sstevel@tonic-gate #define KADM5_OK 0 977c478bd9Sstevel@tonic-gate 987c478bd9Sstevel@tonic-gate /* 997c478bd9Sstevel@tonic-gate * Field masks 1007c478bd9Sstevel@tonic-gate */ 1017c478bd9Sstevel@tonic-gate 1027c478bd9Sstevel@tonic-gate /* kadm5_principal_ent_t */ 1037c478bd9Sstevel@tonic-gate #define KADM5_PRINCIPAL 0x000001 1047c478bd9Sstevel@tonic-gate #define KADM5_PRINC_EXPIRE_TIME 0x000002 1057c478bd9Sstevel@tonic-gate #define KADM5_PW_EXPIRATION 0x000004 1067c478bd9Sstevel@tonic-gate #define KADM5_LAST_PWD_CHANGE 0x000008 1077c478bd9Sstevel@tonic-gate #define KADM5_ATTRIBUTES 0x000010 1087c478bd9Sstevel@tonic-gate #define KADM5_MAX_LIFE 0x000020 1097c478bd9Sstevel@tonic-gate #define KADM5_MOD_TIME 0x000040 1107c478bd9Sstevel@tonic-gate #define KADM5_MOD_NAME 0x000080 1117c478bd9Sstevel@tonic-gate #define KADM5_KVNO 0x000100 1127c478bd9Sstevel@tonic-gate #define KADM5_MKVNO 0x000200 1137c478bd9Sstevel@tonic-gate #define KADM5_AUX_ATTRIBUTES 0x000400 1147c478bd9Sstevel@tonic-gate #define KADM5_POLICY 0x000800 1157c478bd9Sstevel@tonic-gate #define KADM5_POLICY_CLR 0x001000 1167c478bd9Sstevel@tonic-gate /* version 2 masks */ 1177c478bd9Sstevel@tonic-gate #define KADM5_MAX_RLIFE 0x002000 1187c478bd9Sstevel@tonic-gate #define KADM5_LAST_SUCCESS 0x004000 1197c478bd9Sstevel@tonic-gate #define KADM5_LAST_FAILED 0x008000 1207c478bd9Sstevel@tonic-gate #define KADM5_FAIL_AUTH_COUNT 0x010000 1217c478bd9Sstevel@tonic-gate #define KADM5_KEY_DATA 0x020000 1227c478bd9Sstevel@tonic-gate #define KADM5_TL_DATA 0x040000 1237c478bd9Sstevel@tonic-gate /* all but KEY_DATA and TL_DATA */ 1247c478bd9Sstevel@tonic-gate #define KADM5_PRINCIPAL_NORMAL_MASK 0x01ffff 1257c478bd9Sstevel@tonic-gate 1267c478bd9Sstevel@tonic-gate /* kadm5_policy_ent_t */ 1277c478bd9Sstevel@tonic-gate #define KADM5_PW_MAX_LIFE 0x004000 1287c478bd9Sstevel@tonic-gate #define KADM5_PW_MIN_LIFE 0x008000 1297c478bd9Sstevel@tonic-gate #define KADM5_PW_MIN_LENGTH 0x010000 1307c478bd9Sstevel@tonic-gate #define KADM5_PW_MIN_CLASSES 0x020000 1317c478bd9Sstevel@tonic-gate #define KADM5_PW_HISTORY_NUM 0x040000 1327c478bd9Sstevel@tonic-gate #define KADM5_REF_COUNT 0x080000 1337c478bd9Sstevel@tonic-gate 1347c478bd9Sstevel@tonic-gate /* kadm5_config_params */ 1357c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_REALM 0x0000001 1367c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_DBNAME 0x0000002 1377c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_MKEY_NAME 0x0000004 1387c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_MAX_LIFE 0x0000008 1397c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_MAX_RLIFE 0x0000010 1407c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_EXPIRATION 0x0000020 1417c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_FLAGS 0x0000040 1427c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_ADMIN_KEYTAB 0x0000080 1437c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_STASH_FILE 0x0000100 1447c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_ENCTYPE 0x0000200 1457c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_ADBNAME 0x0000400 1467c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_ADB_LOCKFILE 0x0000800 1477c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_PROFILE 0x0001000 1487c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_ACL_FILE 0x0002000 1497c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_KADMIND_PORT 0x0004000 1507c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_ENCTYPES 0x0008000 1517c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_ADMIN_SERVER 0x0010000 1527c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_DICT_FILE 0x0020000 1537c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_MKEY_FROM_KBD 0x0040000 1547c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_KPASSWD_PORT 0x0080000 1557c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_KPASSWD_SERVER 0x0100000 1567c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_KPASSWD_PROTOCOL 0x0200000 1577c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_IPROP_ENABLED 0x0400000 1587c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_ULOG_SIZE 0x0800000 1597c478bd9Sstevel@tonic-gate #define KADM5_CONFIG_POLL_TIME 0x1000000 1607c478bd9Sstevel@tonic-gate 1617c478bd9Sstevel@tonic-gate /* password change constants */ 1627c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_SUCCESS 0 1637c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_MALFORMED 1 1647c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_HARDERROR 2 1657c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_AUTHERROR 3 1667c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_SOFTERROR 4 1677c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_ACCESSDENIED 5 1687c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_BAD_VERSION 6 1697c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_INITIAL_FLAG_NEEDED 7 1707c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_POLICY_REJECT 8 1717c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_BAD_PRINCIPAL 9 1727c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_ETYPE_NOSUPP 10 1737c478bd9Sstevel@tonic-gate 1747c478bd9Sstevel@tonic-gate /* 1757c478bd9Sstevel@tonic-gate * permission bits 1767c478bd9Sstevel@tonic-gate */ 1777c478bd9Sstevel@tonic-gate #define KADM5_PRIV_GET 0x01 1787c478bd9Sstevel@tonic-gate #define KADM5_PRIV_ADD 0x02 1797c478bd9Sstevel@tonic-gate #define KADM5_PRIV_MODIFY 0x04 1807c478bd9Sstevel@tonic-gate #define KADM5_PRIV_DELETE 0x08 1817c478bd9Sstevel@tonic-gate 1827c478bd9Sstevel@tonic-gate /* 1837c478bd9Sstevel@tonic-gate * API versioning constants 1847c478bd9Sstevel@tonic-gate */ 1857c478bd9Sstevel@tonic-gate #define KADM5_MASK_BITS 0xffffff00 1867c478bd9Sstevel@tonic-gate 1877c478bd9Sstevel@tonic-gate #define KADM5_STRUCT_VERSION_MASK 0x12345600 1887c478bd9Sstevel@tonic-gate #define KADM5_STRUCT_VERSION_1 (KADM5_STRUCT_VERSION_MASK|0x01) 1897c478bd9Sstevel@tonic-gate #define KADM5_STRUCT_VERSION KADM5_STRUCT_VERSION_1 1907c478bd9Sstevel@tonic-gate 1917c478bd9Sstevel@tonic-gate #define KADM5_API_VERSION_MASK 0x12345700 1927c478bd9Sstevel@tonic-gate #define KADM5_API_VERSION_1 (KADM5_API_VERSION_MASK|0x01) 1937c478bd9Sstevel@tonic-gate #define KADM5_API_VERSION_2 (KADM5_API_VERSION_MASK|0x02) 1947c478bd9Sstevel@tonic-gate 1957c478bd9Sstevel@tonic-gate #ifdef KRB5_DNS_LOOKUP 1967c478bd9Sstevel@tonic-gate /* 1977c478bd9Sstevel@tonic-gate * Name length constants for DNS lookups 1987c478bd9Sstevel@tonic-gate */ 1997c478bd9Sstevel@tonic-gate #define MAX_HOST_NAMELEN 256 2007c478bd9Sstevel@tonic-gate #define MAX_DNS_NAMELEN (15*(MAX_HOST_NAMELEN + 1)+1) 2017c478bd9Sstevel@tonic-gate #endif /* KRB5_DNS_LOOKUP */ 2027c478bd9Sstevel@tonic-gate 2037c478bd9Sstevel@tonic-gate typedef struct _kadm5_principal_ent_t_v2 { 2047c478bd9Sstevel@tonic-gate krb5_principal principal; 2057c478bd9Sstevel@tonic-gate krb5_timestamp princ_expire_time; 2067c478bd9Sstevel@tonic-gate krb5_timestamp last_pwd_change; 2077c478bd9Sstevel@tonic-gate krb5_timestamp pw_expiration; 2087c478bd9Sstevel@tonic-gate krb5_deltat max_life; 2097c478bd9Sstevel@tonic-gate krb5_principal mod_name; 2107c478bd9Sstevel@tonic-gate krb5_timestamp mod_date; 2117c478bd9Sstevel@tonic-gate krb5_flags attributes; 2127c478bd9Sstevel@tonic-gate krb5_kvno kvno; 2137c478bd9Sstevel@tonic-gate krb5_kvno mkvno; 2147c478bd9Sstevel@tonic-gate char *policy; 2157c478bd9Sstevel@tonic-gate long aux_attributes; 2167c478bd9Sstevel@tonic-gate 2177c478bd9Sstevel@tonic-gate /* version 2 fields */ 2187c478bd9Sstevel@tonic-gate krb5_deltat max_renewable_life; 2197c478bd9Sstevel@tonic-gate krb5_timestamp last_success; 2207c478bd9Sstevel@tonic-gate krb5_timestamp last_failed; 2217c478bd9Sstevel@tonic-gate krb5_kvno fail_auth_count; 2227c478bd9Sstevel@tonic-gate krb5_int16 n_key_data; 2237c478bd9Sstevel@tonic-gate krb5_int16 n_tl_data; 2247c478bd9Sstevel@tonic-gate krb5_tl_data *tl_data; 2257c478bd9Sstevel@tonic-gate krb5_key_data *key_data; 2267c478bd9Sstevel@tonic-gate } kadm5_principal_ent_rec_v2, *kadm5_principal_ent_t_v2; 2277c478bd9Sstevel@tonic-gate 2287c478bd9Sstevel@tonic-gate typedef struct _kadm5_principal_ent_t_v1 { 2297c478bd9Sstevel@tonic-gate krb5_principal principal; 2307c478bd9Sstevel@tonic-gate krb5_timestamp princ_expire_time; 2317c478bd9Sstevel@tonic-gate krb5_timestamp last_pwd_change; 2327c478bd9Sstevel@tonic-gate krb5_timestamp pw_expiration; 2337c478bd9Sstevel@tonic-gate krb5_deltat max_life; 2347c478bd9Sstevel@tonic-gate krb5_principal mod_name; 2357c478bd9Sstevel@tonic-gate krb5_timestamp mod_date; 2367c478bd9Sstevel@tonic-gate krb5_flags attributes; 2377c478bd9Sstevel@tonic-gate krb5_kvno kvno; 2387c478bd9Sstevel@tonic-gate krb5_kvno mkvno; 2397c478bd9Sstevel@tonic-gate char *policy; 2407c478bd9Sstevel@tonic-gate long aux_attributes; 2417c478bd9Sstevel@tonic-gate } kadm5_principal_ent_rec_v1, *kadm5_principal_ent_t_v1; 2427c478bd9Sstevel@tonic-gate 24356a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 24456a424ccSmp153739 typedef struct _kadm5_principal_ent_t_v1 24556a424ccSmp153739 kadm5_principal_ent_rec, *kadm5_principal_ent_t; 24656a424ccSmp153739 #else 2477c478bd9Sstevel@tonic-gate typedef struct _kadm5_principal_ent_t_v2 2487c478bd9Sstevel@tonic-gate kadm5_principal_ent_rec, *kadm5_principal_ent_t; 24956a424ccSmp153739 #endif 2507c478bd9Sstevel@tonic-gate 2517c478bd9Sstevel@tonic-gate typedef struct _kadm5_policy_ent_t { 2527c478bd9Sstevel@tonic-gate char *policy; 2537c478bd9Sstevel@tonic-gate long pw_min_life; 2547c478bd9Sstevel@tonic-gate long pw_max_life; 2557c478bd9Sstevel@tonic-gate long pw_min_length; 2567c478bd9Sstevel@tonic-gate long pw_min_classes; 2577c478bd9Sstevel@tonic-gate long pw_history_num; 2587c478bd9Sstevel@tonic-gate long policy_refcnt; 2597c478bd9Sstevel@tonic-gate } kadm5_policy_ent_rec, *kadm5_policy_ent_t; 2607c478bd9Sstevel@tonic-gate 2617c478bd9Sstevel@tonic-gate typedef struct __krb5_key_salt_tuple { 2627c478bd9Sstevel@tonic-gate krb5_enctype ks_enctype; 2637c478bd9Sstevel@tonic-gate krb5_int32 ks_salttype; 2647c478bd9Sstevel@tonic-gate } krb5_key_salt_tuple; 2657c478bd9Sstevel@tonic-gate 2667c478bd9Sstevel@tonic-gate /* 2677c478bd9Sstevel@tonic-gate * New types to indicate which protocol to use when sending 2687c478bd9Sstevel@tonic-gate * password change requests 2697c478bd9Sstevel@tonic-gate */ 2707c478bd9Sstevel@tonic-gate typedef enum { 2717c478bd9Sstevel@tonic-gate KRB5_CHGPWD_RPCSEC, 2727c478bd9Sstevel@tonic-gate KRB5_CHGPWD_CHANGEPW_V2 2737c478bd9Sstevel@tonic-gate } krb5_chgpwd_prot; 2747c478bd9Sstevel@tonic-gate 2757c478bd9Sstevel@tonic-gate /* 2767c478bd9Sstevel@tonic-gate * Data structure returned by kadm5_get_config_params() 2777c478bd9Sstevel@tonic-gate */ 2787c478bd9Sstevel@tonic-gate typedef struct _kadm5_config_params { 2797c478bd9Sstevel@tonic-gate long mask; 2807c478bd9Sstevel@tonic-gate char * realm; 2817c478bd9Sstevel@tonic-gate char * profile; 2827c478bd9Sstevel@tonic-gate int kadmind_port; 28356a424ccSmp153739 int kpasswd_port; 28456a424ccSmp153739 2857c478bd9Sstevel@tonic-gate char * admin_server; 28656a424ccSmp153739 2877c478bd9Sstevel@tonic-gate char * dbname; 2887c478bd9Sstevel@tonic-gate char * admin_dbname; 2897c478bd9Sstevel@tonic-gate char * admin_lockfile; 2907c478bd9Sstevel@tonic-gate char * admin_keytab; 2917c478bd9Sstevel@tonic-gate char * acl_file; 2927c478bd9Sstevel@tonic-gate char * dict_file; 29356a424ccSmp153739 2947c478bd9Sstevel@tonic-gate int mkey_from_kbd; 2957c478bd9Sstevel@tonic-gate char * stash_file; 2967c478bd9Sstevel@tonic-gate char * mkey_name; 2977c478bd9Sstevel@tonic-gate krb5_enctype enctype; 2987c478bd9Sstevel@tonic-gate krb5_deltat max_life; 2997c478bd9Sstevel@tonic-gate krb5_deltat max_rlife; 3007c478bd9Sstevel@tonic-gate krb5_timestamp expiration; 3017c478bd9Sstevel@tonic-gate krb5_flags flags; 3027c478bd9Sstevel@tonic-gate krb5_key_salt_tuple *keysalts; 3037c478bd9Sstevel@tonic-gate krb5_int32 num_keysalts; 3047c478bd9Sstevel@tonic-gate char *kpasswd_server; 30556a424ccSmp153739 3067c478bd9Sstevel@tonic-gate krb5_chgpwd_prot kpasswd_protocol; 3077c478bd9Sstevel@tonic-gate bool_t iprop_enabled; 3087c478bd9Sstevel@tonic-gate int iprop_ulogsize; 3097c478bd9Sstevel@tonic-gate char *iprop_polltime; 3107c478bd9Sstevel@tonic-gate } kadm5_config_params; 3117c478bd9Sstevel@tonic-gate 3127c478bd9Sstevel@tonic-gate /*********************************************************************** 3137c478bd9Sstevel@tonic-gate * This is the old krb5_realm_read_params, which I mutated into 3147c478bd9Sstevel@tonic-gate * kadm5_get_config_params but which old code (kdb5_* and krb5kdc) 3157c478bd9Sstevel@tonic-gate * still uses. 3167c478bd9Sstevel@tonic-gate ***********************************************************************/ 3177c478bd9Sstevel@tonic-gate 3187c478bd9Sstevel@tonic-gate /* 3197c478bd9Sstevel@tonic-gate * Data structure returned by krb5_read_realm_params() 3207c478bd9Sstevel@tonic-gate */ 3217c478bd9Sstevel@tonic-gate typedef struct __krb5_realm_params { 3227c478bd9Sstevel@tonic-gate char * realm_profile; 3237c478bd9Sstevel@tonic-gate char * realm_dbname; 3247c478bd9Sstevel@tonic-gate char * realm_mkey_name; 3257c478bd9Sstevel@tonic-gate char * realm_stash_file; 3267c478bd9Sstevel@tonic-gate char * realm_kdc_ports; 3277c478bd9Sstevel@tonic-gate char * realm_kdc_tcp_ports; 3287c478bd9Sstevel@tonic-gate char * realm_acl_file; 3297c478bd9Sstevel@tonic-gate krb5_int32 realm_kadmind_port; 3307c478bd9Sstevel@tonic-gate krb5_enctype realm_enctype; 3317c478bd9Sstevel@tonic-gate krb5_deltat realm_max_life; 3327c478bd9Sstevel@tonic-gate krb5_deltat realm_max_rlife; 3337c478bd9Sstevel@tonic-gate krb5_timestamp realm_expiration; 3347c478bd9Sstevel@tonic-gate krb5_flags realm_flags; 3357c478bd9Sstevel@tonic-gate krb5_key_salt_tuple *realm_keysalts; 33656a424ccSmp153739 unsigned int realm_reject_bad_transit:1; 3377c478bd9Sstevel@tonic-gate unsigned int realm_kadmind_port_valid:1; 3387c478bd9Sstevel@tonic-gate unsigned int realm_enctype_valid:1; 3397c478bd9Sstevel@tonic-gate unsigned int realm_max_life_valid:1; 3407c478bd9Sstevel@tonic-gate unsigned int realm_max_rlife_valid:1; 3417c478bd9Sstevel@tonic-gate unsigned int realm_expiration_valid:1; 3427c478bd9Sstevel@tonic-gate unsigned int realm_flags_valid:1; 34356a424ccSmp153739 unsigned int realm_reject_bad_transit_valid:1; 3447c478bd9Sstevel@tonic-gate krb5_int32 realm_num_keysalts; 3457c478bd9Sstevel@tonic-gate } krb5_realm_params; 3467c478bd9Sstevel@tonic-gate 3477c478bd9Sstevel@tonic-gate /* 3487c478bd9Sstevel@tonic-gate * functions 3497c478bd9Sstevel@tonic-gate */ 3507c478bd9Sstevel@tonic-gate 3517c478bd9Sstevel@tonic-gate kadm5_ret_t 3527c478bd9Sstevel@tonic-gate kadm5_get_adm_host_srv_name(krb5_context context, 3537c478bd9Sstevel@tonic-gate const char *realm, char **host_service_name); 3547c478bd9Sstevel@tonic-gate 3557c478bd9Sstevel@tonic-gate kadm5_ret_t 3567c478bd9Sstevel@tonic-gate kadm5_get_cpw_host_srv_name(krb5_context context, 3577c478bd9Sstevel@tonic-gate const char *realm, char **host_service_name); 3587c478bd9Sstevel@tonic-gate 35956a424ccSmp153739 #if USE_KADM5_API_VERSION > 1 3607c478bd9Sstevel@tonic-gate krb5_error_code kadm5_get_config_params(krb5_context context, 3617c478bd9Sstevel@tonic-gate char *kdcprofile, char *kdcenv, 3627c478bd9Sstevel@tonic-gate kadm5_config_params *params_in, 3637c478bd9Sstevel@tonic-gate kadm5_config_params *params_out); 3647c478bd9Sstevel@tonic-gate 3657c478bd9Sstevel@tonic-gate krb5_error_code kadm5_free_config_params(krb5_context context, 3667c478bd9Sstevel@tonic-gate kadm5_config_params *params); 3677c478bd9Sstevel@tonic-gate 3687c478bd9Sstevel@tonic-gate krb5_error_code kadm5_free_realm_params(krb5_context kcontext, 3697c478bd9Sstevel@tonic-gate kadm5_config_params *params); 3707c478bd9Sstevel@tonic-gate 37156a424ccSmp153739 krb5_error_code kadm5_get_admin_service_name(krb5_context, char *, 37256a424ccSmp153739 char *, size_t); 37356a424ccSmp153739 #endif 37456a424ccSmp153739 3757c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_init(char *client_name, char *pass, 3767c478bd9Sstevel@tonic-gate char *service_name, 37756a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 37856a424ccSmp153739 char *realm, 37956a424ccSmp153739 #else 3807c478bd9Sstevel@tonic-gate kadm5_config_params *params, 38156a424ccSmp153739 #endif 3827c478bd9Sstevel@tonic-gate krb5_ui_4 struct_version, 3837c478bd9Sstevel@tonic-gate krb5_ui_4 api_version, 3847c478bd9Sstevel@tonic-gate void **server_handle); 3857c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_init_with_password(char *client_name, 3867c478bd9Sstevel@tonic-gate char *pass, 3877c478bd9Sstevel@tonic-gate char *service_name, 38856a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 38956a424ccSmp153739 char *realm, 39056a424ccSmp153739 #else 3917c478bd9Sstevel@tonic-gate kadm5_config_params *params, 39256a424ccSmp153739 #endif 3937c478bd9Sstevel@tonic-gate krb5_ui_4 struct_version, 3947c478bd9Sstevel@tonic-gate krb5_ui_4 api_version, 3957c478bd9Sstevel@tonic-gate void **server_handle); 3967c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_init_with_skey(char *client_name, 3977c478bd9Sstevel@tonic-gate char *keytab, 3987c478bd9Sstevel@tonic-gate char *service_name, 39956a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 40056a424ccSmp153739 char *realm, 40156a424ccSmp153739 #else 4027c478bd9Sstevel@tonic-gate kadm5_config_params *params, 40356a424ccSmp153739 #endif 4047c478bd9Sstevel@tonic-gate krb5_ui_4 struct_version, 4057c478bd9Sstevel@tonic-gate krb5_ui_4 api_version, 4067c478bd9Sstevel@tonic-gate void **server_handle); 40756a424ccSmp153739 #if USE_KADM5_API_VERSION > 1 4087c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_init_with_creds(char *client_name, 4097c478bd9Sstevel@tonic-gate krb5_ccache cc, 4107c478bd9Sstevel@tonic-gate char *service_name, 4117c478bd9Sstevel@tonic-gate kadm5_config_params *params, 4127c478bd9Sstevel@tonic-gate krb5_ui_4 struct_version, 4137c478bd9Sstevel@tonic-gate krb5_ui_4 api_version, 4147c478bd9Sstevel@tonic-gate void **server_handle); 41556a424ccSmp153739 #endif 41656a424ccSmp153739 kadm5_ret_t kadm5_lock(void *server_handle); 41756a424ccSmp153739 kadm5_ret_t kadm5_unlock(void *server_handle); 4187c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_flush(void *server_handle); 4197c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_destroy(void *server_handle); 4207c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_create_principal(void *server_handle, 4217c478bd9Sstevel@tonic-gate kadm5_principal_ent_t ent, 4227c478bd9Sstevel@tonic-gate long mask, char *pass); 4237c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_create_principal_3(void *server_handle, 4247c478bd9Sstevel@tonic-gate kadm5_principal_ent_t ent, 4257c478bd9Sstevel@tonic-gate long mask, 4267c478bd9Sstevel@tonic-gate int n_ks_tuple, 4277c478bd9Sstevel@tonic-gate krb5_key_salt_tuple *ks_tuple, 4287c478bd9Sstevel@tonic-gate char *pass); 4297c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_delete_principal(void *server_handle, 4307c478bd9Sstevel@tonic-gate krb5_principal principal); 4317c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_modify_principal(void *server_handle, 4327c478bd9Sstevel@tonic-gate kadm5_principal_ent_t ent, 4337c478bd9Sstevel@tonic-gate long mask); 4347c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_rename_principal(void *server_handle, 4357c478bd9Sstevel@tonic-gate krb5_principal,krb5_principal); 43656a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 43756a424ccSmp153739 kadm5_ret_t kadm5_get_principal(void *server_handle, 43856a424ccSmp153739 krb5_principal principal, 43956a424ccSmp153739 kadm5_principal_ent_t *ent); 44056a424ccSmp153739 #else 4417c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_get_principal(void *server_handle, 4427c478bd9Sstevel@tonic-gate krb5_principal principal, 4437c478bd9Sstevel@tonic-gate kadm5_principal_ent_t ent, 4447c478bd9Sstevel@tonic-gate long mask); 44556a424ccSmp153739 #endif 4467c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_chpass_principal(void *server_handle, 4477c478bd9Sstevel@tonic-gate krb5_principal principal, 4487c478bd9Sstevel@tonic-gate char *pass); 4497c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_chpass_principal_3(void *server_handle, 4507c478bd9Sstevel@tonic-gate krb5_principal principal, 4517c478bd9Sstevel@tonic-gate krb5_boolean keepold, 4527c478bd9Sstevel@tonic-gate int n_ks_tuple, 4537c478bd9Sstevel@tonic-gate krb5_key_salt_tuple *ks_tuple, 4547c478bd9Sstevel@tonic-gate char *pass); 45556a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 45656a424ccSmp153739 kadm5_ret_t kadm5_randkey_principal(void *server_handle, 45756a424ccSmp153739 krb5_principal principal, 45856a424ccSmp153739 krb5_keyblock **keyblock); 45956a424ccSmp153739 #else 4607c478bd9Sstevel@tonic-gate 4617c478bd9Sstevel@tonic-gate /* 4627c478bd9Sstevel@tonic-gate * Solaris Kerberos: 4637c478bd9Sstevel@tonic-gate * this routine is only implemented in the client library. 4647c478bd9Sstevel@tonic-gate */ 4657c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_randkey_principal_old(void *server_handle, 4667c478bd9Sstevel@tonic-gate krb5_principal principal, 4677c478bd9Sstevel@tonic-gate krb5_keyblock **keyblocks, 4687c478bd9Sstevel@tonic-gate int *n_keys); 4697c478bd9Sstevel@tonic-gate 4707c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_randkey_principal(void *server_handle, 4717c478bd9Sstevel@tonic-gate krb5_principal principal, 4727c478bd9Sstevel@tonic-gate krb5_keyblock **keyblocks, 4737c478bd9Sstevel@tonic-gate int *n_keys); 4747c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_randkey_principal_3(void *server_handle, 4757c478bd9Sstevel@tonic-gate krb5_principal principal, 4767c478bd9Sstevel@tonic-gate krb5_boolean keepold, 4777c478bd9Sstevel@tonic-gate int n_ks_tuple, 4787c478bd9Sstevel@tonic-gate krb5_key_salt_tuple *ks_tuple, 4797c478bd9Sstevel@tonic-gate krb5_keyblock **keyblocks, 4807c478bd9Sstevel@tonic-gate int *n_keys); 48156a424ccSmp153739 #endif 4827c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_setv4key_principal(void *server_handle, 4837c478bd9Sstevel@tonic-gate krb5_principal principal, 4847c478bd9Sstevel@tonic-gate krb5_keyblock *keyblock); 4857c478bd9Sstevel@tonic-gate 4867c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_setkey_principal(void *server_handle, 4877c478bd9Sstevel@tonic-gate krb5_principal principal, 4887c478bd9Sstevel@tonic-gate krb5_keyblock *keyblocks, 4897c478bd9Sstevel@tonic-gate int n_keys); 4907c478bd9Sstevel@tonic-gate 4917c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_setkey_principal_3(void *server_handle, 4927c478bd9Sstevel@tonic-gate krb5_principal principal, 4937c478bd9Sstevel@tonic-gate krb5_boolean keepold, 4947c478bd9Sstevel@tonic-gate int n_ks_tuple, 4957c478bd9Sstevel@tonic-gate krb5_key_salt_tuple *ks_tuple, 4967c478bd9Sstevel@tonic-gate krb5_keyblock *keyblocks, 4977c478bd9Sstevel@tonic-gate int n_keys); 4987c478bd9Sstevel@tonic-gate 49956a424ccSmp153739 kadm5_ret_t kadm5_decrypt_key(void *server_handle, 50056a424ccSmp153739 kadm5_principal_ent_t entry, krb5_int32 50156a424ccSmp153739 ktype, krb5_int32 stype, krb5_int32 50256a424ccSmp153739 kvno, krb5_keyblock *keyblock, 50356a424ccSmp153739 krb5_keysalt *keysalt, int *kvnop); 50456a424ccSmp153739 5057c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_create_policy(void *server_handle, 5067c478bd9Sstevel@tonic-gate kadm5_policy_ent_t ent, 5077c478bd9Sstevel@tonic-gate long mask); 5087c478bd9Sstevel@tonic-gate /* 5097c478bd9Sstevel@tonic-gate * kadm5_create_policy_internal is not part of the supported, 5107c478bd9Sstevel@tonic-gate * exposed API. It is available only in the server library, and you 5117c478bd9Sstevel@tonic-gate * shouldn't use it unless you know why it's there and how it's 5127c478bd9Sstevel@tonic-gate * different from kadm5_create_policy. 5137c478bd9Sstevel@tonic-gate */ 5147c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_create_policy_internal(void *server_handle, 5157c478bd9Sstevel@tonic-gate kadm5_policy_ent_t 5167c478bd9Sstevel@tonic-gate entry, long mask); 5177c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_delete_policy(void *server_handle, 5187c478bd9Sstevel@tonic-gate kadm5_policy_t policy); 5197c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_modify_policy(void *server_handle, 5207c478bd9Sstevel@tonic-gate kadm5_policy_ent_t ent, 5217c478bd9Sstevel@tonic-gate long mask); 5227c478bd9Sstevel@tonic-gate /* 5237c478bd9Sstevel@tonic-gate * kadm5_modify_policy_internal is not part of the supported, 5247c478bd9Sstevel@tonic-gate * exposed API. It is available only in the server library, and you 5257c478bd9Sstevel@tonic-gate * shouldn't use it unless you know why it's there and how it's 5267c478bd9Sstevel@tonic-gate * different from kadm5_modify_policy. 5277c478bd9Sstevel@tonic-gate */ 5287c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_modify_policy_internal(void *server_handle, 5297c478bd9Sstevel@tonic-gate kadm5_policy_ent_t 5307c478bd9Sstevel@tonic-gate entry, long mask); 53156a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 53256a424ccSmp153739 kadm5_ret_t kadm5_get_policy(void *server_handle, 53356a424ccSmp153739 kadm5_policy_t policy, 53456a424ccSmp153739 kadm5_policy_ent_t *ent); 53556a424ccSmp153739 #else 5367c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_get_policy(void *server_handle, 5377c478bd9Sstevel@tonic-gate kadm5_policy_t policy, 5387c478bd9Sstevel@tonic-gate kadm5_policy_ent_t ent); 53956a424ccSmp153739 #endif 5407c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_get_privs(void *server_handle, 5417c478bd9Sstevel@tonic-gate long *privs); 5427c478bd9Sstevel@tonic-gate 5437c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_chpass_principal_util(void *server_handle, 5447c478bd9Sstevel@tonic-gate krb5_principal princ, 5457c478bd9Sstevel@tonic-gate char *new_pw, 5467c478bd9Sstevel@tonic-gate char **ret_pw, 5477c478bd9Sstevel@tonic-gate char *msg_ret, 54856a424ccSmp153739 unsigned int msg_len); 5497c478bd9Sstevel@tonic-gate 5507c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_free_principal_ent(void *server_handle, 5517c478bd9Sstevel@tonic-gate kadm5_principal_ent_t 5527c478bd9Sstevel@tonic-gate ent); 5537c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_free_policy_ent(void *server_handle, 5547c478bd9Sstevel@tonic-gate kadm5_policy_ent_t ent); 5557c478bd9Sstevel@tonic-gate 5567c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_get_principals(void *server_handle, 5577c478bd9Sstevel@tonic-gate char *exp, char ***princs, 5587c478bd9Sstevel@tonic-gate int *count); 5597c478bd9Sstevel@tonic-gate 5607c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_get_policies(void *server_handle, 5617c478bd9Sstevel@tonic-gate char *exp, char ***pols, 5627c478bd9Sstevel@tonic-gate int *count); 5637c478bd9Sstevel@tonic-gate 56456a424ccSmp153739 #if USE_KADM5_API_VERSION > 1 5657c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_free_key_data(void *server_handle, 5667c478bd9Sstevel@tonic-gate krb5_int16 *n_key_data, 5677c478bd9Sstevel@tonic-gate krb5_key_data *key_data); 56856a424ccSmp153739 #endif 5697c478bd9Sstevel@tonic-gate 57056a424ccSmp153739 kadm5_ret_t kadm5_free_name_list(void *server_handle, char **names, 57156a424ccSmp153739 int count); 57256a424ccSmp153739 57356a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 57456a424ccSmp153739 /* 57556a424ccSmp153739 * OVSEC_KADM_API_VERSION_1 should be, if possible, compile-time 57656a424ccSmp153739 * compatible with KADM5_API_VERSION_2. Basically, this means we have 57756a424ccSmp153739 * to continue to provide all the old ovsec_kadm function and symbol 57856a424ccSmp153739 * names. 57956a424ccSmp153739 */ 58056a424ccSmp153739 58156a424ccSmp153739 #define OVSEC_KADM_ACLFILE "/krb5/ovsec_adm.acl" 58256a424ccSmp153739 #define OVSEC_KADM_WORDFILE "/krb5/ovsec_adm.dict" 58356a424ccSmp153739 58456a424ccSmp153739 #define OVSEC_KADM_ADMIN_SERVICE "ovsec_adm/admin" 58556a424ccSmp153739 #define OVSEC_KADM_CHANGEPW_SERVICE "ovsec_adm/changepw" 58656a424ccSmp153739 #define OVSEC_KADM_HIST_PRINCIPAL "ovsec_adm/history" 58756a424ccSmp153739 58856a424ccSmp153739 typedef krb5_principal ovsec_kadm_princ_t; 58956a424ccSmp153739 typedef krb5_keyblock ovsec_kadm_keyblock; 59056a424ccSmp153739 typedef char *ovsec_kadm_policy_t; 59156a424ccSmp153739 typedef long ovsec_kadm_ret_t; 59256a424ccSmp153739 59356a424ccSmp153739 enum ovsec_kadm_salttype { OVSEC_KADM_SALT_V4, OVSEC_KADM_SALT_NORMAL }; 59456a424ccSmp153739 enum ovsec_kadm_saltmod { OVSEC_KADM_MOD_KEEP, OVSEC_KADM_MOD_V4, OVSEC_KADM_MOD_NORMAL }; 59556a424ccSmp153739 59656a424ccSmp153739 #define OVSEC_KADM_PW_FIRST_PROMPT \ 59756a424ccSmp153739 ((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_PROMPT)) 59856a424ccSmp153739 #define OVSEC_KADM_PW_SECOND_PROMPT \ 59956a424ccSmp153739 ((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT)) 60056a424ccSmp153739 60156a424ccSmp153739 /* 60256a424ccSmp153739 * Successful return code 60356a424ccSmp153739 */ 60456a424ccSmp153739 #define OVSEC_KADM_OK 0 60556a424ccSmp153739 60656a424ccSmp153739 /* 60756a424ccSmp153739 * Create/Modify masks 60856a424ccSmp153739 */ 60956a424ccSmp153739 /* principal */ 61056a424ccSmp153739 #define OVSEC_KADM_PRINCIPAL 0x000001 61156a424ccSmp153739 #define OVSEC_KADM_PRINC_EXPIRE_TIME 0x000002 61256a424ccSmp153739 #define OVSEC_KADM_PW_EXPIRATION 0x000004 61356a424ccSmp153739 #define OVSEC_KADM_LAST_PWD_CHANGE 0x000008 61456a424ccSmp153739 #define OVSEC_KADM_ATTRIBUTES 0x000010 61556a424ccSmp153739 #define OVSEC_KADM_MAX_LIFE 0x000020 61656a424ccSmp153739 #define OVSEC_KADM_MOD_TIME 0x000040 61756a424ccSmp153739 #define OVSEC_KADM_MOD_NAME 0x000080 61856a424ccSmp153739 #define OVSEC_KADM_KVNO 0x000100 61956a424ccSmp153739 #define OVSEC_KADM_MKVNO 0x000200 62056a424ccSmp153739 #define OVSEC_KADM_AUX_ATTRIBUTES 0x000400 62156a424ccSmp153739 #define OVSEC_KADM_POLICY 0x000800 62256a424ccSmp153739 #define OVSEC_KADM_POLICY_CLR 0x001000 62356a424ccSmp153739 /* policy */ 62456a424ccSmp153739 #define OVSEC_KADM_PW_MAX_LIFE 0x004000 62556a424ccSmp153739 #define OVSEC_KADM_PW_MIN_LIFE 0x008000 62656a424ccSmp153739 #define OVSEC_KADM_PW_MIN_LENGTH 0x010000 62756a424ccSmp153739 #define OVSEC_KADM_PW_MIN_CLASSES 0x020000 62856a424ccSmp153739 #define OVSEC_KADM_PW_HISTORY_NUM 0x040000 62956a424ccSmp153739 #define OVSEC_KADM_REF_COUNT 0x080000 63056a424ccSmp153739 63156a424ccSmp153739 /* 63256a424ccSmp153739 * permission bits 63356a424ccSmp153739 */ 63456a424ccSmp153739 #define OVSEC_KADM_PRIV_GET 0x01 63556a424ccSmp153739 #define OVSEC_KADM_PRIV_ADD 0x02 63656a424ccSmp153739 #define OVSEC_KADM_PRIV_MODIFY 0x04 63756a424ccSmp153739 #define OVSEC_KADM_PRIV_DELETE 0x08 63856a424ccSmp153739 63956a424ccSmp153739 /* 64056a424ccSmp153739 * API versioning constants 64156a424ccSmp153739 */ 64256a424ccSmp153739 #define OVSEC_KADM_MASK_BITS 0xffffff00 64356a424ccSmp153739 64456a424ccSmp153739 #define OVSEC_KADM_STRUCT_VERSION_MASK 0x12345600 64556a424ccSmp153739 #define OVSEC_KADM_STRUCT_VERSION_1 (OVSEC_KADM_STRUCT_VERSION_MASK|0x01) 64656a424ccSmp153739 #define OVSEC_KADM_STRUCT_VERSION OVSEC_KADM_STRUCT_VERSION_1 64756a424ccSmp153739 64856a424ccSmp153739 #define OVSEC_KADM_API_VERSION_MASK 0x12345700 64956a424ccSmp153739 #define OVSEC_KADM_API_VERSION_1 (OVSEC_KADM_API_VERSION_MASK|0x01) 65056a424ccSmp153739 65156a424ccSmp153739 65256a424ccSmp153739 typedef struct _ovsec_kadm_principal_ent_t { 65356a424ccSmp153739 krb5_principal principal; 65456a424ccSmp153739 krb5_timestamp princ_expire_time; 65556a424ccSmp153739 krb5_timestamp last_pwd_change; 65656a424ccSmp153739 krb5_timestamp pw_expiration; 65756a424ccSmp153739 krb5_deltat max_life; 65856a424ccSmp153739 krb5_principal mod_name; 65956a424ccSmp153739 krb5_timestamp mod_date; 66056a424ccSmp153739 krb5_flags attributes; 66156a424ccSmp153739 krb5_kvno kvno; 66256a424ccSmp153739 krb5_kvno mkvno; 66356a424ccSmp153739 char *policy; 66456a424ccSmp153739 long aux_attributes; 66556a424ccSmp153739 } ovsec_kadm_principal_ent_rec, *ovsec_kadm_principal_ent_t; 66656a424ccSmp153739 66756a424ccSmp153739 typedef struct _ovsec_kadm_policy_ent_t { 66856a424ccSmp153739 char *policy; 66956a424ccSmp153739 long pw_min_life; 67056a424ccSmp153739 long pw_max_life; 67156a424ccSmp153739 long pw_min_length; 67256a424ccSmp153739 long pw_min_classes; 67356a424ccSmp153739 long pw_history_num; 67456a424ccSmp153739 long policy_refcnt; 67556a424ccSmp153739 } ovsec_kadm_policy_ent_rec, *ovsec_kadm_policy_ent_t; 67656a424ccSmp153739 67756a424ccSmp153739 /* 67856a424ccSmp153739 * functions 67956a424ccSmp153739 */ 68056a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_init(char *client_name, char *pass, 68156a424ccSmp153739 char *service_name, char *realm, 68256a424ccSmp153739 krb5_ui_4 struct_version, 68356a424ccSmp153739 krb5_ui_4 api_version, 68456a424ccSmp153739 void **server_handle); 68556a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_init_with_password(char *client_name, 68656a424ccSmp153739 char *pass, 68756a424ccSmp153739 char *service_name, 68856a424ccSmp153739 char *realm, 68956a424ccSmp153739 krb5_ui_4 struct_version, 69056a424ccSmp153739 krb5_ui_4 api_version, 69156a424ccSmp153739 void **server_handle); 69256a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_init_with_skey(char *client_name, 69356a424ccSmp153739 char *keytab, 69456a424ccSmp153739 char *service_name, 69556a424ccSmp153739 char *realm, 69656a424ccSmp153739 krb5_ui_4 struct_version, 69756a424ccSmp153739 krb5_ui_4 api_version, 69856a424ccSmp153739 void **server_handle); 69956a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_flush(void *server_handle); 70056a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_destroy(void *server_handle); 70156a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_create_principal(void *server_handle, 70256a424ccSmp153739 ovsec_kadm_principal_ent_t ent, 70356a424ccSmp153739 long mask, char *pass); 70456a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_delete_principal(void *server_handle, 70556a424ccSmp153739 krb5_principal principal); 70656a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_modify_principal(void *server_handle, 70756a424ccSmp153739 ovsec_kadm_principal_ent_t ent, 70856a424ccSmp153739 long mask); 70956a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_rename_principal(void *server_handle, 71056a424ccSmp153739 krb5_principal,krb5_principal); 71156a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_principal(void *server_handle, 71256a424ccSmp153739 krb5_principal principal, 71356a424ccSmp153739 ovsec_kadm_principal_ent_t *ent); 71456a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_chpass_principal(void *server_handle, 71556a424ccSmp153739 krb5_principal principal, 71656a424ccSmp153739 char *pass); 71756a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_randkey_principal(void *server_handle, 71856a424ccSmp153739 krb5_principal principal, 71956a424ccSmp153739 krb5_keyblock **keyblock); 72056a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_create_policy(void *server_handle, 72156a424ccSmp153739 ovsec_kadm_policy_ent_t ent, 72256a424ccSmp153739 long mask); 72356a424ccSmp153739 /* 72456a424ccSmp153739 * ovsec_kadm_create_policy_internal is not part of the supported, 72556a424ccSmp153739 * exposed API. It is available only in the server library, and you 72656a424ccSmp153739 * shouldn't use it unless you know why it's there and how it's 72756a424ccSmp153739 * different from ovsec_kadm_create_policy. 72856a424ccSmp153739 */ 72956a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_create_policy_internal(void *server_handle, 73056a424ccSmp153739 ovsec_kadm_policy_ent_t 73156a424ccSmp153739 entry, long mask); 73256a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_delete_policy(void *server_handle, 73356a424ccSmp153739 ovsec_kadm_policy_t policy); 73456a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_modify_policy(void *server_handle, 73556a424ccSmp153739 ovsec_kadm_policy_ent_t ent, 73656a424ccSmp153739 long mask); 73756a424ccSmp153739 /* 73856a424ccSmp153739 * ovsec_kadm_modify_policy_internal is not part of the supported, 73956a424ccSmp153739 * exposed API. It is available only in the server library, and you 74056a424ccSmp153739 * shouldn't use it unless you know why it's there and how it's 74156a424ccSmp153739 * different from ovsec_kadm_modify_policy. 74256a424ccSmp153739 */ 74356a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_modify_policy_internal(void *server_handle, 74456a424ccSmp153739 ovsec_kadm_policy_ent_t 74556a424ccSmp153739 entry, long mask); 74656a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_policy(void *server_handle, 74756a424ccSmp153739 ovsec_kadm_policy_t policy, 74856a424ccSmp153739 ovsec_kadm_policy_ent_t *ent); 74956a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_privs(void *server_handle, 75056a424ccSmp153739 long *privs); 75156a424ccSmp153739 75256a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_chpass_principal_util(void *server_handle, 75356a424ccSmp153739 krb5_principal princ, 75456a424ccSmp153739 char *new_pw, 75556a424ccSmp153739 char **ret_pw, 75656a424ccSmp153739 char *msg_ret); 75756a424ccSmp153739 75856a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_free_principal_ent(void *server_handle, 75956a424ccSmp153739 ovsec_kadm_principal_ent_t 76056a424ccSmp153739 ent); 76156a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_free_policy_ent(void *server_handle, 76256a424ccSmp153739 ovsec_kadm_policy_ent_t ent); 76356a424ccSmp153739 76456a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_free_name_list(void *server_handle, 7657c478bd9Sstevel@tonic-gate char **names, int count); 7667c478bd9Sstevel@tonic-gate 76756a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_principals(void *server_handle, 76856a424ccSmp153739 char *exp, char ***princs, 76956a424ccSmp153739 int *count); 77056a424ccSmp153739 77156a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_policies(void *server_handle, 77256a424ccSmp153739 char *exp, char ***pols, 77356a424ccSmp153739 int *count); 77456a424ccSmp153739 77556a424ccSmp153739 #define OVSEC_KADM_FAILURE KADM5_FAILURE 77656a424ccSmp153739 #define OVSEC_KADM_AUTH_GET KADM5_AUTH_GET 77756a424ccSmp153739 #define OVSEC_KADM_AUTH_ADD KADM5_AUTH_ADD 77856a424ccSmp153739 #define OVSEC_KADM_AUTH_MODIFY KADM5_AUTH_MODIFY 77956a424ccSmp153739 #define OVSEC_KADM_AUTH_DELETE KADM5_AUTH_DELETE 78056a424ccSmp153739 #define OVSEC_KADM_AUTH_INSUFFICIENT KADM5_AUTH_INSUFFICIENT 78156a424ccSmp153739 #define OVSEC_KADM_BAD_DB KADM5_BAD_DB 78256a424ccSmp153739 #define OVSEC_KADM_DUP KADM5_DUP 78356a424ccSmp153739 #define OVSEC_KADM_RPC_ERROR KADM5_RPC_ERROR 78456a424ccSmp153739 #define OVSEC_KADM_NO_SRV KADM5_NO_SRV 78556a424ccSmp153739 #define OVSEC_KADM_BAD_HIST_KEY KADM5_BAD_HIST_KEY 78656a424ccSmp153739 #define OVSEC_KADM_NOT_INIT KADM5_NOT_INIT 78756a424ccSmp153739 #define OVSEC_KADM_UNK_PRINC KADM5_UNK_PRINC 78856a424ccSmp153739 #define OVSEC_KADM_UNK_POLICY KADM5_UNK_POLICY 78956a424ccSmp153739 #define OVSEC_KADM_BAD_MASK KADM5_BAD_MASK 79056a424ccSmp153739 #define OVSEC_KADM_BAD_CLASS KADM5_BAD_CLASS 79156a424ccSmp153739 #define OVSEC_KADM_BAD_LENGTH KADM5_BAD_LENGTH 79256a424ccSmp153739 #define OVSEC_KADM_BAD_POLICY KADM5_BAD_POLICY 79356a424ccSmp153739 #define OVSEC_KADM_BAD_PRINCIPAL KADM5_BAD_PRINCIPAL 79456a424ccSmp153739 #define OVSEC_KADM_BAD_AUX_ATTR KADM5_BAD_AUX_ATTR 79556a424ccSmp153739 #define OVSEC_KADM_BAD_HISTORY KADM5_BAD_HISTORY 79656a424ccSmp153739 #define OVSEC_KADM_BAD_MIN_PASS_LIFE KADM5_BAD_MIN_PASS_LIFE 79756a424ccSmp153739 #define OVSEC_KADM_PASS_Q_TOOSHORT KADM5_PASS_Q_TOOSHORT 79856a424ccSmp153739 #define OVSEC_KADM_PASS_Q_CLASS KADM5_PASS_Q_CLASS 79956a424ccSmp153739 #define OVSEC_KADM_PASS_Q_DICT KADM5_PASS_Q_DICT 80056a424ccSmp153739 #define OVSEC_KADM_PASS_REUSE KADM5_PASS_REUSE 80156a424ccSmp153739 #define OVSEC_KADM_PASS_TOOSOON KADM5_PASS_TOOSOON 80256a424ccSmp153739 #define OVSEC_KADM_POLICY_REF KADM5_POLICY_REF 80356a424ccSmp153739 #define OVSEC_KADM_INIT KADM5_INIT 80456a424ccSmp153739 #define OVSEC_KADM_BAD_PASSWORD KADM5_BAD_PASSWORD 80556a424ccSmp153739 #define OVSEC_KADM_PROTECT_PRINCIPAL KADM5_PROTECT_PRINCIPAL 80656a424ccSmp153739 #define OVSEC_KADM_BAD_SERVER_HANDLE KADM5_BAD_SERVER_HANDLE 80756a424ccSmp153739 #define OVSEC_KADM_BAD_STRUCT_VERSION KADM5_BAD_STRUCT_VERSION 80856a424ccSmp153739 #define OVSEC_KADM_OLD_STRUCT_VERSION KADM5_OLD_STRUCT_VERSION 80956a424ccSmp153739 #define OVSEC_KADM_NEW_STRUCT_VERSION KADM5_NEW_STRUCT_VERSION 81056a424ccSmp153739 #define OVSEC_KADM_BAD_API_VERSION KADM5_BAD_API_VERSION 81156a424ccSmp153739 #define OVSEC_KADM_OLD_LIB_API_VERSION KADM5_OLD_LIB_API_VERSION 81256a424ccSmp153739 #define OVSEC_KADM_OLD_SERVER_API_VERSION KADM5_OLD_SERVER_API_VERSION 81356a424ccSmp153739 #define OVSEC_KADM_NEW_LIB_API_VERSION KADM5_NEW_LIB_API_VERSION 81456a424ccSmp153739 #define OVSEC_KADM_NEW_SERVER_API_VERSION KADM5_NEW_SERVER_API_VERSION 81556a424ccSmp153739 #define OVSEC_KADM_SECURE_PRINC_MISSING KADM5_SECURE_PRINC_MISSING 81656a424ccSmp153739 #define OVSEC_KADM_NO_RENAME_SALT KADM5_NO_RENAME_SALT 81756a424ccSmp153739 81856a424ccSmp153739 #endif /* USE_KADM5_API_VERSION == 1 */ 8197c478bd9Sstevel@tonic-gate 820*46736d35Ssemery #define MAXPRINCLEN 125 821*46736d35Ssemery 822*46736d35Ssemery void trunc_name(size_t *len, char **dots); 823*46736d35Ssemery 8247c478bd9Sstevel@tonic-gate krb5_chgpwd_prot _kadm5_get_kpasswd_protocol(void *server_handle); 8257c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_chpass_principal_v2(void *server_handle, 8267c478bd9Sstevel@tonic-gate krb5_principal princ, 8277c478bd9Sstevel@tonic-gate char *new_password, 8287c478bd9Sstevel@tonic-gate kadm5_ret_t *srvr_rsp_code, 8297c478bd9Sstevel@tonic-gate krb5_data *srvr_msg); 8307c478bd9Sstevel@tonic-gate 8317c478bd9Sstevel@tonic-gate void handle_chpw(krb5_context context, int s, void *serverhandle, 8327c478bd9Sstevel@tonic-gate kadm5_config_params *params); 8337c478bd9Sstevel@tonic-gate 8347c478bd9Sstevel@tonic-gate #ifdef __cplusplus 8357c478bd9Sstevel@tonic-gate } 8367c478bd9Sstevel@tonic-gate #endif 8377c478bd9Sstevel@tonic-gate 8387c478bd9Sstevel@tonic-gate #endif /* __KADM5_ADMIN_H__ */ 839