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