mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-28 18:01:23 -06:00
f2cc9c8d33
User always receives the same error message if he changes his password via "ipa passwd" command and the new password fails configured password policy. He then has to investigate on his own the actual reason why was the policy violated. This patch improves our SLAPI PWD plugins to provide a better error message explaining the violation reason. https://fedorahosted.org/freeipa/ticket/2067
72 lines
2.2 KiB
C
72 lines
2.2 KiB
C
/*
|
|
* Password related utils for FreeIPA
|
|
*
|
|
* Authors: Simo Sorce <ssorce@redhat.com>
|
|
*
|
|
* Copyright (C) 2011 Simo Sorce, Red Hat
|
|
* see file 'COPYING' for use and warranty information
|
|
*
|
|
* This program is free software you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef _IPA_PWD_H_
|
|
#define _IPA_PWD_H_
|
|
|
|
/* 90 days default pwd max lifetime */
|
|
#define IPAPWD_DEFAULT_PWDLIFE (90 * 24 *3600)
|
|
#define IPAPWD_DEFAULT_MINLEN 0
|
|
|
|
/*
|
|
* IMPORTANT: please update error string table in ipa_pwd.c if you change this
|
|
* error code table.
|
|
*/
|
|
enum ipapwd_error {
|
|
IPAPWD_POLICY_ERROR = -1,
|
|
IPAPWD_POLICY_OK = 0,
|
|
IPAPWD_POLICY_ACCOUNT_EXPIRED = 1,
|
|
IPAPWD_POLICY_PWD_TOO_YOUNG = 2,
|
|
IPAPWD_POLICY_PWD_TOO_SHORT = 3,
|
|
IPAPWD_POLICY_PWD_IN_HISTORY = 4,
|
|
IPAPWD_POLICY_PWD_COMPLEXITY = 5
|
|
};
|
|
|
|
struct ipapwd_policy {
|
|
int min_pwd_life;
|
|
int max_pwd_life;
|
|
int min_pwd_length;
|
|
int history_length;
|
|
int min_complexity;
|
|
};
|
|
|
|
time_t ipapwd_gentime_to_time_t(char *timestr);
|
|
|
|
int ipapwd_check_policy(struct ipapwd_policy *policy,
|
|
char *password,
|
|
time_t cur_time,
|
|
time_t acct_expiration,
|
|
time_t pwd_expiration,
|
|
time_t last_pwd_change,
|
|
char **pwd_history);
|
|
|
|
char * ipapwd_error2string(enum ipapwd_error err);
|
|
|
|
int ipapwd_generate_new_history(char *password,
|
|
time_t cur_time,
|
|
int history_length,
|
|
char **pwd_history,
|
|
char ***new_pwd_history,
|
|
int *new_pwd_hlen);
|
|
|
|
#endif
|