17c478bd9Sstevel@tonic-gate /* 2*56a424ccSmp153739 * Copyright 2006 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 */ 31*56a424ccSmp153739 /* 32*56a424ccSmp153739 * lib/kadm5/admin.h 33*56a424ccSmp153739 * 34*56a424ccSmp153739 * Copyright 2001 by the Massachusetts Institute of Technology. 35*56a424ccSmp153739 * All Rights Reserved. 36*56a424ccSmp153739 * 37*56a424ccSmp153739 * Export of this software from the United States of America may 38*56a424ccSmp153739 * require a specific license from the United States Government. 39*56a424ccSmp153739 * It is the responsibility of any person or organization contemplating 40*56a424ccSmp153739 * export to obtain such a license before exporting. 41*56a424ccSmp153739 * 42*56a424ccSmp153739 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 43*56a424ccSmp153739 * distribute this software and its documentation for any purpose and 44*56a424ccSmp153739 * without fee is hereby granted, provided that the above copyright 45*56a424ccSmp153739 * notice appear in all copies and that both that copyright notice and 46*56a424ccSmp153739 * this permission notice appear in supporting documentation, and that 47*56a424ccSmp153739 * the name of M.I.T. not be used in advertising or publicity pertaining 48*56a424ccSmp153739 * to distribution of the software without specific, written prior 49*56a424ccSmp153739 * permission. Furthermore if you modify this software you must label 50*56a424ccSmp153739 * your software as modified software and not distribute it in such a 51*56a424ccSmp153739 * fashion that it might be confused with the original M.I.T. software. 52*56a424ccSmp153739 * M.I.T. makes no representations about the suitability of 53*56a424ccSmp153739 * this software for any purpose. It is provided "as is" without express 54*56a424ccSmp153739 * or implied warranty. 55*56a424ccSmp153739 * 56*56a424ccSmp153739 */ 577c478bd9Sstevel@tonic-gate /* 587c478bd9Sstevel@tonic-gate * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved 597c478bd9Sstevel@tonic-gate * 60*56a424ccSmp153739 * $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 \ 89*56a424ccSmp153739 (error_message(CHPASS_UTIL_NEW_PASSWORD_PROMPT)) 907c478bd9Sstevel@tonic-gate #define KADM5_PW_SECOND_PROMPT \ 91*56a424ccSmp153739 (error_message(CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT)) 927c478bd9Sstevel@tonic-gate 937c478bd9Sstevel@tonic-gate /* 94*56a424ccSmp153739 * 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 243*56a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 244*56a424ccSmp153739 typedef struct _kadm5_principal_ent_t_v1 245*56a424ccSmp153739 kadm5_principal_ent_rec, *kadm5_principal_ent_t; 246*56a424ccSmp153739 #else 2477c478bd9Sstevel@tonic-gate typedef struct _kadm5_principal_ent_t_v2 2487c478bd9Sstevel@tonic-gate kadm5_principal_ent_rec, *kadm5_principal_ent_t; 249*56a424ccSmp153739 #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; 283*56a424ccSmp153739 int kpasswd_port; 284*56a424ccSmp153739 2857c478bd9Sstevel@tonic-gate char * admin_server; 286*56a424ccSmp153739 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; 293*56a424ccSmp153739 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; 305*56a424ccSmp153739 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; 336*56a424ccSmp153739 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; 343*56a424ccSmp153739 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 359*56a424ccSmp153739 #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 371*56a424ccSmp153739 krb5_error_code kadm5_get_admin_service_name(krb5_context, char *, 372*56a424ccSmp153739 char *, size_t); 373*56a424ccSmp153739 #endif 374*56a424ccSmp153739 3757c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_init(char *client_name, char *pass, 3767c478bd9Sstevel@tonic-gate char *service_name, 377*56a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 378*56a424ccSmp153739 char *realm, 379*56a424ccSmp153739 #else 3807c478bd9Sstevel@tonic-gate kadm5_config_params *params, 381*56a424ccSmp153739 #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, 388*56a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 389*56a424ccSmp153739 char *realm, 390*56a424ccSmp153739 #else 3917c478bd9Sstevel@tonic-gate kadm5_config_params *params, 392*56a424ccSmp153739 #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, 399*56a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 400*56a424ccSmp153739 char *realm, 401*56a424ccSmp153739 #else 4027c478bd9Sstevel@tonic-gate kadm5_config_params *params, 403*56a424ccSmp153739 #endif 4047c478bd9Sstevel@tonic-gate krb5_ui_4 struct_version, 4057c478bd9Sstevel@tonic-gate krb5_ui_4 api_version, 4067c478bd9Sstevel@tonic-gate void **server_handle); 407*56a424ccSmp153739 #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); 415*56a424ccSmp153739 #endif 416*56a424ccSmp153739 kadm5_ret_t kadm5_lock(void *server_handle); 417*56a424ccSmp153739 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); 436*56a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 437*56a424ccSmp153739 kadm5_ret_t kadm5_get_principal(void *server_handle, 438*56a424ccSmp153739 krb5_principal principal, 439*56a424ccSmp153739 kadm5_principal_ent_t *ent); 440*56a424ccSmp153739 #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); 445*56a424ccSmp153739 #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); 455*56a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 456*56a424ccSmp153739 kadm5_ret_t kadm5_randkey_principal(void *server_handle, 457*56a424ccSmp153739 krb5_principal principal, 458*56a424ccSmp153739 krb5_keyblock **keyblock); 459*56a424ccSmp153739 #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); 481*56a424ccSmp153739 #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 499*56a424ccSmp153739 kadm5_ret_t kadm5_decrypt_key(void *server_handle, 500*56a424ccSmp153739 kadm5_principal_ent_t entry, krb5_int32 501*56a424ccSmp153739 ktype, krb5_int32 stype, krb5_int32 502*56a424ccSmp153739 kvno, krb5_keyblock *keyblock, 503*56a424ccSmp153739 krb5_keysalt *keysalt, int *kvnop); 504*56a424ccSmp153739 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); 531*56a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 532*56a424ccSmp153739 kadm5_ret_t kadm5_get_policy(void *server_handle, 533*56a424ccSmp153739 kadm5_policy_t policy, 534*56a424ccSmp153739 kadm5_policy_ent_t *ent); 535*56a424ccSmp153739 #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); 539*56a424ccSmp153739 #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, 548*56a424ccSmp153739 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 564*56a424ccSmp153739 #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); 568*56a424ccSmp153739 #endif 5697c478bd9Sstevel@tonic-gate 570*56a424ccSmp153739 kadm5_ret_t kadm5_free_name_list(void *server_handle, char **names, 571*56a424ccSmp153739 int count); 572*56a424ccSmp153739 573*56a424ccSmp153739 #if USE_KADM5_API_VERSION == 1 574*56a424ccSmp153739 /* 575*56a424ccSmp153739 * OVSEC_KADM_API_VERSION_1 should be, if possible, compile-time 576*56a424ccSmp153739 * compatible with KADM5_API_VERSION_2. Basically, this means we have 577*56a424ccSmp153739 * to continue to provide all the old ovsec_kadm function and symbol 578*56a424ccSmp153739 * names. 579*56a424ccSmp153739 */ 580*56a424ccSmp153739 581*56a424ccSmp153739 #define OVSEC_KADM_ACLFILE "/krb5/ovsec_adm.acl" 582*56a424ccSmp153739 #define OVSEC_KADM_WORDFILE "/krb5/ovsec_adm.dict" 583*56a424ccSmp153739 584*56a424ccSmp153739 #define OVSEC_KADM_ADMIN_SERVICE "ovsec_adm/admin" 585*56a424ccSmp153739 #define OVSEC_KADM_CHANGEPW_SERVICE "ovsec_adm/changepw" 586*56a424ccSmp153739 #define OVSEC_KADM_HIST_PRINCIPAL "ovsec_adm/history" 587*56a424ccSmp153739 588*56a424ccSmp153739 typedef krb5_principal ovsec_kadm_princ_t; 589*56a424ccSmp153739 typedef krb5_keyblock ovsec_kadm_keyblock; 590*56a424ccSmp153739 typedef char *ovsec_kadm_policy_t; 591*56a424ccSmp153739 typedef long ovsec_kadm_ret_t; 592*56a424ccSmp153739 593*56a424ccSmp153739 enum ovsec_kadm_salttype { OVSEC_KADM_SALT_V4, OVSEC_KADM_SALT_NORMAL }; 594*56a424ccSmp153739 enum ovsec_kadm_saltmod { OVSEC_KADM_MOD_KEEP, OVSEC_KADM_MOD_V4, OVSEC_KADM_MOD_NORMAL }; 595*56a424ccSmp153739 596*56a424ccSmp153739 #define OVSEC_KADM_PW_FIRST_PROMPT \ 597*56a424ccSmp153739 ((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_PROMPT)) 598*56a424ccSmp153739 #define OVSEC_KADM_PW_SECOND_PROMPT \ 599*56a424ccSmp153739 ((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT)) 600*56a424ccSmp153739 601*56a424ccSmp153739 /* 602*56a424ccSmp153739 * Successful return code 603*56a424ccSmp153739 */ 604*56a424ccSmp153739 #define OVSEC_KADM_OK 0 605*56a424ccSmp153739 606*56a424ccSmp153739 /* 607*56a424ccSmp153739 * Create/Modify masks 608*56a424ccSmp153739 */ 609*56a424ccSmp153739 /* principal */ 610*56a424ccSmp153739 #define OVSEC_KADM_PRINCIPAL 0x000001 611*56a424ccSmp153739 #define OVSEC_KADM_PRINC_EXPIRE_TIME 0x000002 612*56a424ccSmp153739 #define OVSEC_KADM_PW_EXPIRATION 0x000004 613*56a424ccSmp153739 #define OVSEC_KADM_LAST_PWD_CHANGE 0x000008 614*56a424ccSmp153739 #define OVSEC_KADM_ATTRIBUTES 0x000010 615*56a424ccSmp153739 #define OVSEC_KADM_MAX_LIFE 0x000020 616*56a424ccSmp153739 #define OVSEC_KADM_MOD_TIME 0x000040 617*56a424ccSmp153739 #define OVSEC_KADM_MOD_NAME 0x000080 618*56a424ccSmp153739 #define OVSEC_KADM_KVNO 0x000100 619*56a424ccSmp153739 #define OVSEC_KADM_MKVNO 0x000200 620*56a424ccSmp153739 #define OVSEC_KADM_AUX_ATTRIBUTES 0x000400 621*56a424ccSmp153739 #define OVSEC_KADM_POLICY 0x000800 622*56a424ccSmp153739 #define OVSEC_KADM_POLICY_CLR 0x001000 623*56a424ccSmp153739 /* policy */ 624*56a424ccSmp153739 #define OVSEC_KADM_PW_MAX_LIFE 0x004000 625*56a424ccSmp153739 #define OVSEC_KADM_PW_MIN_LIFE 0x008000 626*56a424ccSmp153739 #define OVSEC_KADM_PW_MIN_LENGTH 0x010000 627*56a424ccSmp153739 #define OVSEC_KADM_PW_MIN_CLASSES 0x020000 628*56a424ccSmp153739 #define OVSEC_KADM_PW_HISTORY_NUM 0x040000 629*56a424ccSmp153739 #define OVSEC_KADM_REF_COUNT 0x080000 630*56a424ccSmp153739 631*56a424ccSmp153739 /* 632*56a424ccSmp153739 * permission bits 633*56a424ccSmp153739 */ 634*56a424ccSmp153739 #define OVSEC_KADM_PRIV_GET 0x01 635*56a424ccSmp153739 #define OVSEC_KADM_PRIV_ADD 0x02 636*56a424ccSmp153739 #define OVSEC_KADM_PRIV_MODIFY 0x04 637*56a424ccSmp153739 #define OVSEC_KADM_PRIV_DELETE 0x08 638*56a424ccSmp153739 639*56a424ccSmp153739 /* 640*56a424ccSmp153739 * API versioning constants 641*56a424ccSmp153739 */ 642*56a424ccSmp153739 #define OVSEC_KADM_MASK_BITS 0xffffff00 643*56a424ccSmp153739 644*56a424ccSmp153739 #define OVSEC_KADM_STRUCT_VERSION_MASK 0x12345600 645*56a424ccSmp153739 #define OVSEC_KADM_STRUCT_VERSION_1 (OVSEC_KADM_STRUCT_VERSION_MASK|0x01) 646*56a424ccSmp153739 #define OVSEC_KADM_STRUCT_VERSION OVSEC_KADM_STRUCT_VERSION_1 647*56a424ccSmp153739 648*56a424ccSmp153739 #define OVSEC_KADM_API_VERSION_MASK 0x12345700 649*56a424ccSmp153739 #define OVSEC_KADM_API_VERSION_1 (OVSEC_KADM_API_VERSION_MASK|0x01) 650*56a424ccSmp153739 651*56a424ccSmp153739 652*56a424ccSmp153739 typedef struct _ovsec_kadm_principal_ent_t { 653*56a424ccSmp153739 krb5_principal principal; 654*56a424ccSmp153739 krb5_timestamp princ_expire_time; 655*56a424ccSmp153739 krb5_timestamp last_pwd_change; 656*56a424ccSmp153739 krb5_timestamp pw_expiration; 657*56a424ccSmp153739 krb5_deltat max_life; 658*56a424ccSmp153739 krb5_principal mod_name; 659*56a424ccSmp153739 krb5_timestamp mod_date; 660*56a424ccSmp153739 krb5_flags attributes; 661*56a424ccSmp153739 krb5_kvno kvno; 662*56a424ccSmp153739 krb5_kvno mkvno; 663*56a424ccSmp153739 char *policy; 664*56a424ccSmp153739 long aux_attributes; 665*56a424ccSmp153739 } ovsec_kadm_principal_ent_rec, *ovsec_kadm_principal_ent_t; 666*56a424ccSmp153739 667*56a424ccSmp153739 typedef struct _ovsec_kadm_policy_ent_t { 668*56a424ccSmp153739 char *policy; 669*56a424ccSmp153739 long pw_min_life; 670*56a424ccSmp153739 long pw_max_life; 671*56a424ccSmp153739 long pw_min_length; 672*56a424ccSmp153739 long pw_min_classes; 673*56a424ccSmp153739 long pw_history_num; 674*56a424ccSmp153739 long policy_refcnt; 675*56a424ccSmp153739 } ovsec_kadm_policy_ent_rec, *ovsec_kadm_policy_ent_t; 676*56a424ccSmp153739 677*56a424ccSmp153739 /* 678*56a424ccSmp153739 * functions 679*56a424ccSmp153739 */ 680*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_init(char *client_name, char *pass, 681*56a424ccSmp153739 char *service_name, char *realm, 682*56a424ccSmp153739 krb5_ui_4 struct_version, 683*56a424ccSmp153739 krb5_ui_4 api_version, 684*56a424ccSmp153739 void **server_handle); 685*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_init_with_password(char *client_name, 686*56a424ccSmp153739 char *pass, 687*56a424ccSmp153739 char *service_name, 688*56a424ccSmp153739 char *realm, 689*56a424ccSmp153739 krb5_ui_4 struct_version, 690*56a424ccSmp153739 krb5_ui_4 api_version, 691*56a424ccSmp153739 void **server_handle); 692*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_init_with_skey(char *client_name, 693*56a424ccSmp153739 char *keytab, 694*56a424ccSmp153739 char *service_name, 695*56a424ccSmp153739 char *realm, 696*56a424ccSmp153739 krb5_ui_4 struct_version, 697*56a424ccSmp153739 krb5_ui_4 api_version, 698*56a424ccSmp153739 void **server_handle); 699*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_flush(void *server_handle); 700*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_destroy(void *server_handle); 701*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_create_principal(void *server_handle, 702*56a424ccSmp153739 ovsec_kadm_principal_ent_t ent, 703*56a424ccSmp153739 long mask, char *pass); 704*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_delete_principal(void *server_handle, 705*56a424ccSmp153739 krb5_principal principal); 706*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_modify_principal(void *server_handle, 707*56a424ccSmp153739 ovsec_kadm_principal_ent_t ent, 708*56a424ccSmp153739 long mask); 709*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_rename_principal(void *server_handle, 710*56a424ccSmp153739 krb5_principal,krb5_principal); 711*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_principal(void *server_handle, 712*56a424ccSmp153739 krb5_principal principal, 713*56a424ccSmp153739 ovsec_kadm_principal_ent_t *ent); 714*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_chpass_principal(void *server_handle, 715*56a424ccSmp153739 krb5_principal principal, 716*56a424ccSmp153739 char *pass); 717*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_randkey_principal(void *server_handle, 718*56a424ccSmp153739 krb5_principal principal, 719*56a424ccSmp153739 krb5_keyblock **keyblock); 720*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_create_policy(void *server_handle, 721*56a424ccSmp153739 ovsec_kadm_policy_ent_t ent, 722*56a424ccSmp153739 long mask); 723*56a424ccSmp153739 /* 724*56a424ccSmp153739 * ovsec_kadm_create_policy_internal is not part of the supported, 725*56a424ccSmp153739 * exposed API. It is available only in the server library, and you 726*56a424ccSmp153739 * shouldn't use it unless you know why it's there and how it's 727*56a424ccSmp153739 * different from ovsec_kadm_create_policy. 728*56a424ccSmp153739 */ 729*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_create_policy_internal(void *server_handle, 730*56a424ccSmp153739 ovsec_kadm_policy_ent_t 731*56a424ccSmp153739 entry, long mask); 732*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_delete_policy(void *server_handle, 733*56a424ccSmp153739 ovsec_kadm_policy_t policy); 734*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_modify_policy(void *server_handle, 735*56a424ccSmp153739 ovsec_kadm_policy_ent_t ent, 736*56a424ccSmp153739 long mask); 737*56a424ccSmp153739 /* 738*56a424ccSmp153739 * ovsec_kadm_modify_policy_internal is not part of the supported, 739*56a424ccSmp153739 * exposed API. It is available only in the server library, and you 740*56a424ccSmp153739 * shouldn't use it unless you know why it's there and how it's 741*56a424ccSmp153739 * different from ovsec_kadm_modify_policy. 742*56a424ccSmp153739 */ 743*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_modify_policy_internal(void *server_handle, 744*56a424ccSmp153739 ovsec_kadm_policy_ent_t 745*56a424ccSmp153739 entry, long mask); 746*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_policy(void *server_handle, 747*56a424ccSmp153739 ovsec_kadm_policy_t policy, 748*56a424ccSmp153739 ovsec_kadm_policy_ent_t *ent); 749*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_privs(void *server_handle, 750*56a424ccSmp153739 long *privs); 751*56a424ccSmp153739 752*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_chpass_principal_util(void *server_handle, 753*56a424ccSmp153739 krb5_principal princ, 754*56a424ccSmp153739 char *new_pw, 755*56a424ccSmp153739 char **ret_pw, 756*56a424ccSmp153739 char *msg_ret); 757*56a424ccSmp153739 758*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_free_principal_ent(void *server_handle, 759*56a424ccSmp153739 ovsec_kadm_principal_ent_t 760*56a424ccSmp153739 ent); 761*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_free_policy_ent(void *server_handle, 762*56a424ccSmp153739 ovsec_kadm_policy_ent_t ent); 763*56a424ccSmp153739 764*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_free_name_list(void *server_handle, 7657c478bd9Sstevel@tonic-gate char **names, int count); 7667c478bd9Sstevel@tonic-gate 767*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_principals(void *server_handle, 768*56a424ccSmp153739 char *exp, char ***princs, 769*56a424ccSmp153739 int *count); 770*56a424ccSmp153739 771*56a424ccSmp153739 ovsec_kadm_ret_t ovsec_kadm_get_policies(void *server_handle, 772*56a424ccSmp153739 char *exp, char ***pols, 773*56a424ccSmp153739 int *count); 774*56a424ccSmp153739 775*56a424ccSmp153739 #define OVSEC_KADM_FAILURE KADM5_FAILURE 776*56a424ccSmp153739 #define OVSEC_KADM_AUTH_GET KADM5_AUTH_GET 777*56a424ccSmp153739 #define OVSEC_KADM_AUTH_ADD KADM5_AUTH_ADD 778*56a424ccSmp153739 #define OVSEC_KADM_AUTH_MODIFY KADM5_AUTH_MODIFY 779*56a424ccSmp153739 #define OVSEC_KADM_AUTH_DELETE KADM5_AUTH_DELETE 780*56a424ccSmp153739 #define OVSEC_KADM_AUTH_INSUFFICIENT KADM5_AUTH_INSUFFICIENT 781*56a424ccSmp153739 #define OVSEC_KADM_BAD_DB KADM5_BAD_DB 782*56a424ccSmp153739 #define OVSEC_KADM_DUP KADM5_DUP 783*56a424ccSmp153739 #define OVSEC_KADM_RPC_ERROR KADM5_RPC_ERROR 784*56a424ccSmp153739 #define OVSEC_KADM_NO_SRV KADM5_NO_SRV 785*56a424ccSmp153739 #define OVSEC_KADM_BAD_HIST_KEY KADM5_BAD_HIST_KEY 786*56a424ccSmp153739 #define OVSEC_KADM_NOT_INIT KADM5_NOT_INIT 787*56a424ccSmp153739 #define OVSEC_KADM_UNK_PRINC KADM5_UNK_PRINC 788*56a424ccSmp153739 #define OVSEC_KADM_UNK_POLICY KADM5_UNK_POLICY 789*56a424ccSmp153739 #define OVSEC_KADM_BAD_MASK KADM5_BAD_MASK 790*56a424ccSmp153739 #define OVSEC_KADM_BAD_CLASS KADM5_BAD_CLASS 791*56a424ccSmp153739 #define OVSEC_KADM_BAD_LENGTH KADM5_BAD_LENGTH 792*56a424ccSmp153739 #define OVSEC_KADM_BAD_POLICY KADM5_BAD_POLICY 793*56a424ccSmp153739 #define OVSEC_KADM_BAD_PRINCIPAL KADM5_BAD_PRINCIPAL 794*56a424ccSmp153739 #define OVSEC_KADM_BAD_AUX_ATTR KADM5_BAD_AUX_ATTR 795*56a424ccSmp153739 #define OVSEC_KADM_BAD_HISTORY KADM5_BAD_HISTORY 796*56a424ccSmp153739 #define OVSEC_KADM_BAD_MIN_PASS_LIFE KADM5_BAD_MIN_PASS_LIFE 797*56a424ccSmp153739 #define OVSEC_KADM_PASS_Q_TOOSHORT KADM5_PASS_Q_TOOSHORT 798*56a424ccSmp153739 #define OVSEC_KADM_PASS_Q_CLASS KADM5_PASS_Q_CLASS 799*56a424ccSmp153739 #define OVSEC_KADM_PASS_Q_DICT KADM5_PASS_Q_DICT 800*56a424ccSmp153739 #define OVSEC_KADM_PASS_REUSE KADM5_PASS_REUSE 801*56a424ccSmp153739 #define OVSEC_KADM_PASS_TOOSOON KADM5_PASS_TOOSOON 802*56a424ccSmp153739 #define OVSEC_KADM_POLICY_REF KADM5_POLICY_REF 803*56a424ccSmp153739 #define OVSEC_KADM_INIT KADM5_INIT 804*56a424ccSmp153739 #define OVSEC_KADM_BAD_PASSWORD KADM5_BAD_PASSWORD 805*56a424ccSmp153739 #define OVSEC_KADM_PROTECT_PRINCIPAL KADM5_PROTECT_PRINCIPAL 806*56a424ccSmp153739 #define OVSEC_KADM_BAD_SERVER_HANDLE KADM5_BAD_SERVER_HANDLE 807*56a424ccSmp153739 #define OVSEC_KADM_BAD_STRUCT_VERSION KADM5_BAD_STRUCT_VERSION 808*56a424ccSmp153739 #define OVSEC_KADM_OLD_STRUCT_VERSION KADM5_OLD_STRUCT_VERSION 809*56a424ccSmp153739 #define OVSEC_KADM_NEW_STRUCT_VERSION KADM5_NEW_STRUCT_VERSION 810*56a424ccSmp153739 #define OVSEC_KADM_BAD_API_VERSION KADM5_BAD_API_VERSION 811*56a424ccSmp153739 #define OVSEC_KADM_OLD_LIB_API_VERSION KADM5_OLD_LIB_API_VERSION 812*56a424ccSmp153739 #define OVSEC_KADM_OLD_SERVER_API_VERSION KADM5_OLD_SERVER_API_VERSION 813*56a424ccSmp153739 #define OVSEC_KADM_NEW_LIB_API_VERSION KADM5_NEW_LIB_API_VERSION 814*56a424ccSmp153739 #define OVSEC_KADM_NEW_SERVER_API_VERSION KADM5_NEW_SERVER_API_VERSION 815*56a424ccSmp153739 #define OVSEC_KADM_SECURE_PRINC_MISSING KADM5_SECURE_PRINC_MISSING 816*56a424ccSmp153739 #define OVSEC_KADM_NO_RENAME_SALT KADM5_NO_RENAME_SALT 817*56a424ccSmp153739 818*56a424ccSmp153739 #endif /* USE_KADM5_API_VERSION == 1 */ 8197c478bd9Sstevel@tonic-gate 8207c478bd9Sstevel@tonic-gate krb5_chgpwd_prot _kadm5_get_kpasswd_protocol(void *server_handle); 8217c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_chpass_principal_v2(void *server_handle, 8227c478bd9Sstevel@tonic-gate krb5_principal princ, 8237c478bd9Sstevel@tonic-gate char *new_password, 8247c478bd9Sstevel@tonic-gate kadm5_ret_t *srvr_rsp_code, 8257c478bd9Sstevel@tonic-gate krb5_data *srvr_msg); 8267c478bd9Sstevel@tonic-gate 8277c478bd9Sstevel@tonic-gate void handle_chpw(krb5_context context, int s, void *serverhandle, 8287c478bd9Sstevel@tonic-gate kadm5_config_params *params); 8297c478bd9Sstevel@tonic-gate 8307c478bd9Sstevel@tonic-gate #ifdef __cplusplus 8317c478bd9Sstevel@tonic-gate } 8327c478bd9Sstevel@tonic-gate #endif 8337c478bd9Sstevel@tonic-gate 8347c478bd9Sstevel@tonic-gate #endif /* __KADM5_ADMIN_H__ */ 835