authsrvtis.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 53 行

C
53
字号
#include "ssh.h"static AuthInfo*authsrvtisfn(Conn *conn, Msg *m){	char *s;	AuthInfo *ai;	Chalstate *c;	free(m);	if((c = auth_challenge("proto=p9cr user=%q role=server", conn->user)) == nil){		sshlog("auth_challenge failed for %s", conn->user);		return nil;	}	s = smprint("Challenge: %s\nResponse: ", c->chal);	if(s == nil){		auth_freechal(c);		return nil;	}	m = allocmsg(conn, SSH_SMSG_AUTH_TIS_CHALLENGE, 4+strlen(s));	putstring(m, s);	sendmsg(m);	free(s);	m = recvmsg(conn, 0);	if(m == nil){		auth_freechal(c);		return nil;	}	if(m->type != SSH_CMSG_AUTH_TIS_RESPONSE){		/*		 * apparently you can just give up on		 * this protocol and start a new one.		 */		unrecvmsg(conn, m);		return nil;	}	c->resp = getstring(m);	c->nresp = strlen(c->resp);	ai = auth_response(c);	auth_freechal(c);	return ai;}Authsrv authsrvtis = {	SSH_AUTH_TIS,	"tis",	SSH_CMSG_AUTH_TIS,	authsrvtisfn,};

⌨️ 快捷键说明

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