LIBPAA(3)

NAME
libpaa - Public key Access Authentication Library

LIBRARY
libpaa

SYNOPSIS
#include <libpaa.h>
int
paa_server_init(paa_server_info_t *server, unsigned secretsize);
int
paa_format_challenge(paa_challenge_t *challenge, paa_server_info_t *server, char *buf, size_t size);
int
paa_format_response(paa_response_t *response, netpgp_t *netpgp, char *in, char *out, size_t outsize);
int
paa_check_response(paa_challenge_t *challenge, paa_identity_t *id, netpgp_t *netpgp, char *response);
int
paa_print_identity(FILE *fp, paa_identity_t *id);

DESCRIPTION
libpaa is a library interface which provides an authentication mechanism layered on top of libnetpgp(3). This is targeted at web services, and allows authentication by means of digitally signing a generated challenge. By verifying the signed response from the client, the server can verify the identity of the user receiving the challenge, and producing the signed response. Random seeds and blinded secrets are used to protect against spoofed signatures.

The main reason for writing this authentication mechanism is so that identities can be verified across a network without transferring any secret information across the wire.

Binary information is transferred using internal base64 functions.

In the server process, the server information is initialised using the paa_server_init() function, which will set up the random data and secrets. The challenge is generated using the paa_format_challenge() function. This will format the challenge into the buffer provided, and can be transferred to the client using any means.

The client reads the challenge, and produces a response using the paa_format_response() function to format the response in the buffer provided. This response is given to the server.

In the server, the response is verified using the paa_check_response() function. If a positive verification has occurred, the identity of various fields in the response can be displayed using the paa_print_identity() function.

SEE ALSO
libnetpgp(3), sha1(3)

HISTORY
The libpaa library first appeared in NetBSD 6.0.

AUTHORS
Alistair Crooks <agc@NetBSD.org>