plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

authsrv.3 (4143B)


      1 .TH AUTHSRV 3
      2 .SH NAME
      3 authdial, passtokey, nvcsum, readnvram, convT2M, convM2T, convTR2M, convM2TR, convA2M, convM2A, convPR2M, convM2PR, _asgetticket, _asrdresp \- routines for communicating with authentication servers
      4 .SH SYNOPSIS
      5 .nf
      6 .PP
      7 .ft L
      8 #include <u.h>
      9 #include <libc.h>
     10 #include <authsrv.h>
     11 .fi
     12 .ta 8n +4n +4n +4n +4n +4n +4n
     13 .PP
     14 .B
     15 int	authdial(char *netroot, char *ad);
     16 .PP
     17 .B
     18 int	passtokey(char key[DESKEYLEN], char *password)
     19 .PP
     20 .B
     21 uchar	nvcsum(void *mem, int len)
     22 .PP
     23 .B
     24 int	readnvram(Nvrsafe *nv, int flag);
     25 .PPP
     26 .B
     27 int	convT2M(Ticket *t, char *msg, char *key)
     28 .PP
     29 .B
     30 void	convM2T(char *msg, Ticket *t, char *key)
     31 .PP
     32 .B
     33 int	convA2M(Authenticator *a, char *msg, char *key)
     34 .PP
     35 .B
     36 void	convM2A(char *msg, Authenticator *a, char *key)
     37 .PP
     38 .B
     39 int	convTR2M(Ticketreq *tr, char *msg)
     40 .PP
     41 .B
     42 void	convM2TR(char *msg, Ticketreq *tr)
     43 .PP
     44 .B
     45 int	convPR2M(Passwordreq *pr, char *msg, char *key)
     46 .PP
     47 .B
     48 void	convM2PR(char *msg, Passwordreq *pr, char *key)
     49 .PP
     50 .B
     51 int	_asgetticket(int fd, char *trbuf, char *tbuf);
     52 .PP
     53 .B
     54 int	_asrdresp(int fd, char *buf, int len);
     55 .SH DESCRIPTION
     56 .PP
     57 .I Authdial
     58 dials an authentication server over the
     59 network rooted at
     60 .IR net ,
     61 default
     62 .BR /net  .
     63 The authentication domain,
     64 .IR ad ,
     65 specifies which server to call.
     66 If
     67 .I ad
     68 is non-nil,
     69 the network database
     70 (see
     71 .MR ndb (1) )
     72 is queried for an entry which contains
     73 .B authdom=\fIad\fP
     74 or
     75 .BR dom=\fIad\fP ,
     76 the former having precedence,
     77 and which also contains an
     78 .B auth
     79 attribute.
     80 The string dialed is then
     81 .I netroot\fP!\fIserver\fP!ticket
     82 where
     83 .I server
     84 is the value of the
     85 .B auth
     86 attribute.
     87 If no entry is found, the error string is
     88 set to ``no authentication server found''
     89 and -1 is returned.
     90 If
     91 .I authdom
     92 is nil, the string
     93 .IB netroot !$auth! ticket
     94 is used to make the call.
     95 .PP
     96 .I Passtokey
     97 converts
     98 .I password
     99 into a DES key and stores the result in
    100 .IR key .
    101 It returns 0 if
    102 .I password
    103 could not be converted,
    104 and 1 otherwise.
    105 .PP
    106 .I Readnvram
    107 reads authentication information into the structure:
    108 .EX
    109 .ta 4n +4n +8n +4n +4n +4n +4n
    110 	struct Nvrsafe
    111 	{
    112 		char	machkey[DESKEYLEN];
    113 		uchar	machsum;
    114 		char	authkey[DESKEYLEN];
    115 		uchar	authsum;
    116 		char	config[CONFIGLEN];
    117 		uchar	configsum;
    118 		char	authid[ANAMELEN];
    119 		uchar	authidsum;
    120 		char	authdom[DOMLEN];
    121 		uchar	authdomsum;
    122 	};
    123 .EE
    124 .PP
    125 On Sparc, MIPS, and SGI machines this information is
    126 in non-volatile ram, accessible in the file
    127 .BR #r/nvram .
    128 On x86s and Alphas
    129 .I readnvram
    130 successively opens the following areas stopping with the
    131 first to succeed:
    132 .PP
    133 \- the partition named by the
    134 .B $nvram
    135 environment variable
    136 .\" (commonly set via
    137 .\" .IR plan9.ini (8))
    138 .br
    139 \- the partition
    140 .B #S/sdC0/nvram
    141 .br
    142 \- a file called
    143 .B plan9.nvr
    144 in the partition
    145 .B #S/sdC0/9fat
    146 .br
    147 \- the partition
    148 .B #S/sd00/nvram
    149 .br
    150 \- a file called
    151 .B plan9.nvr
    152 in the partition
    153 .B #S/sd00/9fat
    154 .br
    155 \- a file called
    156 .B plan9.nvr
    157 on a DOS floppy in drive 0
    158 .br
    159 \- a file called
    160 .B plan9.nvr
    161 on a DOS floppy in drive 1
    162 .PP
    163 The
    164 .IR nvcsum s
    165 of the fields
    166 .BR machkey ,
    167 .BR authid ,
    168 and
    169 .B authdom
    170 must match their respective checksum or that field is zeroed.
    171 If
    172 .I flag
    173 is
    174 .B NVwrite
    175 or at least one checksum fails and
    176 .I flag
    177 is
    178 .BR NVwriteonerr ,
    179 .I readnvram
    180 will prompt for new values on
    181 .B #c/cons
    182 and then write them back to the storage area.
    183 .PP
    184 .IR ConvT2M ,
    185 .IR convA2M ,
    186 .IR convTR2M ,
    187 and
    188 .I convPR2M
    189 convert tickets, authenticators, ticket requests, and password change request
    190 structures into transmittable messages.
    191 .IR ConvM2T ,
    192 .IR convM2A ,
    193 .IR convM2TR ,
    194 and
    195 .I convM2PR
    196 are used to convert them back.
    197 .I Key
    198 is used for encrypting the message before transmission and decrypting
    199 after reception.
    200 .PP
    201 The routine
    202 .I _asgetresp
    203 receives either a character array or an error string.
    204 On error, it sets errstr and returns -1.  If successful,
    205 it returns the number of bytes received.
    206 .PP
    207 The routine
    208 .I _asgetticket
    209 sends a ticket request message and then uses
    210 .I _asgetresp
    211 to recieve an answer.
    212 .SH SOURCE
    213 .B \*9/src/libauthsrv
    214 .SH SEE ALSO
    215 .MR passwd (1) ,
    216 .MR dial (3) ,
    217 Plan 9's
    218 .IR authsrv (6).
    219 .SH DIAGNOSTICS
    220 These routines set
    221 .IR errstr .
    222 Integer-valued functions return -1 on error.