Blame


1 2277c5d7 2004-03-21 devnull #ifndef __AUTH_H__
2 2277c5d7 2004-03-21 devnull #define __AUTH_H__ 1
3 2277c5d7 2004-03-21 devnull
4 2277c5d7 2004-03-21 devnull #ifdef __cplusplus
5 2277c5d7 2004-03-21 devnull extern "C" {
6 2277c5d7 2004-03-21 devnull #endif
7 2277c5d7 2004-03-21 devnull /*
8 2277c5d7 2004-03-21 devnull #pragma src "/sys/src/libauth"
9 2277c5d7 2004-03-21 devnull #pragma lib "libauth.a"
10 2277c5d7 2004-03-21 devnull */
11 2277c5d7 2004-03-21 devnull
12 2277c5d7 2004-03-21 devnull /*
13 2277c5d7 2004-03-21 devnull * Interface for typical callers.
14 2277c5d7 2004-03-21 devnull */
15 2277c5d7 2004-03-21 devnull
16 2277c5d7 2004-03-21 devnull typedef struct AuthInfo AuthInfo;
17 2277c5d7 2004-03-21 devnull typedef struct Chalstate Chalstate;
18 2277c5d7 2004-03-21 devnull typedef struct Chapreply Chapreply;
19 2277c5d7 2004-03-21 devnull typedef struct MSchapreply MSchapreply;
20 2277c5d7 2004-03-21 devnull typedef struct UserPasswd UserPasswd;
21 2277c5d7 2004-03-21 devnull typedef struct AuthRpc AuthRpc;
22 2277c5d7 2004-03-21 devnull
23 2277c5d7 2004-03-21 devnull enum
24 2277c5d7 2004-03-21 devnull {
25 2277c5d7 2004-03-21 devnull MAXCHLEN= 256, /* max challenge length */
26 2277c5d7 2004-03-21 devnull MAXNAMELEN= 256, /* maximum name length */
27 2277c5d7 2004-03-21 devnull MD5LEN= 16,
28 2277c5d7 2004-03-21 devnull
29 2277c5d7 2004-03-21 devnull ARok = 0, /* rpc return values */
30 2277c5d7 2004-03-21 devnull ARdone,
31 2277c5d7 2004-03-21 devnull ARerror,
32 2277c5d7 2004-03-21 devnull ARneedkey,
33 2277c5d7 2004-03-21 devnull ARbadkey,
34 2277c5d7 2004-03-21 devnull ARwritenext,
35 2277c5d7 2004-03-21 devnull ARtoosmall,
36 2277c5d7 2004-03-21 devnull ARtoobig,
37 2277c5d7 2004-03-21 devnull ARrpcfailure,
38 2277c5d7 2004-03-21 devnull ARphase,
39 2277c5d7 2004-03-21 devnull
40 2277c5d7 2004-03-21 devnull AuthRpcMax = 4096,
41 2277c5d7 2004-03-21 devnull };
42 2277c5d7 2004-03-21 devnull
43 2277c5d7 2004-03-21 devnull struct AuthRpc
44 2277c5d7 2004-03-21 devnull {
45 2277c5d7 2004-03-21 devnull int afd;
46 2277c5d7 2004-03-21 devnull char ibuf[AuthRpcMax];
47 2277c5d7 2004-03-21 devnull char obuf[AuthRpcMax];
48 2277c5d7 2004-03-21 devnull char *arg;
49 2277c5d7 2004-03-21 devnull uint narg;
50 2277c5d7 2004-03-21 devnull };
51 2277c5d7 2004-03-21 devnull
52 2277c5d7 2004-03-21 devnull struct AuthInfo
53 2277c5d7 2004-03-21 devnull {
54 2277c5d7 2004-03-21 devnull char *cuid; /* caller id */
55 2277c5d7 2004-03-21 devnull char *suid; /* server id */
56 2277c5d7 2004-03-21 devnull char *cap; /* capability (only valid on server side) */
57 2277c5d7 2004-03-21 devnull int nsecret; /* length of secret */
58 2277c5d7 2004-03-21 devnull uchar *secret; /* secret */
59 2277c5d7 2004-03-21 devnull };
60 2277c5d7 2004-03-21 devnull
61 2277c5d7 2004-03-21 devnull struct Chalstate
62 2277c5d7 2004-03-21 devnull {
63 2277c5d7 2004-03-21 devnull char *user;
64 2277c5d7 2004-03-21 devnull char chal[MAXCHLEN];
65 2277c5d7 2004-03-21 devnull int nchal;
66 2277c5d7 2004-03-21 devnull void *resp;
67 2277c5d7 2004-03-21 devnull int nresp;
68 2277c5d7 2004-03-21 devnull
69 2277c5d7 2004-03-21 devnull /* for implementation only */
70 2277c5d7 2004-03-21 devnull int afd; /* to factotum */
71 2277c5d7 2004-03-21 devnull AuthRpc *rpc; /* to factotum */
72 2277c5d7 2004-03-21 devnull char userbuf[MAXNAMELEN]; /* temp space if needed */
73 2277c5d7 2004-03-21 devnull int userinchal; /* user was sent to obtain challenge */
74 2277c5d7 2004-03-21 devnull };
75 2277c5d7 2004-03-21 devnull
76 2277c5d7 2004-03-21 devnull struct Chapreply /* for protocol "chap" */
77 2277c5d7 2004-03-21 devnull {
78 2277c5d7 2004-03-21 devnull uchar id;
79 2277c5d7 2004-03-21 devnull char resp[MD5LEN];
80 2277c5d7 2004-03-21 devnull };
81 2277c5d7 2004-03-21 devnull
82 2277c5d7 2004-03-21 devnull struct MSchapreply /* for protocol "mschap" */
83 2277c5d7 2004-03-21 devnull {
84 2277c5d7 2004-03-21 devnull char LMresp[24]; /* Lan Manager response */
85 2277c5d7 2004-03-21 devnull char NTresp[24]; /* NT response */
86 2277c5d7 2004-03-21 devnull };
87 2277c5d7 2004-03-21 devnull
88 2277c5d7 2004-03-21 devnull struct UserPasswd
89 2277c5d7 2004-03-21 devnull {
90 2277c5d7 2004-03-21 devnull char *user;
91 2277c5d7 2004-03-21 devnull char *passwd;
92 2277c5d7 2004-03-21 devnull };
93 2277c5d7 2004-03-21 devnull
94 2277c5d7 2004-03-21 devnull extern int newns(char*, char*);
95 2277c5d7 2004-03-21 devnull extern int addns(char*, char*);
96 2277c5d7 2004-03-21 devnull
97 2277c5d7 2004-03-21 devnull extern int noworld(char*);
98 2277c5d7 2004-03-21 devnull extern int amount(int, char*, int, char*);
99 2277c5d7 2004-03-21 devnull
100 2277c5d7 2004-03-21 devnull /* these two may get generalized away -rsc */
101 2277c5d7 2004-03-21 devnull extern int login(char*, char*, char*);
102 2277c5d7 2004-03-21 devnull extern int httpauth(char*, char*);
103 2277c5d7 2004-03-21 devnull
104 2277c5d7 2004-03-21 devnull typedef struct Attr Attr;
105 2277c5d7 2004-03-21 devnull enum {
106 2277c5d7 2004-03-21 devnull AttrNameval, /* name=val -- when matching, must have name=val */
107 2277c5d7 2004-03-21 devnull AttrQuery, /* name? -- when matching, must be present */
108 2277c5d7 2004-03-21 devnull AttrDefault, /* name:=val -- when matching, if present must match INTERNAL */
109 2277c5d7 2004-03-21 devnull };
110 2277c5d7 2004-03-21 devnull struct Attr
111 2277c5d7 2004-03-21 devnull {
112 2277c5d7 2004-03-21 devnull int type;
113 2277c5d7 2004-03-21 devnull Attr *next;
114 2277c5d7 2004-03-21 devnull char *name;
115 2277c5d7 2004-03-21 devnull char *val;
116 2277c5d7 2004-03-21 devnull };
117 2277c5d7 2004-03-21 devnull
118 2277c5d7 2004-03-21 devnull typedef int AuthGetkey(char*);
119 2277c5d7 2004-03-21 devnull
120 2277c5d7 2004-03-21 devnull int _attrfmt(Fmt*);
121 2277c5d7 2004-03-21 devnull Attr *_copyattr(Attr*);
122 2277c5d7 2004-03-21 devnull Attr *_delattr(Attr*, char*);
123 2277c5d7 2004-03-21 devnull Attr *_findattr(Attr*, char*);
124 2277c5d7 2004-03-21 devnull void _freeattr(Attr*);
125 2277c5d7 2004-03-21 devnull Attr *_mkattr(int, char*, char*, Attr*);
126 2277c5d7 2004-03-21 devnull Attr *_parseattr(char*);
127 2277c5d7 2004-03-21 devnull char *_strfindattr(Attr*, char*);
128 2277c5d7 2004-03-21 devnull /*
129 2277c5d7 2004-03-21 devnull #pragma varargck type "A" Attr*
130 2277c5d7 2004-03-21 devnull */
131 2277c5d7 2004-03-21 devnull
132 2277c5d7 2004-03-21 devnull extern AuthInfo* fauth_proxy(int, AuthRpc *rpc, AuthGetkey *getkey, char *params);
133 2277c5d7 2004-03-21 devnull extern AuthInfo* auth_proxy(int fd, AuthGetkey *getkey, char *fmt, ...);
134 2277c5d7 2004-03-21 devnull extern int auth_getkey(char*);
135 2277c5d7 2004-03-21 devnull extern int (*amount_getkey)(char*);
136 2277c5d7 2004-03-21 devnull extern void auth_freeAI(AuthInfo *ai);
137 2277c5d7 2004-03-21 devnull extern int auth_chuid(AuthInfo *ai, char *ns);
138 2277c5d7 2004-03-21 devnull extern Chalstate *auth_challenge(char*, ...);
139 2277c5d7 2004-03-21 devnull extern AuthInfo* auth_response(Chalstate*);
140 2277c5d7 2004-03-21 devnull extern int auth_respond(void*, uint, char*, uint, void*, uint, AuthGetkey *getkey, char*, ...);
141 2277c5d7 2004-03-21 devnull extern void auth_freechal(Chalstate*);
142 2277c5d7 2004-03-21 devnull extern AuthInfo* auth_userpasswd(char *user, char *passwd);
143 2277c5d7 2004-03-21 devnull extern UserPasswd* auth_getuserpasswd(AuthGetkey *getkey, char*, ...);
144 2277c5d7 2004-03-21 devnull extern AuthInfo* auth_getinfo(AuthRpc *rpc);
145 2277c5d7 2004-03-21 devnull extern AuthRpc* auth_allocrpc(int afd);
146 2277c5d7 2004-03-21 devnull extern Attr* auth_attr(AuthRpc *rpc);
147 2277c5d7 2004-03-21 devnull extern void auth_freerpc(AuthRpc *rpc);
148 2277c5d7 2004-03-21 devnull extern uint auth_rpc(AuthRpc *rpc, char *verb, void *a, int n);
149 2277c5d7 2004-03-21 devnull extern int auth_wep(char*, char*, ...);
150 2277c5d7 2004-03-21 devnull /*
151 2277c5d7 2004-03-21 devnull #pragma varargck argpos auth_proxy 3
152 2277c5d7 2004-03-21 devnull #pragma varargck argpos auth_challenge 1
153 2277c5d7 2004-03-21 devnull #pragma varargck argpos auth_respond 3
154 2277c5d7 2004-03-21 devnull #pragma varargck argpos auth_getuserpasswd 2
155 2277c5d7 2004-03-21 devnull */
156 2277c5d7 2004-03-21 devnull #ifdef __cplusplus
157 2277c5d7 2004-03-21 devnull }
158 2277c5d7 2004-03-21 devnull #endif
159 2277c5d7 2004-03-21 devnull #endif