|
NAME
| |
authdial, passtokey, nvcsum, readnvram, convT2M, convM2T, convTR2M,
convM2TR, convA2M, convM2A, convPR2M, convM2PR, _asgetticket,
_asrdresp – routines for communicating with authentication servers
|
SYNOPSIS
| |
#include <u.h>
#include <libc.h>
#include <authsrv.h>
int authdial(char *netroot, char *ad);
int passtokey(char key[DESKEYLEN], char *password)
uchar nvcsum(void *mem, int len)
int readnvram(Nvrsafe *nv, int flag);
int convT2M(Ticket *t, char *msg, char *key)
void convM2T(char *msg, Ticket *t, char *key)
int convA2M(Authenticator *a, char *msg, char *key)
void convM2A(char *msg, Authenticator *a, char *key)
int convTR2M(Ticketreq *tr, char *msg)
void convM2TR(char *msg, Ticketreq *tr)
int convPR2M(Passwordreq *pr, char *msg, char *key)
void convM2PR(char *msg, Passwordreq *pr, char *key)
int _asgetticket(int fd, char *trbuf, char *tbuf);
int _asrdresp(int fd, char *buf, int len);
|
DESCRIPTION
| |
Authdial dials an authentication server over the network rooted
at net, default /net. The authentication domain, ad, specifies
which server to call. If ad is non-nil, the network database (see
ndb(1)) is queried for an entry which contains authdom=ad or dom=ad,
the former having precedence, and which also contains an auth
attribute. The string dialed
is then netroot!server!ticket where server is the value of the
auth attribute. If no entry is found, the error string is set
to “no authentication server found” and -1 is returned. If authdom
is nil, the string netroot!$auth!ticket is used to make the call.
Passtokey converts password into a DES key and stores the result
in key. It returns 0 if password could not be converted, and 1
otherwise.
Readnvram reads authentication information into the structure:
| |
struct Nvrsafe
{
| |
char machkey[DESKEYLEN];
uchar machsum;
char authkey[DESKEYLEN];
uchar authsum;
char config[CONFIGLEN];
uchar configsum;
char authid[ANAMELEN];
uchar authidsum;
char authdom[DOMLEN];
uchar authdomsum;
|
};
|
On Sparc, MIPS, and SGI machines this information is in non-volatile
ram, accessible in the file #r/nvram. On x86s and Alphas readnvram
successively opens the following areas stopping with the first
to succeed:
– the partition named by the $nvram environment variable
– the partition #S/sdC0/nvram
– a file called plan9.nvr in the partition #S/sdC0/9fat
– the partition #S/sd00/nvram
– a file called plan9.nvr in the partition #S/sd00/9fat
– a file called plan9.nvr on a DOS floppy in drive 0
– a file called plan9.nvr on a DOS floppy in drive 1
The nvcsums of the fields machkey, authid, and authdom must match
their respective checksum or that field is zeroed. If flag is
NVwrite or at least one checksum fails and flag is NVwriteonerr,
readnvram will prompt for new values on #c/cons and then write
them back to the storage area.
ConvT2M, convA2M, convTR2M, and convPR2M convert tickets, authenticators,
ticket requests, and password change request structures into transmittable
messages. ConvM2T, convM2A, convM2TR, and convM2PR are used to
convert them back. Key is used for encrypting the message before
transmission and decrypting after reception.
The routine _asgetresp receives either a character array or an
error string. On error, it sets errstr and returns -1. If successful,
it returns the number of bytes received.
The routine _asgetticket sends a ticket request message and then
uses _asgetresp to recieve an answer.
|
SOURCE
SEE ALSO
DIAGNOSTICS
| |
These routines set errstr. Integer-valued functions return -1
on error.
|
|
|