39 lines
729 B
C
39 lines
729 B
C
#include "ssh.h"
|
|
|
|
static int
|
|
authpasswordfn(Conn *c)
|
|
{
|
|
Msg *m;
|
|
UserPasswd *up;
|
|
|
|
up = auth_getuserpasswd(c->interactive ? auth_getkey : nil, "proto=pass service=ssh server=%q user=%q", c->host, c->user);
|
|
if(up == nil){
|
|
debug(DBG_AUTH, "getuserpasswd returned nothing (interactive=%d)\n", c->interactive);
|
|
return -1;
|
|
}
|
|
|
|
debug(DBG_AUTH, "try using password from factotum\n");
|
|
m = allocmsg(c, SSH_CMSG_AUTH_PASSWORD, 4+strlen(up->passwd));
|
|
putstring(m, up->passwd);
|
|
sendmsg(m);
|
|
|
|
m = recvmsg(c, -1);
|
|
switch(m->type){
|
|
default:
|
|
badmsg(m, 0);
|
|
case SSH_SMSG_SUCCESS:
|
|
free(m);
|
|
return 0;
|
|
case SSH_SMSG_FAILURE:
|
|
free(m);
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
Auth authpassword =
|
|
{
|
|
SSH_AUTH_PASSWORD,
|
|
"password",
|
|
authpasswordfn,
|
|
};
|