Node:Authenticator, Next:Address, Previous:Iterator, Up:libmailbox
/* Prefix auth_ is reserved */#include <mailutils/auth.h>
There are many ways to authenticate to a server. To be flexible the
authentication process is provided by two objects auth_t and
ticket_t. The auth_t can implement different protocol like
APOP, MD5-AUTH, One Time Passwd etc .. By default if a mailbox
does not understand or know how to authenticate it falls back to
user/passwd authentication. The ticket_t is a way for
Mailboxes and Mailers provide a way to authenticate when the URL does not
contain enough information. The default action is to call the function
auth_authenticate which will get the user and passwd
if not set, this function can be overridden by a custom method.
| int auth_create (auth_t *pauth, void *owner) | Function |
| void auth_destroy (auth_t *pauth, void *owner) | Function |
| int auth_prologue (auth_t auth) | Function |
| int auth_authenticate (auth_t auth, char **user, char **passwd) | Function |
| int auth_epilogue (auth_t auth) | Function |
A simple example of an authenticate function:
#include <mailutils/auth.h>
#include <stdio.h>
#include <string.h>
int
my_authenticate (auth_t auth, char **user, char **passwd)
{
char u[128] = "";
char p[128] = "";
/* prompt the user name */
printf ("User: ");
fflush (stdout);
fgets (u, sizeof (u), stdin);
u[strlen (u) - 1] = '\0'; /* nuke the trailing NL */
/* prompt the passwd */
printf ("Passwd: "); fflush (stdout);
echo_off ();
fgets (p, sizeof(p), stdin);
echo_on ();
p[strlen (p) - 1] = '\0';
/* duplicate */
*user = strdup (u);
*passwd = strdup (p);
return 0;
}