Russian, копать сюда
int pam_start(const char *service, const char *user, const
struct pam_conv *pam_conv, pam_handle_t **pamh);
struct pam_conv {
int (*conv)(); /* Conversation function */
void *appdata_ptr; /* Application data */
};
int conv(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void *appdata_ptr);
The conv() function is called by a service module to hold a
PAM conversation with the application or user. For window
applications, the application can create a new pop-up window
to be used by the interaction.
То есть ты можешь задать некую функцию через которую pam получит пароль. Функция может брать данные например из окна.