1 2277c5d7 2004-03-21 devnull #ifndef __AUTH_H__
2 2277c5d7 2004-03-21 devnull #define __AUTH_H__ 1
4 2277c5d7 2004-03-21 devnull #ifdef __cplusplus
5 2277c5d7 2004-03-21 devnull extern "C" {
8 2277c5d7 2004-03-21 devnull #pragma src "/sys/src/libauth"
9 2277c5d7 2004-03-21 devnull #pragma lib "libauth.a"
11 baf3dc26 2005-02-08 devnull AUTOLIB(auth)
14 2277c5d7 2004-03-21 devnull * Interface for typical callers.
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;
24 baf3dc26 2005-02-08 devnull struct CFid;
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,
32 2277c5d7 2004-03-21 devnull ARok = 0, /* rpc return values */
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,
43 cbeb0b26 2006-04-01 devnull AuthRpcMax = 4096
46 2277c5d7 2004-03-21 devnull struct AuthRpc
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;
56 2277c5d7 2004-03-21 devnull struct AuthInfo
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 */
65 2277c5d7 2004-03-21 devnull struct Chalstate
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;
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 */
79 2277c5d7 2004-03-21 devnull struct Chapreply /* for protocol "chap" */
81 2277c5d7 2004-03-21 devnull uchar id;
82 2277c5d7 2004-03-21 devnull char resp[MD5LEN];
85 2277c5d7 2004-03-21 devnull struct MSchapreply /* for protocol "mschap" */
87 2277c5d7 2004-03-21 devnull char LMresp[24]; /* Lan Manager response */
88 2277c5d7 2004-03-21 devnull char NTresp[24]; /* NT response */
91 2277c5d7 2004-03-21 devnull struct UserPasswd
93 2277c5d7 2004-03-21 devnull char *user;
94 2277c5d7 2004-03-21 devnull char *passwd;
97 2277c5d7 2004-03-21 devnull extern int newns(char*, char*);
98 2277c5d7 2004-03-21 devnull extern int addns(char*, char*);
100 2277c5d7 2004-03-21 devnull extern int noworld(char*);
101 2277c5d7 2004-03-21 devnull extern int amount(int, char*, int, char*);
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*);
107 2277c5d7 2004-03-21 devnull typedef struct Attr Attr;
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 */
113 2277c5d7 2004-03-21 devnull struct Attr
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;
121 2277c5d7 2004-03-21 devnull typedef int AuthGetkey(char*);
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*);
132 2277c5d7 2004-03-21 devnull #pragma varargck type "A" Attr*
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*, ...);
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);
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
166 2277c5d7 2004-03-21 devnull #ifdef __cplusplus