aboutsummaryrefslogtreecommitdiff
path: root/examples/vpass.c
diff options
context:
space:
mode:
authorSteve Langasek <steve.langasek@ubuntu.com>2019-01-03 17:05:01 -0800
committerSteve Langasek <steve.langasek@ubuntu.com>2019-01-03 17:27:13 -0800
commit419bd504587ec2bfc9085fe56e7a53433fd1eae6 (patch)
treed516c2ccae28dbd020cb69f50162f5d32acd7648 /examples/vpass.c
parentc68dce23face9f26b651917b418c7f80931fa7b7 (diff)
parent9c52e721044e7501c3d4567b36d222dc7326224a (diff)
downloadpam-419bd504587ec2bfc9085fe56e7a53433fd1eae6.tar.gz
pam-419bd504587ec2bfc9085fe56e7a53433fd1eae6.tar.bz2
pam-419bd504587ec2bfc9085fe56e7a53433fd1eae6.zip
merge upstream version 1.0.1
Diffstat (limited to 'examples/vpass.c')
-rw-r--r--examples/vpass.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/vpass.c b/examples/vpass.c
new file mode 100644
index 00000000..a54ec061
--- /dev/null
+++ b/examples/vpass.c
@@ -0,0 +1,51 @@
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <pwd.h>
+#include <sys/types.h>
+#include <security/pam_appl.h>
+
+static int
+test_conv (int num_msg UNUSED, const struct pam_message **msgm UNUSED,
+ struct pam_response **response UNUSED, void *appdata_ptr UNUSED)
+{
+ return 0;
+}
+
+static struct pam_conv conv = {
+ test_conv,
+ NULL
+};
+
+int main(void)
+{
+ char *user;
+ pam_handle_t *pamh;
+ struct passwd *pw;
+ uid_t uid;
+ int res;
+
+ uid = geteuid();
+ pw = getpwuid(uid);
+ if (pw) {
+ user = pw->pw_name;
+ } else {
+ fprintf(stderr, "Invalid userid: %lu\n", (unsigned long) uid);
+ exit(1);
+ }
+
+ pam_start("vpass", user, &conv, &pamh);
+ pam_set_item(pamh, PAM_TTY, "/dev/tty");
+ if ((res = pam_authenticate(pamh, 0)) != PAM_SUCCESS) {
+ fprintf(stderr, "Oops: %s\n", pam_strerror(pamh, res));
+ exit(1);
+ }
+
+ pam_end(pamh, res);
+ exit(0);
+}
+
+