123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #include "ssh.h"
- static int
- authtisfn(Conn *c)
- {
- int fd, n;
- char *chal, resp[256];
- Msg *m;
- if(!c->interactive)
- return -1;
- debug(DBG_AUTH, "try TIS\n");
- sendmsg(allocmsg(c, SSH_CMSG_AUTH_TIS, 0));
- m = recvmsg(c, 0);
- if(m == nil)
- badmsg(m, 0);
- switch(m->type){
- default:
- badmsg(m, SSH_SMSG_AUTH_TIS_CHALLENGE);
- case SSH_SMSG_FAILURE:
- free(m);
- return -1;
- case SSH_SMSG_AUTH_TIS_CHALLENGE:
- break;
- }
- chal = getstring(m);
- free(m);
- if((fd = open("/dev/cons", ORDWR)) < 0)
- error("can't open console");
- fprint(fd, "TIS Authentication\n%s", chal);
- n = read(fd, resp, sizeof resp-1);
- if(n < 0)
- resp[0] = '\0';
- else
- resp[n] = '\0';
- m = allocmsg(c, SSH_CMSG_AUTH_TIS_RESPONSE, 4+strlen(resp));
- putstring(m, resp);
- sendmsg(m);
-
- m = recvmsg(c, 0);
- if(m == nil)
- badmsg(m, 0);
- switch(m->type){
- default:
- badmsg(m, 0);
- case SSH_SMSG_SUCCESS:
- free(m);
- return 0;
- case SSH_SMSG_FAILURE:
- free(m);
- return -1;
- }
- }
- Auth authtis =
- {
- SSH_AUTH_TIS,
- "tis",
- authtisfn,
- };
|