manpages.info - online man pages   

SunOS man pages : pam_start (3)

PAM Library Functions                             pam_start(3PAM)

NAME

pam_start, pam_end - authentication transaction routines for PAM

SYNOPSIS

cc [ flag ... ] file ... -lpam [ library ... ] #include <security/pam_appl.h> int pam_start(const char *service, const char *user, const struct pam_conv *pam_conv, pam_handle_t **pamh); int pam_end(pam_handle_t *pamh, int status);

DESCRIPTION

The pam_start() function is called to initiate an authenti- cation transaction. pam_start() takes as arguments the name of the current service, service, the name of the user to be authenticated, user, the address of the conversation struc- ture, pam_conv, and the address of a variable to be assigned the authentication handle pamh. Upon successful completion, pamh refers to a PAM handle for use with subsequent calls to the authentication library. The pam_conv structure contains the address of the conver- sation function provided by the application. The underlying PAM service module invokes this function to output informa- tion to and retrieve input from the user. The pam_conv structure has the following entries: 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. The num_msg parameter is the number of messages associated with the call. The parameter msg is a pointer to an array of length num_msg of the pam_message structure. The pam_message structure is used to pass prompt, error mes- sage, or any text information from the authentication ser- vice to the application or user. It is the responsibility of the PAM service modules to localize the messages. The memory used by pam_message has to be allocated and freed by the PAM modules. The pam_message structure has the following SunOS 5.8 Last change: 22 Jul 1999 1 PAM Library Functions pam_start(3PAM) entries: struct pam_message{ int msg_style; char *msg; }; The message style, msg_style, can be set to one of the fol- lowing values: PAM_PROMPT_ECHO_OFF Prompt user, disabling echoing of response. PAM_PROMPT_ECHO_ON Prompt user, enabling echoing of response. PAM_ERROR_MSG Print error message. PAM_TEXT_INFO Print general text information. PAM_MSG_NOCONF Print general text information without user ack- nowledgment. PAM_CONV_INTERRUPT Return from the conversation function. The maximum size of the message and the response string is PAM_MAX_MSG_SIZE as defined in <security/pam.appl.h>. The structure pam_response is used by the authentication service to get the user's response back from the application or user. The storage used by pam_response has to be allo- cated by the application and freed by the PAM modules. The pam_response structure has the following entries: struct pam_response{ char *resp; int resp_retcode; /* currently not used, */ /* should be set to 0 */ }; It is the responsibility of the conversation function to strip off NEWLINE characters for PAM_PROMPT_ECHO_OFF and PAM_PROMPT_ECHO_ON message styles, and to add NEWLINE char- acters (if appropriate) for PAM_ERROR_MSG and PAM_TEXT_INFO message styles. The appdata_ptr argument is an application data pointer which is passed by the application to the PAM service SunOS 5.8 Last change: 22 Jul 1999 2 PAM Library Functions pam_start(3PAM) modules. Since the PAM modules pass it back through the conversation function, the applications can use this pointer to point to any application-specific data. The pam_end() function is called to terminate the authenti- cation transaction identified by pamh and to free any storage area allocated by the authentication module. The argument, status, is passed to the cleanup(|) function stored within the pam handle, and is used to determine what module-specific state must be purged. A cleanup function is attached to the handle by the underlying PAM modules through a call to pam_set_item(3PAM) to free module specific data.

RETURN VALUES

Refer to pam(3PAM) for information on error related return values.

ATTRIBUTES

See attributes(5) for description of the following attri- butes: ____________________________________________________________ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | |_____________________________|_____________________________| | Interface Stability | Stable | |_____________________________|_____________________________| | MT-Level | MT-Safe with exceptions | |_____________________________|_____________________________|

SEE ALSO

libpam(3LIB), pam(3PAM), pam_acct_mgmt(3PAM), pam_authenticate(3PAM), pam_chauthtok(3PAM), pam_open_session(3PAM), pam_setcred(3PAM), pam_set_item(3PAM), pam_strerror(3PAM), attributes(5)

NOTES

The interfaces in libpam are MT-Safe only if each thread within the multithreaded application uses its own PAM han- dle. SunOS 5.8 Last change: 22 Jul 1999 3