[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.1.11 Authenticator

 
/* Prefixes authority_, ticket_, and wicket_ are reserved. */
#include <mailutils/auth.h>

There are many ways to authenticate to a server. To be flexible the authentication process is provided by three objects authority_t, ticket_t, and wicket_t. The authority_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 authority_authenticate() which will get the user and passwd if not set, this function can be overridden by a custom method.

Function: int ticket_create (ticket_t *, void *owner)

Function: void ticket_destroy (ticket_t *, void *owner)

Function: int ticket_set_destroy (ticket_t, void (*) (ticket_t), void *owner)

Function: void* ticket_get_owner (ticket_t)

Function: int ticket_set_pop (ticket_t, int (*_pop) (ticket_t, url_t, const char *, char **), void *)

Function: int ticket_pop (ticket_t, url_t, const char *, char **)

Function: int ticket_set_data (ticket_t, void *, void *owner)

Function: int ticket_get_data (ticket_t, void **)

Function: int authority_create (authority_t *, ticket_t, void *)

Function: void authority_destroy (authority_t *, void *)

Function: void* authority_get_owner (authority_t)

Function: int authority_set_ticket (authority_t, ticket_t)

Function: int authority_get_ticket (authority_t, ticket_t *)

Function: int authority_authenticate (authority_t)

Function: int authority_set_authenticate (authority_t, int (*_authenticate) (authority_t), void *)

Function: int authority_create_null (authority_t *authority, void *owner)

Function: int wicket_create (wicket_t *, const char *)

Function: void wicket_destroy (wicket_t *)

Function: int wicket_set_filename (wicket_t, const char *)

Function: int wicket_get_filename (wicket_t, char *, size_t, size_t *)

Function: int wicket_set_ticket (wicket_t, int (*) (wicket_t, const char *, const char *, ticket_t *))

Function: int wicket_get_ticket (wicket_t, ticket_t *, const char *, const char *)

A simple example of an authenticate function:

 
#include <stdio.h>
#include <string.h>
#include <mailutils/auth.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;
}


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated by Sergey Poznyakoff on December, 23 2004 using texi2html