aboutsummaryrefslogtreecommitdiff
path: root/pam/pam.h
diff options
context:
space:
mode:
authorJoe Richey joerichey@google.com <joerichey@google.com>2017-07-17 17:19:37 -0700
committerJoe Richey joerichey@google.com <joerichey@google.com>2017-07-17 17:19:37 -0700
commit0f63670409661f068ac597ccaa66490ac0f7ddd8 (patch)
tree759eb2515b4fa560a2e10360621dfb8d841a03da /pam/pam.h
parent46da5280eb7fe9fafabaee5c7202732fa15a034a (diff)
pam: C implementation for conversation and cleanup
This commit adds in a C implementation for the pam_conv we will use in login.go as well as adding three CleanupFuncs that will be used with pam_set_data(). It also adds copyInfoSecret() which should be paired with freeSecret().
Diffstat (limited to 'pam/pam.h')
-rw-r--r--pam/pam.h23
1 files changed, 18 insertions, 5 deletions
diff --git a/pam/pam.h b/pam/pam.h
index 83ef2a9..9f3cdb2 100644
--- a/pam/pam.h
+++ b/pam/pam.h
@@ -22,10 +22,23 @@
#include <security/pam_appl.h>
-// fscrypt_service is the display name of the service requesting the passphrase.
-const char* fscrypt_service;
+// Conversation that will call back into Go code when appropriate.
+const struct pam_conv conv;
-// pam_init initializes the pam_conv structure for use with our Go callbacks.
-void pam_init(struct pam_conv* conv);
+// CleaupFuncs are used to cleanup specific PAM data.
+typedef void (*CleanupFunc)(pam_handle_t *pamh, void *data, int error_status);
-#endif
+// CleaupFunc that calls free() on data.
+void freeData(pam_handle_t *pamh, void *data, int error_status);
+
+// CleaupFunc that frees each item in a null terminated array of pointers and
+// then frees the array itself.
+void freeArray(pam_handle_t *pamh, void **array, int error_status);
+
+// Creates a copy of a C string, which resides in an locked buffer.
+void *copyIntoSecret(void *data);
+
+// CleaupFunc that Zeros wipes a C string and unlocks and frees its memory.
+void freeSecret(pam_handle_t *pamh, char *data, int error_status);
+
+#endif // FSCRYPT_PAM_H