8772f93a0e6edd2e07aa87c222e00da4c3ee9e4b
[openafs.git] / src / tsm41 / aix_auth_common.c
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  *
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #include <afsconfig.h>
11 #include <afs/param.h>
12
13
14 #if defined(AFS_AIX41_ENV)
15 #include <sys/types.h>
16 #include <sys/param.h>
17 #include <stdio.h>
18 #include <locale.h>
19 #include <nl_types.h>
20 #include <pwd.h>
21 #include <netdb.h>
22 #include <sys/socket.h>
23 #include <sys/file.h>
24 #include <errno.h>
25 #include <usersec.h>
26
27 #include <afs/kauth.h>
28 #include <afs/kautils.h>
29
30 #include "aix_auth_prototypes.h"
31
32 int
33 afs_authenticate(char *userName, char *response, int *reenter, char **message)
34 {
35     char *reason, *pword, prompt[256];
36     struct passwd *pwd;
37     int code, unixauthneeded, password_expires = -1;
38
39     *reenter = 0;
40     *message = (char *)0;
41     if (response) {
42         pword = response;
43     } else {
44         sprintf(prompt, "Enter AFS password for %s: ", userName);
45         pword = getpass(prompt);
46         if (strlen(pword) == 0) {
47             printf
48                 ("Unable to read password because zero length passord is illegal\n");
49             *message = (char *)malloc(256);
50             sprintf(*message,
51                     "Unable to read password because zero length passord is illegal\n");
52             return AUTH_FAILURE;
53         }
54     }
55
56     if ((pwd = getpwnam(userName)) == NULL) {
57         *message = (char *)malloc(256);
58         sprintf(*message, "getpwnam for user failed\n");
59         return AUTH_FAILURE;
60     }
61
62     if (code =
63         ka_UserAuthenticateGeneral(KA_USERAUTH_VERSION + KA_USERAUTH_DOSETPAG,
64                                    userName, (char *)0, (char *)0, pword, 0,
65                                    &password_expires, 0, &reason)) {
66         if (code == KANOENT)
67             return AUTH_NOTFOUND;
68         *message = (char *)malloc(1024);
69         sprintf(*message, "Unable to authenticate to AFS because %s.\n",
70                 reason);
71         return AUTH_FAILURE;
72     }
73     aix_ktc_setup_ticket_file(userName);
74     return AUTH_SUCCESS;
75 }
76
77 int
78 afs_chpass(char *userName, char *oldPasswd, char *newPasswd, char **message)
79 {
80     return AUTH_SUCCESS;
81 }
82
83 int
84 afs_passwdexpired(char *userName, char **message)
85 {
86     return AUTH_SUCCESS;
87 }
88
89 int
90 afs_passwdrestrictions(char *userName, char *newPasswd, char *oldPasswd,
91                        char **message)
92 {
93     return AUTH_SUCCESS;
94 }
95
96 char *
97 afs_getpasswd(char * userName)
98 {
99     errno = ENOSYS;
100     return NULL;
101 }
102
103 #endif /* AFS_AIX41_ENV */