Blame


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