/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* bos72V src/bos/usr/include/userpw.h 1.11.3.4 */ /* */ /* Licensed Materials - Property of IBM */ /* */ /* COPYRIGHT International Business Machines Corp. 1988,2019 */ /* All Rights Reserved */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /* */ /* IBM_PROLOG_END_TAG */ /* @(#)92 1.11.3.4 src/bos/usr/include/userpw.h, cmdsauth, bos72V, v2020_04B1 11/19/19 13:59:42 */ /* * COMPONENT_NAME: (CMDSAUTH) * * FUNCTIONS: * * ORIGINS: 27 * * (C) COPYRIGHT International Business Machines Corp. 1988, 1994 * All Rights Reserved * Licensed Materials - Property of IBM * * US Government Users Restricted Rights - Use, duplication or * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ #ifndef _H_USERPW #define _H_USERPW #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* function declarations */ #ifdef _NO_PROTO extern struct userpw *getuserpw (); extern struct userpwx *getuserpwx (); extern int putuserpw (); extern int putuserpwx (); extern int putuserpwhist(); extern int setpwdb (); extern int endpwdb (); extern int __login_name_max; extern int __get_login_name_max (); extern int max_pw_passlen(); extern int __get_hash_pwd_len(); extern int __get_hashed_pwd_len(); extern int __get_salt_len(); extern int __get_pwd_len_max(); extern int __get_pwd_len_max_from_lpa(); extern int __get_salt_len_max_from_lpa(); #else extern struct userpw *getuserpw (char *); extern struct userpwx *getuserpwx (char *); extern int putuserpw (struct userpw *); extern int putuserpwx (struct userpwx *); extern int putuserpwhist(struct userpw *, char **); extern int setpwdb (int); extern int endpwdb (void); extern int __login_name_max; extern int __get_login_name_max (void); extern int max_pw_passlen(void); extern int __get_hash_pwd_len(char *); extern int __get_hashed_pwd_len(char *); extern int __get_salt_len(void); extern int __get_pwd_len_max(void); extern int __get_pwd_len_max_from_lpa(char *); extern int __get_salt_len_max_from_lpa(char *); #endif /* _NO_PROTO */ /* manifest constants and limits */ #define MAX_PASS PASS_MAX /* * The following symbols are for determining maximum possible sizes * when declaring arrays, memory etc. * MAXIMPL_PW_PASSLEN - password length in chars * MAXIMPL_PW_CRYPTLEN - encrypted pw length in chars * MAXIMPL_MAX_HISTSIZE - shell history entries * MAXIMPL_SALT - encryption salt * The following are for use at runtime to determine the maximum size * in the current configuration of the system. These are not suitable * for use in array declarations, etc. * PW_PASSLEN * PW_CRYPTLEN * MAX_HISTSIZE * MAX_SALT */ #define MAXIMPL_PW_PASSLEN 256 #define PW_PASSLEN ((__extension_status & _EXTENSION_C2)? \ max_pw_passlen():__get_pwd_len_max()) #define MAXIMPL_PW_CRYPTLEN 255 #define PW_CRYPTLEN ((__extension_status & _EXTENSION_C2)? \ encrypted_pw_passlen():13) #define MAXIMPL_MAX_HISTSIZE 50 #define MAX_HISTSIZE ((__extension_status & _EXTENSION_C2)? \ max_history_size():50) #define MAXIMPL_SALT 32 #define MAX_SALT ((__extension_status & _EXTENSION_C2)? \ salt_len():__get_salt_len()) /* * Maximum password length supported by a LPA */ #define PW_PASSLEN_BY_LPA(lpa) __get_pwd_len_max_from_lpa(lpa) /* * Maximum length of hashed password generated by a LPA */ #define PW_CRYPTLEN_MAX(lpa) __get_hash_pwd_len(lpa) /* * The length of a hashed password */ #define PW_CRYPTLEN_HASHED(pwd) __get_hashed_pwd_len(pwd) /* * Maximum salt length supported by a LPA */ #define MAX_SALT_BY_LPA(lpa) __get_salt_len_max_from_lpa(lpa) #define PW_NAMELEN L_cuserid /* max length of a user's name */ /* obsolete, use PW_USERNAME_LEN */ #define PW_USERNAME_LEN (__login_name_max ? __login_name_max : \ (__login_name_max = __get_login_name_max ())) #define PW_GROUPNAME_LEN (__login_name_max ? __login_name_max : \ (__login_name_max = __get_login_name_max ())) #define MAXIMPL_LOGIN_NAME_MAX 256 #define MIN_MINAGE 0 /* minimum minage value */ #define MAX_MINAGE 52 /* maximum minage value */ #define MIN_MAXAGE 0 /* minimum maxage value */ #define MAX_MAXAGE 52 /* maximum maxage value */ #define MIN_MAXEXP (-1) /* minimum maxexpired value */ #define MAX_MAXEXP 52 /* maximum maxexpired value */ #define MIN_MINALPHA 0 /* minimum minalpha value */ #define MAXIMPL_MAX_MINALPHA MAXIMPL_PW_PASSLEN #define MAX_MINALPHA PW_PASSLEN /* maximum minalpha value */ #define MIN_MINOTHER 0 /* minimum minother value */ #define MAXIMPL_MAX_MINOTHER MAXIMPL_PW_PASSLEN #define MAX_MINOTHER PW_PASSLEN /* maximum minother value */ #define MIN_MINDIFF 0 /* minimum mindiff value */ #define MAXIMPL_MAX_MINDIFF MAXIMPL_PW_PASSLEN #define MAX_MINDIFF PW_PASSLEN /* maximum mindiff value */ #define MIN_MAXREP 0 /* minimum maxrepeats value */ #define MAXIMPL_MAX_MAXREP MAXIMPL_PW_PASSLEN #define MAX_MAXREP PW_PASSLEN /* maximum maxrepeats value */ #define MIN_MINLEN 0 /* minimum minlen value */ #define MAXIMPL_MAX_MINLEN MAXIMPL_PW_PASSLEN #define MAX_MINLEN PW_PASSLEN /* maximum minlen value */ #define MIN_HISTSIZE 0 /* min value for histsize attribute */ #define MAXIMPL_MAX_HISTSIZE 50 /* maximum number of passwords kept */ #define MIN_HISTEXPIRE 0 /* min value for histexpire attribute */ #define MAX_HISTEXPIRE 260 /* maximum interval is 5 years */ #define PWDCHECKS_LIBPATH "/usr/lib" /* flags for user password */ #define PW_NOCHECK 0x1 #define PW_ADMCHG 0x2 #define PW_ADMIN 0x4 #define PW_NOMINAGE 0x8 /* Obsolete */ struct userpw { char upw_name[PW_NAMELEN]; /* user's name */ char *upw_passwd; /* user's passwd */ unsigned int upw_flags; /* flags of restrictions */ time_t upw_lastupdate; /* date of last passwd update */ }; struct userpwx { char *upw_name; /* user's name */ char *upw_passwd; /* user's passwd */ unsigned int upw_flags; /* flags of restrictions */ unsigned int upw_padding; /* padding for 64-bit alignment */ time64_t upw_lastupdate; /* date of last passwd update */ char upw_authdb[16]; /* method for this password */ uint64_t upw_rsvd[4]; /* set to 0, reserved for future use */ }; #ifdef __cplusplus } #endif #endif /* _H_USERPW */