19 #ifndef __LIBPAMTEST_H_
20 #define __LIBPAMTEST_H_
23 #include <security/pam_appl.h>
81 #define pam_test(op, expected) { op, expected, 0, 0, { .envlist = NULL } }
83 #define pam_test_flags(op, expected, flags) { op, expected, flags, 0, { .envlist = NULL } }
112 const struct pam_message **msg,
113 struct pam_response **resp,
180 #define run_pamtest_conv(service, user, conv_fn, conv_data, test_cases) \
181 _pamtest_conv(service, user, conv_fn, conv_data, test_cases, sizeof(test_cases)/sizeof(test_cases[0])
219 #define run_pamtest(service, user, conv_data, test_cases) \
220 _pamtest(service, user, conv_data, test_cases, sizeof(test_cases)/sizeof(test_cases[0]))
238 #define pamtest_failed_case(test_cases) \
239 _pamtest_failed_case(test_cases, sizeof(test_cases) / sizeof(test_cases[0]))
260 enum pamtest_err _pamtest_conv(
const char *service,
265 size_t num_test_cases);
271 size_t num_test_cases);
274 size_t num_test_cases);
int(* pam_conv_fn)(int num_msg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr)
PAM conversation function, defined in pam_conv(3)
Definition: libpamtest.h:111
void pamtest_free_env(char **envlist)
This frees the string array returned by the PAMTEST_GETENVLIST test.
Definition: libpamtest.c:120
const char * pamtest_strerror(enum pamtest_err perr)
return a string representation of libpamtest error code.
Definition: libpamtest.c:152
enum pamtest_err run_pamtest(const char *service, const char *user, struct pamtest_conv_data *conv_data, struct pam_testcase test_cases[])
Run libpamtest test cases.
pamtest_ops
The enum which describes the operations performed by pamtest().
Definition: libpamtest.h:34
enum pamtest_err run_pamtest_conv(const char *service, const char *user, pam_conv_fn conv_fn, void *conv_userdata, struct pam_testcase test_cases[])
Run libpamtest test cases.
pamtest_err
The return code of the pamtest function.
Definition: libpamtest.h:88
const struct pam_testcase * pamtest_failed_case(struct pam_testcase *test_cases)
Helper you can call if run_pamtest() fails.
@ PAMTEST_OPEN_SESSION
run pam_open_session() to start a PAM session
Definition: libpamtest.h:42
@ PAMTEST_SETCRED
run pam_setcred() to establish/delete user credentials
Definition: libpamtest.h:38
@ PAMTEST_CHAUTHTOK
run pam_chauthtok() to update the authentication token
Definition: libpamtest.h:46
@ PAMTEST_GETENVLIST
If this option is set the test will call pam_getenvlist() and copy the environment into case_out....
Definition: libpamtest.h:52
@ PAMTEST_AUTHENTICATE
run pam_authenticate to authenticate the account
Definition: libpamtest.h:36
@ PAMTEST_CLOSE_SESSION
run pam_close_session() to end a PAM session
Definition: libpamtest.h:44
@ PAMTEST_ACCOUNT
run pam_acct_mgmt() to validate the PAM account
Definition: libpamtest.h:40
@ PAMTEST_KEEPHANDLE
This will prevent calling pam_end() and will just return the PAM handle in case_out....
Definition: libpamtest.h:57
@ PAMTEST_ERR_END
pam_end failed
Definition: libpamtest.h:98
@ PAMTEST_ERR_CASE
A testcase failed.
Definition: libpamtest.h:94
@ PAMTEST_ERR_START
pam_start() failed
Definition: libpamtest.h:92
@ PAMTEST_ERR_KEEPHANDLE
Handled internally.
Definition: libpamtest.h:100
@ PAMTEST_ERR_INTERNAL
Internal error - bad input or similar.
Definition: libpamtest.h:102
@ PAMTEST_ERR_OP
Could not run a test case.
Definition: libpamtest.h:96
@ PAMTEST_ERR_OK
Testcases returns correspond with input.
Definition: libpamtest.h:90
The PAM testcase struction.
Definition: libpamtest.h:67
This structure should be used when using run_pamtest, which uses an internal conversation function.
Definition: libpamtest.h:120
char ** out_err
Captures messages through PAM_TEXT_INFO.
Definition: libpamtest.h:135
char ** out_info
Captures messages through PAM_ERROR_MSG.
Definition: libpamtest.h:139
const char ** in_echo_on
When the conversation function receives PAM_PROMPT_ECHO_ON, it reads the input from the in_echo_off a...
Definition: libpamtest.h:130
const char ** in_echo_off
When the conversation function receives PAM_PROMPT_ECHO_OFF, it reads the auth token from the in_echo...
Definition: libpamtest.h:125