annotate pam-sober/test.c @ 34:ec70822cbdef

Overhaul
author Andy Caldwell <andrew.caldwell@metaswitch.com>
date Sun, 24 Apr 2022 03:42:11 +0100
parents 53efbcff805d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
1 #include <security/pam_appl.h>
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
2 #include <security/pam_misc.h>
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
3 #include <stdio.h>
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
4
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
5 const struct pam_conv conv = {
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
6 misc_conv,
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
7 NULL
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
8 };
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
9
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
10 int main(int argc, char *argv[]) {
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
11 pam_handle_t* pamh = NULL;
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
12 int retval;
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
13 const char* user = "nobody";
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
14
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
15 if(argc != 2) {
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
16 printf("Usage: app [username]\n");
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
17 exit(1);
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
18 }
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
19
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
20 user = argv[1];
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
21
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
22 retval = pam_start("sober-auth", user, &conv, &pamh);
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
23
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
24 // Are the credentials correct?
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
25 if (retval == PAM_SUCCESS) {
34
ec70822cbdef Overhaul
Andy Caldwell <andrew.caldwell@metaswitch.com>
parents: 17
diff changeset
26 printf("PAM module initialized\n");
17
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
27 retval = pam_authenticate(pamh, 0);
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
28 }
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
29
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
30 // Can the accound be used at this time?
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
31 if (retval == PAM_SUCCESS) {
34
ec70822cbdef Overhaul
Andy Caldwell <andrew.caldwell@metaswitch.com>
parents: 17
diff changeset
32 printf("Credentials accepted.\n");
17
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
33 retval = pam_acct_mgmt(pamh, 0);
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
34 }
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
35
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
36 // Did everything work?
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
37 if (retval == PAM_SUCCESS) {
34
ec70822cbdef Overhaul
Andy Caldwell <andrew.caldwell@metaswitch.com>
parents: 17
diff changeset
38 printf("Account is valid.\n");
17
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
39 printf("Authenticated\n");
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
40 } else {
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
41 printf("Not Authenticated\n");
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
42 }
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
43
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
44 // close PAM (end session)
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
45 if (pam_end(pamh, retval) != PAM_SUCCESS) {
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
46 pamh = NULL;
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
47 printf("check_user: failed to release authenticator\n");
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
48 exit(1);
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
49 }
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
50
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
51 return retval == PAM_SUCCESS ? 0 : 1;
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
52 }
53efbcff805d Add pam-sober
Anthony Nowell <anthony@algorithmia.com>
parents:
diff changeset
53