⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auth.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
#ifdef PLAN9#pragma	src	"/sys/src/libauth"#pragma	lib	"libauth.a"#endif/* * Interface for typical callers. */typedef struct	AuthInfo	AuthInfo;typedef struct	Chalstate	Chalstate;typedef struct	Chapreply	Chapreply;typedef struct	MSchapreply	MSchapreply;typedef struct	UserPasswd	UserPasswd;typedef struct	AuthRpc		AuthRpc;enum{	MAXCHLEN=	256,		/* max challenge length	*/	AMAXNAMELEN=	256,		/* maximum name length */	MD5LEN=		16,	ARok = 0,			/* rpc return values */	ARdone,	ARerror,	ARneedkey,	ARbadkey,	ARwritenext,	ARtoosmall,	ARtoobig,	ARrpcfailure,	ARphase,	AuthRpcMax = 4096,};struct AuthRpc{	int afd;	char ibuf[AuthRpcMax];	char obuf[AuthRpcMax];	char *arg;	uint narg;};struct AuthInfo{	char	*cuid;		/* caller id */	char	*suid;		/* server id */	char	*cap;		/* capability (only valid on server side) */	int	nsecret;	/* length of secret */	uchar	*secret;	/* secret */};struct Chalstate{	char	*user;	char	chal[MAXCHLEN];	int	nchal;	void	*resp;	int	nresp;/* for implementation only */	int	afd;			/* to factotum */	AuthRpc	*rpc;			/* to factotum */	char	userbuf[AMAXNAMELEN];	/* temp space if needed */	int	userinchal;		/* user was sent to obtain challenge */};struct	Chapreply		/* for protocol "chap" */{	uchar	id;	char	resp[MD5LEN];};struct	MSchapreply	/* for protocol "mschap" */{	char	LMresp[24];		/* Lan Manager response */	char	NTresp[24];		/* NT response */};struct	UserPasswd{	char	*user;	char	*passwd;};extern	int	newns(char*, char*);extern	int	addns(char*, char*);extern	int	noworld(char*);extern	int	amount(int, char*, int, char*);/* these two may get generalized away -rsc */extern	int	login(char*, char*, char*);extern	int	httpauth(char*, char*);typedef struct Attr Attr;typedef struct String String;enum {	AttrNameval,		/* name=val -- when matching, must have name=val */	AttrQuery,		/* name? -- when matching, must be present */	AttrDefault,		/* name:=val -- when matching, if present must match INTERNAL */};struct Attr{	int type;	Attr *next;	char *name;	char *val;};typedef int AuthGetkey(char*);int	_attrfmt(Fmt*);Attr	*_copyattr(Attr*);Attr	*_delattr(Attr*, char*);Attr	*_findattr(Attr*, char*);void	_freeattr(Attr*);Attr	*_mkattr(int, char*, char*, Attr*);Attr	*_parseattr(char*);char	*_strfindattr(Attr*, char*);#ifdef VARARGCK#pragma varargck type "A" Attr*#endifextern AuthInfo*	fauth_proxy(int, AuthRpc *rpc, AuthGetkey *getkey, char *params);extern AuthInfo*	auth_proxy(int fd, AuthGetkey *getkey, char *fmt, ...);extern int		auth_getkey(char*);extern int		(*amount_getkey)(char*);extern void		auth_freeAI(AuthInfo *ai);extern int		auth_chuid(AuthInfo *ai, char *ns);extern Chalstate	*auth_challenge(char*, ...);extern AuthInfo*	auth_response(Chalstate*);extern int		auth_respond(void*, uint, char*, uint, void*, uint, AuthGetkey *getkey, char*, ...);extern void		auth_freechal(Chalstate*);extern AuthInfo*	auth_userpasswd(char *user, char *passwd);extern UserPasswd*	auth_getuserpasswd(AuthGetkey *getkey, char*, ...);extern AuthInfo*	auth_getinfo(AuthRpc *rpc);extern AuthRpc*		auth_allocrpc(int afd);extern Attr*		auth_attr(AuthRpc *rpc);extern void		auth_freerpc(AuthRpc *rpc);extern uint		auth_rpc(AuthRpc *rpc, char *verb, void *a, int n);extern int		auth_wep(char*, char*, ...);#ifdef VARARGCK#pragma varargck argpos auth_proxy 3#pragma varargck argpos auth_challenge 1#pragma varargck argpos auth_respond 3#pragma varargck argpos auth_getuserpasswd 2#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -