/usr/include/pwquality.h is in libpwquality-dev 1.3.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | /*
* libpwquality main API code header
*
* Copyright (c) Red Hat, Inc, 2011
* Copyright (c) Tomas Mraz <tm@t8m.info>, 2011
*
* See the end of the file for the License Information
*/
#ifndef PWQUALITY_H
#define PWQUALITY_H
#ifdef __cplusplus
extern "C" {
#endif
#define PWQ_SETTING_DIFF_OK 1
#define PWQ_SETTING_MIN_LENGTH 3
#define PWQ_SETTING_DIG_CREDIT 4
#define PWQ_SETTING_UP_CREDIT 5
#define PWQ_SETTING_LOW_CREDIT 6
#define PWQ_SETTING_OTH_CREDIT 7
#define PWQ_SETTING_MIN_CLASS 8
#define PWQ_SETTING_MAX_REPEAT 9
#define PWQ_SETTING_DICT_PATH 10
#define PWQ_SETTING_MAX_CLASS_REPEAT 11
#define PWQ_SETTING_GECOS_CHECK 12
#define PWQ_SETTING_BAD_WORDS 13
#define PWQ_SETTING_MAX_SEQUENCE 14
#define PWQ_SETTING_DICT_CHECK 15
#define PWQ_MAX_ENTROPY_BITS 256
#define PWQ_MIN_ENTROPY_BITS 56
#define PWQ_MAX_ERROR_MESSAGE_LEN 256
#define PWQ_ERROR_SUCCESS 0 /* implicit, not used in the library code */
#define PWQ_ERROR_FATAL_FAILURE -1
#define PWQ_ERROR_INTEGER -2
#define PWQ_ERROR_CFGFILE_OPEN -3
#define PWQ_ERROR_CFGFILE_MALFORMED -4
#define PWQ_ERROR_UNKNOWN_SETTING -5
#define PWQ_ERROR_NON_INT_SETTING -6
#define PWQ_ERROR_NON_STR_SETTING -7
#define PWQ_ERROR_MEM_ALLOC -8
#define PWQ_ERROR_TOO_SIMILAR -9
#define PWQ_ERROR_MIN_DIGITS -10
#define PWQ_ERROR_MIN_UPPERS -11
#define PWQ_ERROR_MIN_LOWERS -12
#define PWQ_ERROR_MIN_OTHERS -13
#define PWQ_ERROR_MIN_LENGTH -14
#define PWQ_ERROR_PALINDROME -15
#define PWQ_ERROR_CASE_CHANGES_ONLY -16
#define PWQ_ERROR_ROTATED -17
#define PWQ_ERROR_MIN_CLASSES -18
#define PWQ_ERROR_MAX_CONSECUTIVE -19
#define PWQ_ERROR_EMPTY_PASSWORD -20
#define PWQ_ERROR_SAME_PASSWORD -21
#define PWQ_ERROR_CRACKLIB_CHECK -22
#define PWQ_ERROR_RNG -23
#define PWQ_ERROR_GENERATION_FAILED -24
#define PWQ_ERROR_USER_CHECK -25
#define PWQ_ERROR_GECOS_CHECK -26
#define PWQ_ERROR_MAX_CLASS_REPEAT -27
#define PWQ_ERROR_BAD_WORDS -28
#define PWQ_ERROR_MAX_SEQUENCE -29
typedef struct pwquality_settings pwquality_settings_t;
/* Return default pwquality settings to be used in other library calls. */
pwquality_settings_t *
pwquality_default_settings(void);
/* Free pwquality settings data. */
void
pwquality_free_settings(pwquality_settings_t *pwq);
/* Parse the configuration file (if cfgfile is NULL then the default one).
* If auxerror is not NULL it also possibly returns auxiliary error information
* that must be passed into pwquality_strerror() function.
* New in 1.3.0: First tries to parse all *.conf configuration files from
* <cfgfile>.d directory if it exists. Order of parsing determines what
values will be in effect - the latest wins. */
int
pwquality_read_config(pwquality_settings_t *pwq, const char *cfgfile,
void **auxerror);
/* Useful for setting the options as configured on a pam module
* command line in form of <opt>=<val> */
int
pwquality_set_option(pwquality_settings_t *pwq, const char *option);
/* Set value of an integer setting. */
int
pwquality_set_int_value(pwquality_settings_t *pwq, int setting, int value);
/* Set value of a string setting. */
int
pwquality_set_str_value(pwquality_settings_t *pwq, int setting,
const char *value);
/* Get value of an integer setting. */
int
pwquality_get_int_value(pwquality_settings_t *pwq, int setting, int *value);
/* Get value of a string setting.
* The caller must copy the string before another calls that can
* manipulate the pwq settings object.
*/
int
pwquality_get_str_value(pwquality_settings_t *pwq, int setting, const char **value);
/* Generate a random password of entropy_bits entropy and check it according to
* the settings. */
int
pwquality_generate(pwquality_settings_t *pwq, int entropy_bits,
char **password);
/* Check the password according to the settings.
* It returns either score <0-100>, negative error number,
* and possibly also auxiliary error information that must be
* passed into pwquality_strerror() function.
* The old password is optional and can be NULL.
* The user is used for checking the password against user name
* and potentially other passwd information and can be NULL.
* The auxerror can be NULL - in that case the auxiliary error information
* is not returned.
* Not passing the *auxerror into pwquality_strerror() can lead to memory leaks.
* The score depends on PWQ_SETTING_MIN_LENGTH. If it is set higher,
* the score for the same passwords will be lower. */
int
pwquality_check(pwquality_settings_t *pwq, const char *password,
const char *oldpassword, const char *user, void **auxerror);
/* Translate the error code and auxiliary message into a localized
* text message.
* If buf is NULL it uses an internal static buffer which
* makes the function non-reentrant in that case.
* The returned pointer is not guaranteed to point to the buf. */
const char *
pwquality_strerror(char *buf, size_t len, int errcode, void *auxerror);
#ifdef __cplusplus
}
#endif
#endif /* PWQUALITY_H */
/*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, and the entire permission notice in its entirety,
* including the disclaimer of warranties.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* ALTERNATIVELY, this product may be distributed under the terms of
* the GNU General Public License version 2 or later, in which case the
* provisions of the GPL are required INSTEAD OF the above restrictions.
*
* THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
|