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

📄 9auth.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
typedef struct	Ticket		Ticket;typedef struct	Ticketreq	Ticketreq;typedef struct	Authenticator	Authenticator;typedef struct	Nvrsafe		Nvrsafe;typedef struct	Passwordreq	Passwordreq;typedef struct	Chalstate	Chalstate;typedef struct	Apopchalstate	Apopchalstate;typedef struct	Chapreply	Chapreply;typedef struct	MSchapreply	MSchapreply;enum{	DOMLEN=		48,		/* length of an authentication domain name */	U9AUTH_DESKEYLEN=	7,		/* length of a des key for encrypt/decrypt */	CHALLEN=	8,		/* length of a challenge */	NETCHLEN=	16,		/* max network challenge length	*/	CONFIGLEN=	14,	SECRETLEN=	32,		/* max length of a secret */	APOPCHLEN=	256,	MD5LEN=		16,	KEYDBOFF=	8,		/* length of random data at the start of key file */	OKEYDBLEN=	U9FS_NAMELEN+U9AUTH_DESKEYLEN+4+2,	/* length of an entry in old key file */	KEYDBLEN=	OKEYDBLEN+SECRETLEN,	/* length of an entry in key file */	U9AUTH_TCPPORT= 567,	U9AUTH_ILPORT=  566,};/* encryption numberings (anti-replay) */enum{	AuthTreq=1,	/* ticket request */	AuthChal=2,	/* challenge box request */	AuthPass=3,	/* change password */	AuthOK=4,	/* fixed length reply follows */	AuthErr=5,	/* error follows */	AuthMod=6,	/* modify user */	AuthApop=7,	/* apop authentication for pop3 */	AuthOKvar=9,	/* variable length reply follows */	AuthChap=10,	/* chap authentication for ppp */	AuthMSchap=11,	/* MS chap authentication for ppp */	AuthTs=64,	/* ticket encrypted with server's key */	AuthTc,		/* ticket encrypted with client's key */	AuthAs,		/* server generated authenticator */	AuthAc,		/* client generated authenticator */	AuthTp,		/* ticket encrypted with clien's key for password change */};struct Ticketreq{	char	type;	char	authid[U9FS_NAMELEN];	/* server's encryption id */	char	authdom[DOMLEN];	/* server's authentication domain */	char	chal[CHALLEN];		/* challenge from server */	char	hostid[U9FS_NAMELEN];	/* host's encryption id */	char	uid[U9FS_NAMELEN];		/* uid of requesting user on host */};#define	TICKREQLEN	(3*U9FS_NAMELEN+CHALLEN+DOMLEN+1)struct Ticket{	char	num;			/* replay protection */	char	chal[CHALLEN];		/* server challenge */	char	cuid[U9FS_NAMELEN];		/* uid on client */	char	suid[U9FS_NAMELEN];		/* uid on server */	char	key[U9AUTH_DESKEYLEN];		/* nonce DES key */};#define	TICKETLEN	(CHALLEN+2*U9FS_NAMELEN+U9AUTH_DESKEYLEN+1)struct Authenticator{	char	num;			/* replay protection */	char	chal[CHALLEN];	u_long	id;			/* authenticator id, ++'d with each auth */};#define	AUTHENTLEN	(CHALLEN+4+1)struct Passwordreq{	char	num;	char	old[U9FS_NAMELEN];	char	new[U9FS_NAMELEN];	char	changesecret;	char	secret[SECRETLEN];	/* new secret */};#define	PASSREQLEN	(2*U9FS_NAMELEN+1+1+SECRETLEN)struct Nvrsafe{	char	machkey[U9AUTH_DESKEYLEN];	u_char	machsum;	char	authkey[U9AUTH_DESKEYLEN];	u_char	authsum;	char	config[CONFIGLEN];	u_char	configsum;	char	authid[U9FS_NAMELEN];	u_char	authidsum;	char	authdom[DOMLEN];	u_char	authdomsum;};struct Chalstate{	int	afd;			/* /dev/authenticate */	int	asfd;			/* authdial() */	char	chal[NETCHLEN];		/* challenge/response */};struct Apopchalstate{	int	afd;			/* /dev/authenticate */	int	asfd;			/* authdial() */	char	chal[APOPCHLEN];	/* challenge/response */};struct	Chapreply{	u_char	id;	char	uid[U9FS_NAMELEN];	char	resp[MD5LEN];};struct	MSchapreply{	char	uid[U9FS_NAMELEN];	char	LMresp[24];		/* Lan Manager response */	char	NTresp[24];		/* NT response */};extern	int	convT2M(Ticket*, char*, char*);extern	void	convM2T(char*, Ticket*, char*);extern	void	convM2Tnoenc(char*, Ticket*);extern	int	convA2M(Authenticator*, char*, char*);extern	void	convM2A(char*, Authenticator*, char*);extern	int	convTR2M(Ticketreq*, char*);extern	void	convM2TR(char*, Ticketreq*);extern	int	convPR2M(Passwordreq*, char*, char*);extern	void	convM2PR(char*, Passwordreq*, char*);extern	u_char	nvcsum(void*, int);extern	int	opasstokey(char*, char*);extern	int	passtokey(char*, char*);extern	int	authenticate(int, int);extern	int	newns(char*, char*);extern	int	addns(char*, char*);extern	int	authdial(void);extern	int	auth(int);extern	int	srvauth(int, char*);extern	int	nauth(int, Ticket*);extern	int	nsrvauth(int, char*, Ticket*);extern	int	getchal(Chalstate*, char*);extern	int	chalreply(Chalstate*, char*);extern	int	amount(int, char*, int, char*);extern	int	apopchal(Apopchalstate*);extern	int	apopreply(Apopchalstate*, char*, char*);extern	int	login(char*, char*, char*);extern	int	sslnegotiate(int, Ticket*, char**, char**);extern	int	srvsslnegotiate(int, Ticket*, char**, char**);

⌨️ 快捷键说明

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