2 This header file is an extension to ANSI/POSIX
8 #pragma src "/sys/src/ape/lib/auth"
9 #pragma lib "/$M/lib/ape/libauth.a"
15 * Interface for typical callers.
18 typedef struct AuthInfo AuthInfo;
19 typedef struct Chalstate Chalstate;
20 typedef struct Chapreply Chapreply;
21 typedef struct MSchapreply MSchapreply;
22 typedef struct UserPasswd UserPasswd;
23 typedef struct AuthRpc AuthRpc;
27 MAXCHLEN= 256, /* max challenge length */
28 MAXNAMELEN= 256, /* maximum name length */
31 ARok = 0, /* rpc return values */
48 char ibuf[AuthRpcMax+1]; /* +1 for NUL in auth_rpc.c */
49 char obuf[AuthRpcMax];
56 char *cuid; /* caller id */
57 char *suid; /* server id */
58 char *cap; /* capability (only valid on server side) */
59 int nsecret; /* length of secret */
60 uchar *secret; /* secret */
72 /* for implementation only */
73 int afd; /* to factotum */
74 AuthRpc *rpc; /* to factotum */
75 char userbuf[MAXNAMELEN]; /* temp space if needed */
76 int userinchal; /* user was sent to obtain challenge */
79 struct Chapreply /* for protocol "chap" */
85 struct MSchapreply /* for protocol "mschap" and "ntlm" */
87 char LMresp[24]; /* Lan Manager response */
88 char NTresp[24]; /* NT response */
97 extern int newns(char*, char*);
98 extern int addns(char*, char*);
100 extern int noworld(char*);
101 extern int amount(int, char*, int, char*);
103 extern int login(char*, char*, char*);
105 typedef struct Attr Attr;
107 AttrNameval, /* name=val -- when matching, must have name=val */
108 AttrQuery, /* name? -- when matching, must be present */
109 AttrDefault, /* name=val -- when matching, if present must match INTERNAL */
119 typedef int AuthGetkey(char*);
122 Attr *_copyattr(Attr*);
123 Attr *_delattr(Attr*, char*);
124 Attr *_findattr(Attr*, char*);
125 void _freeattr(Attr*);
126 Attr *_mkattr(int, char*, char*, Attr*);
127 Attr *_parseattr(char*);
128 char *_strfindattr(Attr*, char*);
129 #pragma varargck type "A" Attr*
131 extern AuthInfo* fauth_proxy(int, AuthRpc *rpc, AuthGetkey *getkey, char *params);
132 extern AuthInfo* auth_proxy(int fd, AuthGetkey *getkey, char *fmt, ...);
133 extern int auth_getkey(char*);
134 extern int (*amount_getkey)(char*);
135 extern void auth_freeAI(AuthInfo *ai);
136 extern int auth_chuid(AuthInfo *ai, char *ns);
137 extern Chalstate *auth_challenge(char*, ...);
138 extern AuthInfo* auth_response(Chalstate*);
139 extern int auth_respond(void*, uint, char*, uint, void*, uint, AuthGetkey*, char*, ...);
140 extern int auth_respondAI(void *, uint, char*, uint, void*, uint, AuthInfo**, AuthGetkey*, char*, ...);
141 extern void auth_freechal(Chalstate*);
142 extern AuthInfo* auth_userpasswd(char *user, char *passwd);
143 extern UserPasswd* auth_getuserpasswd(AuthGetkey *getkey, char*, ...);
144 extern AuthInfo* auth_getinfo(AuthRpc *rpc);
145 extern AuthRpc* auth_allocrpc(int afd);
146 extern Attr* auth_attr(AuthRpc *rpc);
147 extern void auth_freerpc(AuthRpc *rpc);
148 extern uint auth_rpc(AuthRpc *rpc, char *verb, void *a, int n);
149 #pragma varargck argpos auth_proxy 3
150 #pragma varargck argpos auth_challenge 1
151 #pragma varargck argpos auth_respond 8
152 #pragma varargck argpos auth_respondAI 9
153 #pragma varargck argpos auth_getuserpasswd 2