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; }