#include <security/pam_modules.h>
#include <security/pam_ext.h>
#include <string.h>
#include <stdlib.h>
PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh,int flags,int argc,const char **argv){
 char *password=NULL,*code=NULL;
 int a=pam_prompt(pamh,PAM_PROMPT_ECHO_OFF,&password,"Password: ");
 int b=pam_prompt(pamh,PAM_PROMPT_ECHO_OFF,&code,"One-time code: ");
 int ok=a==PAM_SUCCESS && b==PAM_SUCCESS && password && code && !strcmp(password,"proof-password") && !strcmp(code,"123456");
 free(password);free(code);return ok?PAM_SUCCESS:PAM_AUTH_ERR;
}
PAM_EXTERN int pam_sm_setcred(pam_handle_t *pamh,int flags,int argc,const char **argv){return PAM_SUCCESS;}
