10Sstevel@tonic-gate /* 2*12253SPeter.Shoults@Sun.COM * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 30Sstevel@tonic-gate */ 40Sstevel@tonic-gate 50Sstevel@tonic-gate #ifndef __KADM5_ADMIN_H__ 60Sstevel@tonic-gate #define __KADM5_ADMIN_H__ 70Sstevel@tonic-gate 80Sstevel@tonic-gate 90Sstevel@tonic-gate #ifdef __cplusplus 100Sstevel@tonic-gate extern "C" { 110Sstevel@tonic-gate #endif 120Sstevel@tonic-gate 130Sstevel@tonic-gate /* 140Sstevel@tonic-gate * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 150Sstevel@tonic-gate * 160Sstevel@tonic-gate * Openvision retains the copyright to derivative works of 170Sstevel@tonic-gate * this source code. Do *NOT* create a derivative of this 180Sstevel@tonic-gate * source code before consulting with your legal department. 190Sstevel@tonic-gate * Do *NOT* integrate *ANY* of this source code into another 200Sstevel@tonic-gate * product before consulting with your legal department. 210Sstevel@tonic-gate * 220Sstevel@tonic-gate * For further information, read the top-level Openvision 230Sstevel@tonic-gate * copyright which is contained in the top-level MIT Kerberos 240Sstevel@tonic-gate * copyright. 250Sstevel@tonic-gate * 260Sstevel@tonic-gate * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 270Sstevel@tonic-gate * 280Sstevel@tonic-gate */ 292881Smp153739 /* 302881Smp153739 * lib/kadm5/admin.h 312881Smp153739 * 322881Smp153739 * Copyright 2001 by the Massachusetts Institute of Technology. 332881Smp153739 * All Rights Reserved. 342881Smp153739 * 352881Smp153739 * Export of this software from the United States of America may 362881Smp153739 * require a specific license from the United States Government. 372881Smp153739 * It is the responsibility of any person or organization contemplating 382881Smp153739 * export to obtain such a license before exporting. 392881Smp153739 * 402881Smp153739 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 412881Smp153739 * distribute this software and its documentation for any purpose and 422881Smp153739 * without fee is hereby granted, provided that the above copyright 432881Smp153739 * notice appear in all copies and that both that copyright notice and 442881Smp153739 * this permission notice appear in supporting documentation, and that 452881Smp153739 * the name of M.I.T. not be used in advertising or publicity pertaining 462881Smp153739 * to distribution of the software without specific, written prior 472881Smp153739 * permission. Furthermore if you modify this software you must label 482881Smp153739 * your software as modified software and not distribute it in such a 492881Smp153739 * fashion that it might be confused with the original M.I.T. software. 502881Smp153739 * M.I.T. makes no representations about the suitability of 512881Smp153739 * this software for any purpose. It is provided "as is" without express 522881Smp153739 * or implied warranty. 532881Smp153739 * 542881Smp153739 */ 550Sstevel@tonic-gate /* 560Sstevel@tonic-gate * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved 570Sstevel@tonic-gate * 584960Swillf * $Header$ 590Sstevel@tonic-gate */ 600Sstevel@tonic-gate 610Sstevel@tonic-gate #include <sys/types.h> 620Sstevel@tonic-gate #include <rpc/types.h> 630Sstevel@tonic-gate #include <rpc/rpc.h> 647934SMark.Phalan@Sun.COM #include <k5-int.h> 650Sstevel@tonic-gate #include <krb5.h> 664960Swillf #include <krb5/kdb.h> 670Sstevel@tonic-gate #include <com_err.h> 680Sstevel@tonic-gate #include <kadm5/kadm_err.h> 690Sstevel@tonic-gate #include <kadm5/chpass_util_strings.h> 700Sstevel@tonic-gate 712881Smp153739 #define KADM5_ADMIN_SERVICE_P "kadmin@admin" 724960Swillf /* 734960Swillf * Solaris Kerberos: 744960Swillf * The kadmin/admin principal is unused on Solaris. This principal is used 754960Swillf * in AUTH_GSSAPI but Solaris doesn't support AUTH_GSSAPI. RPCSEC_GSS can only 764960Swillf * be used with host-based principals. 774960Swillf * 784960Swillf */ 794960Swillf /* #define KADM5_ADMIN_SERVICE "kadmin/admin" */ 802881Smp153739 #define KADM5_CHANGEPW_SERVICE_P "kadmin@changepw" 812881Smp153739 #define KADM5_CHANGEPW_SERVICE "kadmin/changepw" 822881Smp153739 #define KADM5_HIST_PRINCIPAL "kadmin/history" 832881Smp153739 #define KADM5_ADMIN_HOST_SERVICE "kadmin" 842881Smp153739 #define KADM5_CHANGEPW_HOST_SERVICE "changepw" 852881Smp153739 #define KADM5_KIPROP_HOST_SERVICE "kiprop" 860Sstevel@tonic-gate 870Sstevel@tonic-gate typedef krb5_principal kadm5_princ_t; 880Sstevel@tonic-gate typedef char *kadm5_policy_t; 890Sstevel@tonic-gate typedef long kadm5_ret_t; 900Sstevel@tonic-gate typedef int rpc_int32; 910Sstevel@tonic-gate typedef unsigned int rpc_u_int32; 920Sstevel@tonic-gate 932881Smp153739 #define KADM5_PW_FIRST_PROMPT \ 942881Smp153739 (error_message(CHPASS_UTIL_NEW_PASSWORD_PROMPT)) 952881Smp153739 #define KADM5_PW_SECOND_PROMPT \ 962881Smp153739 (error_message(CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT)) 970Sstevel@tonic-gate 980Sstevel@tonic-gate /* 992881Smp153739 * Successful return code 1000Sstevel@tonic-gate */ 1012881Smp153739 #define KADM5_OK 0 1020Sstevel@tonic-gate 1030Sstevel@tonic-gate /* 1040Sstevel@tonic-gate * Field masks 1050Sstevel@tonic-gate */ 1060Sstevel@tonic-gate 1070Sstevel@tonic-gate /* kadm5_principal_ent_t */ 1082881Smp153739 #define KADM5_PRINCIPAL 0x000001 1092881Smp153739 #define KADM5_PRINC_EXPIRE_TIME 0x000002 1102881Smp153739 #define KADM5_PW_EXPIRATION 0x000004 1112881Smp153739 #define KADM5_LAST_PWD_CHANGE 0x000008 1122881Smp153739 #define KADM5_ATTRIBUTES 0x000010 1132881Smp153739 #define KADM5_MAX_LIFE 0x000020 1142881Smp153739 #define KADM5_MOD_TIME 0x000040 1152881Smp153739 #define KADM5_MOD_NAME 0x000080 1162881Smp153739 #define KADM5_KVNO 0x000100 1172881Smp153739 #define KADM5_MKVNO 0x000200 1182881Smp153739 #define KADM5_AUX_ATTRIBUTES 0x000400 1192881Smp153739 #define KADM5_POLICY 0x000800 1202881Smp153739 #define KADM5_POLICY_CLR 0x001000 1210Sstevel@tonic-gate /* version 2 masks */ 1222881Smp153739 #define KADM5_MAX_RLIFE 0x002000 1232881Smp153739 #define KADM5_LAST_SUCCESS 0x004000 1242881Smp153739 #define KADM5_LAST_FAILED 0x008000 1252881Smp153739 #define KADM5_FAIL_AUTH_COUNT 0x010000 1262881Smp153739 #define KADM5_KEY_DATA 0x020000 1272881Smp153739 #define KADM5_TL_DATA 0x040000 1284960Swillf #ifdef notyet /* Novell */ 1294960Swillf #define KADM5_CPW_FUNCTION 0x080000 1304960Swillf #define KADM5_RANDKEY_USED 0x100000 1314960Swillf #endif 1324960Swillf #define KADM5_LOAD 0x200000 1335916Swillf /* Solaris Kerberos: adding support for key history in LDAP KDB */ 1345916Swillf #define KADM5_KEY_HIST 0x400000 1354960Swillf 1360Sstevel@tonic-gate /* all but KEY_DATA and TL_DATA */ 1372881Smp153739 #define KADM5_PRINCIPAL_NORMAL_MASK 0x01ffff 1380Sstevel@tonic-gate 1394960Swillf 1400Sstevel@tonic-gate /* kadm5_policy_ent_t */ 1412881Smp153739 #define KADM5_PW_MAX_LIFE 0x004000 1422881Smp153739 #define KADM5_PW_MIN_LIFE 0x008000 1432881Smp153739 #define KADM5_PW_MIN_LENGTH 0x010000 1442881Smp153739 #define KADM5_PW_MIN_CLASSES 0x020000 1452881Smp153739 #define KADM5_PW_HISTORY_NUM 0x040000 1462881Smp153739 #define KADM5_REF_COUNT 0x080000 1470Sstevel@tonic-gate 1480Sstevel@tonic-gate /* kadm5_config_params */ 1490Sstevel@tonic-gate #define KADM5_CONFIG_REALM 0x0000001 1500Sstevel@tonic-gate #define KADM5_CONFIG_DBNAME 0x0000002 1510Sstevel@tonic-gate #define KADM5_CONFIG_MKEY_NAME 0x0000004 1520Sstevel@tonic-gate #define KADM5_CONFIG_MAX_LIFE 0x0000008 1530Sstevel@tonic-gate #define KADM5_CONFIG_MAX_RLIFE 0x0000010 1540Sstevel@tonic-gate #define KADM5_CONFIG_EXPIRATION 0x0000020 1550Sstevel@tonic-gate #define KADM5_CONFIG_FLAGS 0x0000040 1560Sstevel@tonic-gate #define KADM5_CONFIG_ADMIN_KEYTAB 0x0000080 1570Sstevel@tonic-gate #define KADM5_CONFIG_STASH_FILE 0x0000100 1580Sstevel@tonic-gate #define KADM5_CONFIG_ENCTYPE 0x0000200 1590Sstevel@tonic-gate #define KADM5_CONFIG_ADBNAME 0x0000400 1600Sstevel@tonic-gate #define KADM5_CONFIG_ADB_LOCKFILE 0x0000800 1610Sstevel@tonic-gate #define KADM5_CONFIG_PROFILE 0x0001000 1620Sstevel@tonic-gate #define KADM5_CONFIG_ACL_FILE 0x0002000 1630Sstevel@tonic-gate #define KADM5_CONFIG_KADMIND_PORT 0x0004000 1640Sstevel@tonic-gate #define KADM5_CONFIG_ENCTYPES 0x0008000 1650Sstevel@tonic-gate #define KADM5_CONFIG_ADMIN_SERVER 0x0010000 1660Sstevel@tonic-gate #define KADM5_CONFIG_DICT_FILE 0x0020000 1670Sstevel@tonic-gate #define KADM5_CONFIG_MKEY_FROM_KBD 0x0040000 1680Sstevel@tonic-gate #define KADM5_CONFIG_KPASSWD_PORT 0x0080000 1690Sstevel@tonic-gate #define KADM5_CONFIG_KPASSWD_SERVER 0x0100000 1700Sstevel@tonic-gate #define KADM5_CONFIG_KPASSWD_PROTOCOL 0x0200000 1710Sstevel@tonic-gate #define KADM5_CONFIG_IPROP_ENABLED 0x0400000 1720Sstevel@tonic-gate #define KADM5_CONFIG_ULOG_SIZE 0x0800000 1730Sstevel@tonic-gate #define KADM5_CONFIG_POLL_TIME 0x1000000 1740Sstevel@tonic-gate 1750Sstevel@tonic-gate /* password change constants */ 1760Sstevel@tonic-gate #define KRB5_KPASSWD_SUCCESS 0 1770Sstevel@tonic-gate #define KRB5_KPASSWD_MALFORMED 1 1780Sstevel@tonic-gate #define KRB5_KPASSWD_HARDERROR 2 1790Sstevel@tonic-gate #define KRB5_KPASSWD_AUTHERROR 3 1800Sstevel@tonic-gate #define KRB5_KPASSWD_SOFTERROR 4 1810Sstevel@tonic-gate #define KRB5_KPASSWD_ACCESSDENIED 5 1820Sstevel@tonic-gate #define KRB5_KPASSWD_BAD_VERSION 6 1830Sstevel@tonic-gate #define KRB5_KPASSWD_INITIAL_FLAG_NEEDED 7 1840Sstevel@tonic-gate #define KRB5_KPASSWD_POLICY_REJECT 8 1850Sstevel@tonic-gate #define KRB5_KPASSWD_BAD_PRINCIPAL 9 1860Sstevel@tonic-gate #define KRB5_KPASSWD_ETYPE_NOSUPP 10 1870Sstevel@tonic-gate 1880Sstevel@tonic-gate /* 1890Sstevel@tonic-gate * permission bits 1900Sstevel@tonic-gate */ 1912881Smp153739 #define KADM5_PRIV_GET 0x01 1922881Smp153739 #define KADM5_PRIV_ADD 0x02 1932881Smp153739 #define KADM5_PRIV_MODIFY 0x04 1942881Smp153739 #define KADM5_PRIV_DELETE 0x08 1950Sstevel@tonic-gate 1960Sstevel@tonic-gate /* 1970Sstevel@tonic-gate * API versioning constants 1980Sstevel@tonic-gate */ 1992881Smp153739 #define KADM5_MASK_BITS 0xffffff00 2000Sstevel@tonic-gate 2012881Smp153739 #define KADM5_STRUCT_VERSION_MASK 0x12345600 2022881Smp153739 #define KADM5_STRUCT_VERSION_1 (KADM5_STRUCT_VERSION_MASK|0x01) 2032881Smp153739 #define KADM5_STRUCT_VERSION KADM5_STRUCT_VERSION_1 2040Sstevel@tonic-gate 2052881Smp153739 #define KADM5_API_VERSION_MASK 0x12345700 2062881Smp153739 #define KADM5_API_VERSION_1 (KADM5_API_VERSION_MASK|0x01) 2072881Smp153739 #define KADM5_API_VERSION_2 (KADM5_API_VERSION_MASK|0x02) 2080Sstevel@tonic-gate 2090Sstevel@tonic-gate #ifdef KRB5_DNS_LOOKUP 2100Sstevel@tonic-gate /* 2110Sstevel@tonic-gate * Name length constants for DNS lookups 2120Sstevel@tonic-gate */ 2130Sstevel@tonic-gate #define MAX_HOST_NAMELEN 256 2140Sstevel@tonic-gate #define MAX_DNS_NAMELEN (15*(MAX_HOST_NAMELEN + 1)+1) 2150Sstevel@tonic-gate #endif /* KRB5_DNS_LOOKUP */ 2160Sstevel@tonic-gate 2170Sstevel@tonic-gate typedef struct _kadm5_principal_ent_t_v2 { 2180Sstevel@tonic-gate krb5_principal principal; 2190Sstevel@tonic-gate krb5_timestamp princ_expire_time; 2200Sstevel@tonic-gate krb5_timestamp last_pwd_change; 2210Sstevel@tonic-gate krb5_timestamp pw_expiration; 2220Sstevel@tonic-gate krb5_deltat max_life; 2230Sstevel@tonic-gate krb5_principal mod_name; 2240Sstevel@tonic-gate krb5_timestamp mod_date; 2250Sstevel@tonic-gate krb5_flags attributes; 2260Sstevel@tonic-gate krb5_kvno kvno; 2270Sstevel@tonic-gate krb5_kvno mkvno; 2280Sstevel@tonic-gate char *policy; 2290Sstevel@tonic-gate long aux_attributes; 2300Sstevel@tonic-gate 2310Sstevel@tonic-gate /* version 2 fields */ 2320Sstevel@tonic-gate krb5_deltat max_renewable_life; 2332881Smp153739 krb5_timestamp last_success; 2342881Smp153739 krb5_timestamp last_failed; 2352881Smp153739 krb5_kvno fail_auth_count; 2360Sstevel@tonic-gate krb5_int16 n_key_data; 2370Sstevel@tonic-gate krb5_int16 n_tl_data; 2382881Smp153739 krb5_tl_data *tl_data; 2390Sstevel@tonic-gate krb5_key_data *key_data; 2400Sstevel@tonic-gate } kadm5_principal_ent_rec_v2, *kadm5_principal_ent_t_v2; 2410Sstevel@tonic-gate 2420Sstevel@tonic-gate typedef struct _kadm5_principal_ent_t_v1 { 2430Sstevel@tonic-gate krb5_principal principal; 2440Sstevel@tonic-gate krb5_timestamp princ_expire_time; 2450Sstevel@tonic-gate krb5_timestamp last_pwd_change; 2460Sstevel@tonic-gate krb5_timestamp pw_expiration; 2470Sstevel@tonic-gate krb5_deltat max_life; 2480Sstevel@tonic-gate krb5_principal mod_name; 2490Sstevel@tonic-gate krb5_timestamp mod_date; 2500Sstevel@tonic-gate krb5_flags attributes; 2510Sstevel@tonic-gate krb5_kvno kvno; 2520Sstevel@tonic-gate krb5_kvno mkvno; 2530Sstevel@tonic-gate char *policy; 2540Sstevel@tonic-gate long aux_attributes; 2550Sstevel@tonic-gate } kadm5_principal_ent_rec_v1, *kadm5_principal_ent_t_v1; 2560Sstevel@tonic-gate 2572881Smp153739 #if USE_KADM5_API_VERSION == 1 2582881Smp153739 typedef struct _kadm5_principal_ent_t_v1 2592881Smp153739 kadm5_principal_ent_rec, *kadm5_principal_ent_t; 2602881Smp153739 #else 2610Sstevel@tonic-gate typedef struct _kadm5_principal_ent_t_v2 2622881Smp153739 kadm5_principal_ent_rec, *kadm5_principal_ent_t; 2632881Smp153739 #endif 2640Sstevel@tonic-gate 2650Sstevel@tonic-gate typedef struct _kadm5_policy_ent_t { 2660Sstevel@tonic-gate char *policy; 2670Sstevel@tonic-gate long pw_min_life; 2680Sstevel@tonic-gate long pw_max_life; 2690Sstevel@tonic-gate long pw_min_length; 2700Sstevel@tonic-gate long pw_min_classes; 2710Sstevel@tonic-gate long pw_history_num; 2720Sstevel@tonic-gate long policy_refcnt; 2730Sstevel@tonic-gate } kadm5_policy_ent_rec, *kadm5_policy_ent_t; 2740Sstevel@tonic-gate 2750Sstevel@tonic-gate /* 2760Sstevel@tonic-gate * New types to indicate which protocol to use when sending 2770Sstevel@tonic-gate * password change requests 2780Sstevel@tonic-gate */ 2790Sstevel@tonic-gate typedef enum { 2800Sstevel@tonic-gate KRB5_CHGPWD_RPCSEC, 2810Sstevel@tonic-gate KRB5_CHGPWD_CHANGEPW_V2 2820Sstevel@tonic-gate } krb5_chgpwd_prot; 2830Sstevel@tonic-gate 2840Sstevel@tonic-gate /* 2850Sstevel@tonic-gate * Data structure returned by kadm5_get_config_params() 2860Sstevel@tonic-gate */ 2870Sstevel@tonic-gate typedef struct _kadm5_config_params { 2882881Smp153739 long mask; 2892881Smp153739 char * realm; 2902881Smp153739 int kadmind_port; 2912881Smp153739 int kpasswd_port; 2922881Smp153739 2932881Smp153739 char * admin_server; 2944960Swillf #ifdef notyet /* Novell */ /* ABI change? */ 2954960Swillf char * kpasswd_server; 2964960Swillf #endif 2972881Smp153739 2982881Smp153739 char * dbname; 2992881Smp153739 char * admin_dbname; 3002881Smp153739 char * admin_lockfile; 3012881Smp153739 char * admin_keytab; 3022881Smp153739 char * acl_file; 3032881Smp153739 char * dict_file; 3042881Smp153739 3052881Smp153739 int mkey_from_kbd; 3062881Smp153739 char * stash_file; 3072881Smp153739 char * mkey_name; 3082881Smp153739 krb5_enctype enctype; 3092881Smp153739 krb5_deltat max_life; 3102881Smp153739 krb5_deltat max_rlife; 3112881Smp153739 krb5_timestamp expiration; 3122881Smp153739 krb5_flags flags; 3132881Smp153739 krb5_key_salt_tuple *keysalts; 3142881Smp153739 krb5_int32 num_keysalts; 3152881Smp153739 char *kpasswd_server; 3162881Smp153739 3172881Smp153739 krb5_chgpwd_prot kpasswd_protocol; 3182881Smp153739 bool_t iprop_enabled; 3192881Smp153739 int iprop_ulogsize; 3202881Smp153739 char *iprop_polltime; 3210Sstevel@tonic-gate } kadm5_config_params; 3220Sstevel@tonic-gate 3230Sstevel@tonic-gate /*********************************************************************** 3240Sstevel@tonic-gate * This is the old krb5_realm_read_params, which I mutated into 3250Sstevel@tonic-gate * kadm5_get_config_params but which old code (kdb5_* and krb5kdc) 3260Sstevel@tonic-gate * still uses. 3270Sstevel@tonic-gate ***********************************************************************/ 3280Sstevel@tonic-gate 3290Sstevel@tonic-gate /* 3300Sstevel@tonic-gate * Data structure returned by krb5_read_realm_params() 3310Sstevel@tonic-gate */ 3320Sstevel@tonic-gate typedef struct __krb5_realm_params { 3332881Smp153739 char * realm_profile; 3342881Smp153739 char * realm_dbname; 3352881Smp153739 char * realm_mkey_name; 3362881Smp153739 char * realm_stash_file; 3372881Smp153739 char * realm_kdc_ports; 3382881Smp153739 char * realm_kdc_tcp_ports; 3392881Smp153739 char * realm_acl_file; 3400Sstevel@tonic-gate krb5_int32 realm_kadmind_port; 3410Sstevel@tonic-gate krb5_enctype realm_enctype; 3420Sstevel@tonic-gate krb5_deltat realm_max_life; 3430Sstevel@tonic-gate krb5_deltat realm_max_rlife; 3440Sstevel@tonic-gate krb5_timestamp realm_expiration; 3450Sstevel@tonic-gate krb5_flags realm_flags; 3460Sstevel@tonic-gate krb5_key_salt_tuple *realm_keysalts; 3472881Smp153739 unsigned int realm_reject_bad_transit:1; 3480Sstevel@tonic-gate unsigned int realm_kadmind_port_valid:1; 3490Sstevel@tonic-gate unsigned int realm_enctype_valid:1; 3500Sstevel@tonic-gate unsigned int realm_max_life_valid:1; 3510Sstevel@tonic-gate unsigned int realm_max_rlife_valid:1; 3520Sstevel@tonic-gate unsigned int realm_expiration_valid:1; 3530Sstevel@tonic-gate unsigned int realm_flags_valid:1; 3542881Smp153739 unsigned int realm_reject_bad_transit_valid:1; 3550Sstevel@tonic-gate krb5_int32 realm_num_keysalts; 3560Sstevel@tonic-gate } krb5_realm_params; 3570Sstevel@tonic-gate 3580Sstevel@tonic-gate /* 3590Sstevel@tonic-gate * functions 3600Sstevel@tonic-gate */ 3610Sstevel@tonic-gate 3620Sstevel@tonic-gate kadm5_ret_t 3630Sstevel@tonic-gate kadm5_get_adm_host_srv_name(krb5_context context, 3642881Smp153739 const char *realm, char **host_service_name); 3650Sstevel@tonic-gate 3660Sstevel@tonic-gate kadm5_ret_t 3670Sstevel@tonic-gate kadm5_get_cpw_host_srv_name(krb5_context context, 3682881Smp153739 const char *realm, char **host_service_name); 3690Sstevel@tonic-gate 3702881Smp153739 #if USE_KADM5_API_VERSION > 1 3710Sstevel@tonic-gate krb5_error_code kadm5_get_config_params(krb5_context context, 3727934SMark.Phalan@Sun.COM int use_kdc_config, 3730Sstevel@tonic-gate kadm5_config_params *params_in, 3740Sstevel@tonic-gate kadm5_config_params *params_out); 3750Sstevel@tonic-gate 3762881Smp153739 krb5_error_code kadm5_free_config_params(krb5_context context, 3772881Smp153739 kadm5_config_params *params); 3780Sstevel@tonic-gate 3790Sstevel@tonic-gate krb5_error_code kadm5_free_realm_params(krb5_context kcontext, 3800Sstevel@tonic-gate kadm5_config_params *params); 3810Sstevel@tonic-gate 3822881Smp153739 krb5_error_code kadm5_get_admin_service_name(krb5_context, char *, 3832881Smp153739 char *, size_t); 3842881Smp153739 #endif 3852881Smp153739 3860Sstevel@tonic-gate kadm5_ret_t kadm5_init(char *client_name, char *pass, 3872881Smp153739 char *service_name, 3882881Smp153739 #if USE_KADM5_API_VERSION == 1 3892881Smp153739 char *realm, 3902881Smp153739 #else 3912881Smp153739 kadm5_config_params *params, 3922881Smp153739 #endif 3932881Smp153739 krb5_ui_4 struct_version, 3942881Smp153739 krb5_ui_4 api_version, 3954960Swillf char **db_args, 3962881Smp153739 void **server_handle); 3970Sstevel@tonic-gate kadm5_ret_t kadm5_init_with_password(char *client_name, 3980Sstevel@tonic-gate char *pass, 3990Sstevel@tonic-gate char *service_name, 4002881Smp153739 #if USE_KADM5_API_VERSION == 1 4012881Smp153739 char *realm, 4022881Smp153739 #else 4030Sstevel@tonic-gate kadm5_config_params *params, 4042881Smp153739 #endif 4050Sstevel@tonic-gate krb5_ui_4 struct_version, 4060Sstevel@tonic-gate krb5_ui_4 api_version, 4074960Swillf char **db_args, 4080Sstevel@tonic-gate void **server_handle); 4090Sstevel@tonic-gate kadm5_ret_t kadm5_init_with_skey(char *client_name, 4100Sstevel@tonic-gate char *keytab, 4110Sstevel@tonic-gate char *service_name, 4122881Smp153739 #if USE_KADM5_API_VERSION == 1 4132881Smp153739 char *realm, 4142881Smp153739 #else 4150Sstevel@tonic-gate kadm5_config_params *params, 4162881Smp153739 #endif 4170Sstevel@tonic-gate krb5_ui_4 struct_version, 4180Sstevel@tonic-gate krb5_ui_4 api_version, 4194960Swillf char **db_args, 4200Sstevel@tonic-gate void **server_handle); 4212881Smp153739 #if USE_KADM5_API_VERSION > 1 4220Sstevel@tonic-gate kadm5_ret_t kadm5_init_with_creds(char *client_name, 4230Sstevel@tonic-gate krb5_ccache cc, 4240Sstevel@tonic-gate char *service_name, 4250Sstevel@tonic-gate kadm5_config_params *params, 4260Sstevel@tonic-gate krb5_ui_4 struct_version, 4270Sstevel@tonic-gate krb5_ui_4 api_version, 4284960Swillf char **db_args, 4290Sstevel@tonic-gate void **server_handle); 4302881Smp153739 #endif 4312881Smp153739 kadm5_ret_t kadm5_lock(void *server_handle); 4322881Smp153739 kadm5_ret_t kadm5_unlock(void *server_handle); 4330Sstevel@tonic-gate kadm5_ret_t kadm5_flush(void *server_handle); 4340Sstevel@tonic-gate kadm5_ret_t kadm5_destroy(void *server_handle); 435*12253SPeter.Shoults@Sun.COM kadm5_ret_t kadm5_check_min_life(void *server_handle, /* Solaris Kerberos */ 436*12253SPeter.Shoults@Sun.COM krb5_principal principal, 437*12253SPeter.Shoults@Sun.COM char *msg_ret, 438*12253SPeter.Shoults@Sun.COM unsigned int msg_len); 4390Sstevel@tonic-gate kadm5_ret_t kadm5_create_principal(void *server_handle, 4400Sstevel@tonic-gate kadm5_principal_ent_t ent, 4410Sstevel@tonic-gate long mask, char *pass); 4420Sstevel@tonic-gate kadm5_ret_t kadm5_create_principal_3(void *server_handle, 4430Sstevel@tonic-gate kadm5_principal_ent_t ent, 4440Sstevel@tonic-gate long mask, 4450Sstevel@tonic-gate int n_ks_tuple, 4460Sstevel@tonic-gate krb5_key_salt_tuple *ks_tuple, 4470Sstevel@tonic-gate char *pass); 4480Sstevel@tonic-gate kadm5_ret_t kadm5_delete_principal(void *server_handle, 4490Sstevel@tonic-gate krb5_principal principal); 4500Sstevel@tonic-gate kadm5_ret_t kadm5_modify_principal(void *server_handle, 4510Sstevel@tonic-gate kadm5_principal_ent_t ent, 4520Sstevel@tonic-gate long mask); 4530Sstevel@tonic-gate kadm5_ret_t kadm5_rename_principal(void *server_handle, 4542881Smp153739 krb5_principal,krb5_principal); 4552881Smp153739 #if USE_KADM5_API_VERSION == 1 4560Sstevel@tonic-gate kadm5_ret_t kadm5_get_principal(void *server_handle, 4572881Smp153739 krb5_principal principal, 4582881Smp153739 kadm5_principal_ent_t *ent); 4592881Smp153739 #else 4602881Smp153739 kadm5_ret_t kadm5_get_principal(void *server_handle, 4612881Smp153739 krb5_principal principal, 4622881Smp153739 kadm5_principal_ent_t ent, 4632881Smp153739 long mask); 4642881Smp153739 #endif 4650Sstevel@tonic-gate kadm5_ret_t kadm5_chpass_principal(void *server_handle, 4660Sstevel@tonic-gate krb5_principal principal, 4670Sstevel@tonic-gate char *pass); 4680Sstevel@tonic-gate kadm5_ret_t kadm5_chpass_principal_3(void *server_handle, 4690Sstevel@tonic-gate krb5_principal principal, 4700Sstevel@tonic-gate krb5_boolean keepold, 4710Sstevel@tonic-gate int n_ks_tuple, 4720Sstevel@tonic-gate krb5_key_salt_tuple *ks_tuple, 4730Sstevel@tonic-gate char *pass); 4742881Smp153739 #if USE_KADM5_API_VERSION == 1 4752881Smp153739 kadm5_ret_t kadm5_randkey_principal(void *server_handle, 4762881Smp153739 krb5_principal principal, 4772881Smp153739 krb5_keyblock **keyblock); 4782881Smp153739 #else 4790Sstevel@tonic-gate 4800Sstevel@tonic-gate /* 4810Sstevel@tonic-gate * Solaris Kerberos: 4820Sstevel@tonic-gate * this routine is only implemented in the client library. 4830Sstevel@tonic-gate */ 4840Sstevel@tonic-gate kadm5_ret_t kadm5_randkey_principal_old(void *server_handle, 4850Sstevel@tonic-gate krb5_principal principal, 4860Sstevel@tonic-gate krb5_keyblock **keyblocks, 4870Sstevel@tonic-gate int *n_keys); 4880Sstevel@tonic-gate 4890Sstevel@tonic-gate kadm5_ret_t kadm5_randkey_principal(void *server_handle, 4900Sstevel@tonic-gate krb5_principal principal, 4910Sstevel@tonic-gate krb5_keyblock **keyblocks, 4920Sstevel@tonic-gate int *n_keys); 4930Sstevel@tonic-gate kadm5_ret_t kadm5_randkey_principal_3(void *server_handle, 4940Sstevel@tonic-gate krb5_principal principal, 4950Sstevel@tonic-gate krb5_boolean keepold, 4960Sstevel@tonic-gate int n_ks_tuple, 4970Sstevel@tonic-gate krb5_key_salt_tuple *ks_tuple, 4980Sstevel@tonic-gate krb5_keyblock **keyblocks, 4990Sstevel@tonic-gate int *n_keys); 5002881Smp153739 #endif 5010Sstevel@tonic-gate kadm5_ret_t kadm5_setv4key_principal(void *server_handle, 5020Sstevel@tonic-gate krb5_principal principal, 5030Sstevel@tonic-gate krb5_keyblock *keyblock); 5040Sstevel@tonic-gate 5050Sstevel@tonic-gate kadm5_ret_t kadm5_setkey_principal(void *server_handle, 5060Sstevel@tonic-gate krb5_principal principal, 5070Sstevel@tonic-gate krb5_keyblock *keyblocks, 5080Sstevel@tonic-gate int n_keys); 5090Sstevel@tonic-gate 5100Sstevel@tonic-gate kadm5_ret_t kadm5_setkey_principal_3(void *server_handle, 5110Sstevel@tonic-gate krb5_principal principal, 5120Sstevel@tonic-gate krb5_boolean keepold, 5130Sstevel@tonic-gate int n_ks_tuple, 5140Sstevel@tonic-gate krb5_key_salt_tuple *ks_tuple, 5150Sstevel@tonic-gate krb5_keyblock *keyblocks, 5160Sstevel@tonic-gate int n_keys); 5170Sstevel@tonic-gate 5182881Smp153739 kadm5_ret_t kadm5_decrypt_key(void *server_handle, 5192881Smp153739 kadm5_principal_ent_t entry, krb5_int32 5202881Smp153739 ktype, krb5_int32 stype, krb5_int32 5212881Smp153739 kvno, krb5_keyblock *keyblock, 5222881Smp153739 krb5_keysalt *keysalt, int *kvnop); 5232881Smp153739 5240Sstevel@tonic-gate kadm5_ret_t kadm5_create_policy(void *server_handle, 5250Sstevel@tonic-gate kadm5_policy_ent_t ent, 5260Sstevel@tonic-gate long mask); 5270Sstevel@tonic-gate /* 5280Sstevel@tonic-gate * kadm5_create_policy_internal is not part of the supported, 5290Sstevel@tonic-gate * exposed API. It is available only in the server library, and you 5300Sstevel@tonic-gate * shouldn't use it unless you know why it's there and how it's 5310Sstevel@tonic-gate * different from kadm5_create_policy. 5320Sstevel@tonic-gate */ 5330Sstevel@tonic-gate kadm5_ret_t kadm5_create_policy_internal(void *server_handle, 5340Sstevel@tonic-gate kadm5_policy_ent_t 5350Sstevel@tonic-gate entry, long mask); 5360Sstevel@tonic-gate kadm5_ret_t kadm5_delete_policy(void *server_handle, 5370Sstevel@tonic-gate kadm5_policy_t policy); 5380Sstevel@tonic-gate kadm5_ret_t kadm5_modify_policy(void *server_handle, 5390Sstevel@tonic-gate kadm5_policy_ent_t ent, 5400Sstevel@tonic-gate long mask); 5410Sstevel@tonic-gate /* 5420Sstevel@tonic-gate * kadm5_modify_policy_internal is not part of the supported, 5430Sstevel@tonic-gate * exposed API. It is available only in the server library, and you 5440Sstevel@tonic-gate * shouldn't use it unless you know why it's there and how it's 5450Sstevel@tonic-gate * different from kadm5_modify_policy. 5460Sstevel@tonic-gate */ 5470Sstevel@tonic-gate kadm5_ret_t kadm5_modify_policy_internal(void *server_handle, 5480Sstevel@tonic-gate kadm5_policy_ent_t 5490Sstevel@tonic-gate entry, long mask); 5502881Smp153739 #if USE_KADM5_API_VERSION == 1 5512881Smp153739 kadm5_ret_t kadm5_get_policy(void *server_handle, 5522881Smp153739 kadm5_policy_t policy, 5532881Smp153739 kadm5_policy_ent_t *ent); 5542881Smp153739 #else 5550Sstevel@tonic-gate kadm5_ret_t kadm5_get_policy(void *server_handle, 5560Sstevel@tonic-gate kadm5_policy_t policy, 5570Sstevel@tonic-gate kadm5_policy_ent_t ent); 5582881Smp153739 #endif 5590Sstevel@tonic-gate kadm5_ret_t kadm5_get_privs(void *server_handle, 5602881Smp153739 long *privs); 5610Sstevel@tonic-gate 5620Sstevel@tonic-gate kadm5_ret_t kadm5_chpass_principal_util(void *server_handle, 5630Sstevel@tonic-gate krb5_principal princ, 5640Sstevel@tonic-gate char *new_pw, 5650Sstevel@tonic-gate char **ret_pw, 5660Sstevel@tonic-gate char *msg_ret, 5672881Smp153739 unsigned int msg_len); 5680Sstevel@tonic-gate 5690Sstevel@tonic-gate kadm5_ret_t kadm5_free_principal_ent(void *server_handle, 5700Sstevel@tonic-gate kadm5_principal_ent_t 5710Sstevel@tonic-gate ent); 5720Sstevel@tonic-gate kadm5_ret_t kadm5_free_policy_ent(void *server_handle, 5730Sstevel@tonic-gate kadm5_policy_ent_t ent); 5740Sstevel@tonic-gate 5750Sstevel@tonic-gate kadm5_ret_t kadm5_get_principals(void *server_handle, 5760Sstevel@tonic-gate char *exp, char ***princs, 5770Sstevel@tonic-gate int *count); 5780Sstevel@tonic-gate 5790Sstevel@tonic-gate kadm5_ret_t kadm5_get_policies(void *server_handle, 5800Sstevel@tonic-gate char *exp, char ***pols, 5810Sstevel@tonic-gate int *count); 5820Sstevel@tonic-gate 5832881Smp153739 #if USE_KADM5_API_VERSION > 1 5840Sstevel@tonic-gate kadm5_ret_t kadm5_free_key_data(void *server_handle, 5850Sstevel@tonic-gate krb5_int16 *n_key_data, 5860Sstevel@tonic-gate krb5_key_data *key_data); 5872881Smp153739 #endif 5880Sstevel@tonic-gate 5892881Smp153739 kadm5_ret_t kadm5_free_name_list(void *server_handle, char **names, 5902881Smp153739 int count); 5912881Smp153739 5924960Swillf krb5_error_code kadm5_init_krb5_context (krb5_context *); 5934960Swillf 5942881Smp153739 #if USE_KADM5_API_VERSION == 1 5952881Smp153739 /* 5962881Smp153739 * OVSEC_KADM_API_VERSION_1 should be, if possible, compile-time 5972881Smp153739 * compatible with KADM5_API_VERSION_2. Basically, this means we have 5982881Smp153739 * to continue to provide all the old ovsec_kadm function and symbol 5992881Smp153739 * names. 6002881Smp153739 */ 6012881Smp153739 6022881Smp153739 #define OVSEC_KADM_ACLFILE "/krb5/ovsec_adm.acl" 6032881Smp153739 #define OVSEC_KADM_WORDFILE "/krb5/ovsec_adm.dict" 6042881Smp153739 6052881Smp153739 #define OVSEC_KADM_ADMIN_SERVICE "ovsec_adm/admin" 6062881Smp153739 #define OVSEC_KADM_CHANGEPW_SERVICE "ovsec_adm/changepw" 6072881Smp153739 #define OVSEC_KADM_HIST_PRINCIPAL "ovsec_adm/history" 6082881Smp153739 6092881Smp153739 typedef krb5_principal ovsec_kadm_princ_t; 6102881Smp153739 typedef krb5_keyblock ovsec_kadm_keyblock; 6112881Smp153739 typedef char *ovsec_kadm_policy_t; 6122881Smp153739 typedef long ovsec_kadm_ret_t; 6132881Smp153739 6142881Smp153739 enum ovsec_kadm_salttype { OVSEC_KADM_SALT_V4, OVSEC_KADM_SALT_NORMAL }; 6152881Smp153739 enum ovsec_kadm_saltmod { OVSEC_KADM_MOD_KEEP, OVSEC_KADM_MOD_V4, OVSEC_KADM_MOD_NORMAL }; 6162881Smp153739 6172881Smp153739 #define OVSEC_KADM_PW_FIRST_PROMPT \ 6182881Smp153739 ((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_PROMPT)) 6192881Smp153739 #define OVSEC_KADM_PW_SECOND_PROMPT \ 6202881Smp153739 ((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT)) 6212881Smp153739 6222881Smp153739 /* 6232881Smp153739 * Successful return code 6242881Smp153739 */ 6252881Smp153739 #define OVSEC_KADM_OK 0 6262881Smp153739 6272881Smp153739 /* 6282881Smp153739 * Create/Modify masks 6292881Smp153739 */ 6302881Smp153739 /* principal */ 6312881Smp153739 #define OVSEC_KADM_PRINCIPAL 0x000001 6322881Smp153739 #define OVSEC_KADM_PRINC_EXPIRE_TIME 0x000002 6332881Smp153739 #define OVSEC_KADM_PW_EXPIRATION 0x000004 6342881Smp153739 #define OVSEC_KADM_LAST_PWD_CHANGE 0x000008 6352881Smp153739 #define OVSEC_KADM_ATTRIBUTES 0x000010 6362881Smp153739 #define OVSEC_KADM_MAX_LIFE 0x000020 6372881Smp153739 #define OVSEC_KADM_MOD_TIME 0x000040 6382881Smp153739 #define OVSEC_KADM_MOD_NAME 0x000080 6392881Smp153739 #define OVSEC_KADM_KVNO 0x000100 6402881Smp153739 #define OVSEC_KADM_MKVNO 0x000200 6412881Smp153739 #define OVSEC_KADM_AUX_ATTRIBUTES 0x000400 6422881Smp153739 #define OVSEC_KADM_POLICY 0x000800 6432881Smp153739 #define OVSEC_KADM_POLICY_CLR 0x001000 6442881Smp153739 /* policy */ 6452881Smp153739 #define OVSEC_KADM_PW_MAX_LIFE 0x004000 6462881Smp153739 #define OVSEC_KADM_PW_MIN_LIFE 0x008000 6472881Smp153739 #define OVSEC_KADM_PW_MIN_LENGTH 0x010000 6482881Smp153739 #define OVSEC_KADM_PW_MIN_CLASSES 0x020000 6492881Smp153739 #define OVSEC_KADM_PW_HISTORY_NUM 0x040000 6502881Smp153739 #define OVSEC_KADM_REF_COUNT 0x080000 6512881Smp153739 6522881Smp153739 /* 6532881Smp153739 * permission bits 6542881Smp153739 */ 6552881Smp153739 #define OVSEC_KADM_PRIV_GET 0x01 6562881Smp153739 #define OVSEC_KADM_PRIV_ADD 0x02 6572881Smp153739 #define OVSEC_KADM_PRIV_MODIFY 0x04 6582881Smp153739 #define OVSEC_KADM_PRIV_DELETE 0x08 6592881Smp153739 6602881Smp153739 /* 6612881Smp153739 * API versioning constants 6622881Smp153739 */ 6632881Smp153739 #define OVSEC_KADM_MASK_BITS 0xffffff00 6642881Smp153739 6652881Smp153739 #define OVSEC_KADM_STRUCT_VERSION_MASK 0x12345600 6662881Smp153739 #define OVSEC_KADM_STRUCT_VERSION_1 (OVSEC_KADM_STRUCT_VERSION_MASK|0x01) 6672881Smp153739 #define OVSEC_KADM_STRUCT_VERSION OVSEC_KADM_STRUCT_VERSION_1 6682881Smp153739 6692881Smp153739 #define OVSEC_KADM_API_VERSION_MASK 0x12345700 6702881Smp153739 #define OVSEC_KADM_API_VERSION_1 (OVSEC_KADM_API_VERSION_MASK|0x01) 6712881Smp153739 6722881Smp153739 6732881Smp153739 typedef struct _ovsec_kadm_principal_ent_t { 6742881Smp153739 krb5_principal principal; 6752881Smp153739 krb5_timestamp princ_expire_time; 6762881Smp153739 krb5_timestamp last_pwd_change; 6772881Smp153739 krb5_timestamp pw_expiration; 6782881Smp153739 krb5_deltat max_life; 6792881Smp153739 krb5_principal mod_name; 6802881Smp153739 krb5_timestamp mod_date; 6812881Smp153739 krb5_flags attributes; 6822881Smp153739 krb5_kvno kvno; 6832881Smp153739 krb5_kvno mkvno; 6842881Smp153739 char *policy; 6852881Smp153739 long aux_attributes; 6862881Smp153739 } ovsec_kadm_principal_ent_rec, *ovsec_kadm_principal_ent_t; 6872881Smp153739 6882881Smp153739 typedef struct _ovsec_kadm_policy_ent_t { 6892881Smp153739 char *policy; 6902881Smp153739 long pw_min_life; 6912881Smp153739 long pw_max_life; 6922881Smp153739 long pw_min_length; 6932881Smp153739 long pw_min_classes; 6942881Smp153739 long pw_history_num; 6952881Smp153739 long policy_refcnt; 6962881Smp153739 } ovsec_kadm_policy_ent_rec, *ovsec_kadm_policy_ent_t; 6970Sstevel@tonic-gate 6982881Smp153739 /* 6992881Smp153739 * functions 7002881Smp153739 */ 7012881Smp153739 ovsec_kadm_ret_t ovsec_kadm_init(char *client_name, char *pass, 7022881Smp153739 char *service_name, char *realm, 7032881Smp153739 krb5_ui_4 struct_version, 7042881Smp153739 krb5_ui_4 api_version, 7054960Swillf char **db_args, 7062881Smp153739 void **server_handle); 7072881Smp153739 ovsec_kadm_ret_t ovsec_kadm_init_with_password(char *client_name, 7082881Smp153739 char *pass, 7092881Smp153739 char *service_name, 7102881Smp153739 char *realm, 7112881Smp153739 krb5_ui_4 struct_version, 7122881Smp153739 krb5_ui_4 api_version, 7134960Swillf char ** db_args, 7142881Smp153739 void **server_handle); 7152881Smp153739 ovsec_kadm_ret_t ovsec_kadm_init_with_skey(char *client_name, 7162881Smp153739 char *keytab, 7172881Smp153739 char *service_name, 7182881Smp153739 char *realm, 7192881Smp153739 krb5_ui_4 struct_version, 7202881Smp153739 krb5_ui_4 api_version, 7214960Swillf char **db_args, 7222881Smp153739 void **server_handle); 7232881Smp153739 ovsec_kadm_ret_t ovsec_kadm_flush(void *server_handle); 7242881Smp153739 ovsec_kadm_ret_t ovsec_kadm_destroy(void *server_handle); 7252881Smp153739 ovsec_kadm_ret_t ovsec_kadm_create_principal(void *server_handle, 7262881Smp153739 ovsec_kadm_principal_ent_t ent, 7272881Smp153739 long mask, char *pass); 7282881Smp153739 ovsec_kadm_ret_t ovsec_kadm_delete_principal(void *server_handle, 7292881Smp153739 krb5_principal principal); 7302881Smp153739 ovsec_kadm_ret_t ovsec_kadm_modify_principal(void *server_handle, 7312881Smp153739 ovsec_kadm_principal_ent_t ent, 7322881Smp153739 long mask); 7332881Smp153739 ovsec_kadm_ret_t ovsec_kadm_rename_principal(void *server_handle, 7342881Smp153739 krb5_principal,krb5_principal); 7352881Smp153739 ovsec_kadm_ret_t ovsec_kadm_get_principal(void *server_handle, 7362881Smp153739 krb5_principal principal, 7372881Smp153739 ovsec_kadm_principal_ent_t *ent); 7382881Smp153739 ovsec_kadm_ret_t ovsec_kadm_chpass_principal(void *server_handle, 7392881Smp153739 krb5_principal principal, 7402881Smp153739 char *pass); 7412881Smp153739 ovsec_kadm_ret_t ovsec_kadm_randkey_principal(void *server_handle, 7422881Smp153739 krb5_principal principal, 7432881Smp153739 krb5_keyblock **keyblock); 7442881Smp153739 ovsec_kadm_ret_t ovsec_kadm_create_policy(void *server_handle, 7452881Smp153739 ovsec_kadm_policy_ent_t ent, 7462881Smp153739 long mask); 7472881Smp153739 /* 7482881Smp153739 * ovsec_kadm_create_policy_internal is not part of the supported, 7492881Smp153739 * exposed API. It is available only in the server library, and you 7502881Smp153739 * shouldn't use it unless you know why it's there and how it's 7512881Smp153739 * different from ovsec_kadm_create_policy. 7522881Smp153739 */ 7532881Smp153739 ovsec_kadm_ret_t ovsec_kadm_create_policy_internal(void *server_handle, 7542881Smp153739 ovsec_kadm_policy_ent_t 7552881Smp153739 entry, long mask); 7562881Smp153739 ovsec_kadm_ret_t ovsec_kadm_delete_policy(void *server_handle, 7572881Smp153739 ovsec_kadm_policy_t policy); 7582881Smp153739 ovsec_kadm_ret_t ovsec_kadm_modify_policy(void *server_handle, 7592881Smp153739 ovsec_kadm_policy_ent_t ent, 7602881Smp153739 long mask); 7612881Smp153739 /* 7622881Smp153739 * ovsec_kadm_modify_policy_internal is not part of the supported, 7632881Smp153739 * exposed API. It is available only in the server library, and you 7642881Smp153739 * shouldn't use it unless you know why it's there and how it's 7652881Smp153739 * different from ovsec_kadm_modify_policy. 7662881Smp153739 */ 7672881Smp153739 ovsec_kadm_ret_t ovsec_kadm_modify_policy_internal(void *server_handle, 7682881Smp153739 ovsec_kadm_policy_ent_t 7692881Smp153739 entry, long mask); 7702881Smp153739 ovsec_kadm_ret_t ovsec_kadm_get_policy(void *server_handle, 7712881Smp153739 ovsec_kadm_policy_t policy, 7722881Smp153739 ovsec_kadm_policy_ent_t *ent); 7732881Smp153739 ovsec_kadm_ret_t ovsec_kadm_get_privs(void *server_handle, 7742881Smp153739 long *privs); 7752881Smp153739 7762881Smp153739 ovsec_kadm_ret_t ovsec_kadm_chpass_principal_util(void *server_handle, 7772881Smp153739 krb5_principal princ, 7782881Smp153739 char *new_pw, 7792881Smp153739 char **ret_pw, 7802881Smp153739 char *msg_ret); 7812881Smp153739 7822881Smp153739 ovsec_kadm_ret_t ovsec_kadm_free_principal_ent(void *server_handle, 7832881Smp153739 ovsec_kadm_principal_ent_t 7842881Smp153739 ent); 7852881Smp153739 ovsec_kadm_ret_t ovsec_kadm_free_policy_ent(void *server_handle, 7862881Smp153739 ovsec_kadm_policy_ent_t ent); 7872881Smp153739 7882881Smp153739 ovsec_kadm_ret_t ovsec_kadm_free_name_list(void *server_handle, 7892881Smp153739 char **names, int count); 7902881Smp153739 7912881Smp153739 ovsec_kadm_ret_t ovsec_kadm_get_principals(void *server_handle, 7922881Smp153739 char *exp, char ***princs, 7932881Smp153739 int *count); 7942881Smp153739 7952881Smp153739 ovsec_kadm_ret_t ovsec_kadm_get_policies(void *server_handle, 7962881Smp153739 char *exp, char ***pols, 7972881Smp153739 int *count); 7982881Smp153739 7992881Smp153739 #define OVSEC_KADM_FAILURE KADM5_FAILURE 8002881Smp153739 #define OVSEC_KADM_AUTH_GET KADM5_AUTH_GET 8012881Smp153739 #define OVSEC_KADM_AUTH_ADD KADM5_AUTH_ADD 8022881Smp153739 #define OVSEC_KADM_AUTH_MODIFY KADM5_AUTH_MODIFY 8032881Smp153739 #define OVSEC_KADM_AUTH_DELETE KADM5_AUTH_DELETE 8042881Smp153739 #define OVSEC_KADM_AUTH_INSUFFICIENT KADM5_AUTH_INSUFFICIENT 8052881Smp153739 #define OVSEC_KADM_BAD_DB KADM5_BAD_DB 8062881Smp153739 #define OVSEC_KADM_DUP KADM5_DUP 8072881Smp153739 #define OVSEC_KADM_RPC_ERROR KADM5_RPC_ERROR 8082881Smp153739 #define OVSEC_KADM_NO_SRV KADM5_NO_SRV 8092881Smp153739 #define OVSEC_KADM_BAD_HIST_KEY KADM5_BAD_HIST_KEY 8102881Smp153739 #define OVSEC_KADM_NOT_INIT KADM5_NOT_INIT 8112881Smp153739 #define OVSEC_KADM_UNK_PRINC KADM5_UNK_PRINC 8122881Smp153739 #define OVSEC_KADM_UNK_POLICY KADM5_UNK_POLICY 8132881Smp153739 #define OVSEC_KADM_BAD_MASK KADM5_BAD_MASK 8142881Smp153739 #define OVSEC_KADM_BAD_CLASS KADM5_BAD_CLASS 8152881Smp153739 #define OVSEC_KADM_BAD_LENGTH KADM5_BAD_LENGTH 8162881Smp153739 #define OVSEC_KADM_BAD_POLICY KADM5_BAD_POLICY 8172881Smp153739 #define OVSEC_KADM_BAD_PRINCIPAL KADM5_BAD_PRINCIPAL 8182881Smp153739 #define OVSEC_KADM_BAD_AUX_ATTR KADM5_BAD_AUX_ATTR 8192881Smp153739 #define OVSEC_KADM_BAD_HISTORY KADM5_BAD_HISTORY 8202881Smp153739 #define OVSEC_KADM_BAD_MIN_PASS_LIFE KADM5_BAD_MIN_PASS_LIFE 8212881Smp153739 #define OVSEC_KADM_PASS_Q_TOOSHORT KADM5_PASS_Q_TOOSHORT 8222881Smp153739 #define OVSEC_KADM_PASS_Q_CLASS KADM5_PASS_Q_CLASS 8232881Smp153739 #define OVSEC_KADM_PASS_Q_DICT KADM5_PASS_Q_DICT 8242881Smp153739 #define OVSEC_KADM_PASS_REUSE KADM5_PASS_REUSE 8252881Smp153739 #define OVSEC_KADM_PASS_TOOSOON KADM5_PASS_TOOSOON 8262881Smp153739 #define OVSEC_KADM_POLICY_REF KADM5_POLICY_REF 8272881Smp153739 #define OVSEC_KADM_INIT KADM5_INIT 8282881Smp153739 #define OVSEC_KADM_BAD_PASSWORD KADM5_BAD_PASSWORD 8292881Smp153739 #define OVSEC_KADM_PROTECT_PRINCIPAL KADM5_PROTECT_PRINCIPAL 8302881Smp153739 #define OVSEC_KADM_BAD_SERVER_HANDLE KADM5_BAD_SERVER_HANDLE 8312881Smp153739 #define OVSEC_KADM_BAD_STRUCT_VERSION KADM5_BAD_STRUCT_VERSION 8322881Smp153739 #define OVSEC_KADM_OLD_STRUCT_VERSION KADM5_OLD_STRUCT_VERSION 8332881Smp153739 #define OVSEC_KADM_NEW_STRUCT_VERSION KADM5_NEW_STRUCT_VERSION 8342881Smp153739 #define OVSEC_KADM_BAD_API_VERSION KADM5_BAD_API_VERSION 8352881Smp153739 #define OVSEC_KADM_OLD_LIB_API_VERSION KADM5_OLD_LIB_API_VERSION 8362881Smp153739 #define OVSEC_KADM_OLD_SERVER_API_VERSION KADM5_OLD_SERVER_API_VERSION 8372881Smp153739 #define OVSEC_KADM_NEW_LIB_API_VERSION KADM5_NEW_LIB_API_VERSION 8382881Smp153739 #define OVSEC_KADM_NEW_SERVER_API_VERSION KADM5_NEW_SERVER_API_VERSION 8392881Smp153739 #define OVSEC_KADM_SECURE_PRINC_MISSING KADM5_SECURE_PRINC_MISSING 8402881Smp153739 #define OVSEC_KADM_NO_RENAME_SALT KADM5_NO_RENAME_SALT 8412881Smp153739 8422881Smp153739 #endif /* USE_KADM5_API_VERSION == 1 */ 8430Sstevel@tonic-gate 8443998Ssemery #define MAXPRINCLEN 125 8453998Ssemery 8463998Ssemery void trunc_name(size_t *len, char **dots); 8473998Ssemery 8480Sstevel@tonic-gate krb5_chgpwd_prot _kadm5_get_kpasswd_protocol(void *server_handle); 8490Sstevel@tonic-gate kadm5_ret_t kadm5_chpass_principal_v2(void *server_handle, 8500Sstevel@tonic-gate krb5_principal princ, 8510Sstevel@tonic-gate char *new_password, 8520Sstevel@tonic-gate kadm5_ret_t *srvr_rsp_code, 8530Sstevel@tonic-gate krb5_data *srvr_msg); 8540Sstevel@tonic-gate 8550Sstevel@tonic-gate void handle_chpw(krb5_context context, int s, void *serverhandle, 8560Sstevel@tonic-gate kadm5_config_params *params); 8570Sstevel@tonic-gate 8580Sstevel@tonic-gate #ifdef __cplusplus 8590Sstevel@tonic-gate } 8600Sstevel@tonic-gate #endif 8610Sstevel@tonic-gate 8620Sstevel@tonic-gate #endif /* __KADM5_ADMIN_H__ */ 863