diff options
| author | Joe Richey joerichey@google.com <joerichey@google.com> | 2017-07-17 17:19:37 -0700 |
|---|---|---|
| committer | Joe Richey joerichey@google.com <joerichey@google.com> | 2017-07-17 17:19:37 -0700 |
| commit | 0f63670409661f068ac597ccaa66490ac0f7ddd8 (patch) | |
| tree | 759eb2515b4fa560a2e10360621dfb8d841a03da /pam/pam.h | |
| parent | 46da5280eb7fe9fafabaee5c7202732fa15a034a (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.h | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -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 |