version 1.24, 2002/08/29 15:57:25 |
version 1.25, 2002/09/09 06:48:06 |
|
|
int mm_answer_sesskey(int, Buffer *); |
int mm_answer_sesskey(int, Buffer *); |
int mm_answer_sessid(int, Buffer *); |
int mm_answer_sessid(int, Buffer *); |
|
|
|
#ifdef KRB5 |
|
int mm_answer_krb5(int, Buffer *); |
|
#endif |
|
|
static Authctxt *authctxt; |
static Authctxt *authctxt; |
static BIGNUM *ssh1_challenge = NULL; /* used for ssh1 rsa auth */ |
static BIGNUM *ssh1_challenge = NULL; /* used for ssh1 rsa auth */ |
|
|
|
|
{MONITOR_REQ_SKEYQUERY, MON_ISAUTH, mm_answer_skeyquery}, |
{MONITOR_REQ_SKEYQUERY, MON_ISAUTH, mm_answer_skeyquery}, |
{MONITOR_REQ_SKEYRESPOND, MON_AUTH, mm_answer_skeyrespond}, |
{MONITOR_REQ_SKEYRESPOND, MON_AUTH, mm_answer_skeyrespond}, |
#endif |
#endif |
|
#ifdef KRB5 |
|
{MONITOR_REQ_KRB5, MON_ONCE|MON_AUTH, mm_answer_krb5}, |
|
#endif |
{0, 0, NULL} |
{0, 0, NULL} |
}; |
}; |
|
|
|
|
|
|
return (success); |
return (success); |
} |
} |
|
|
|
|
|
#ifdef KRB5 |
|
int |
|
mm_answer_krb5(int socket, Buffer *m) |
|
{ |
|
krb5_data tkt, reply; |
|
char *client_user; |
|
u_int len; |
|
int success; |
|
|
|
/* use temporary var to avoid size issues on 64bit arch */ |
|
tkt.data = buffer_get_string(m, &len); |
|
tkt.length = len; |
|
|
|
success = auth_krb5(authctxt, &tkt, &client_user, &reply); |
|
|
|
if (tkt.length) |
|
xfree(tkt.data); |
|
|
|
buffer_clear(m); |
|
buffer_put_int(m, success); |
|
|
|
if (success) { |
|
buffer_put_cstring(m, client_user); |
|
buffer_put_string(m, reply.data, reply.length); |
|
if (client_user) |
|
xfree(client_user); |
|
if (reply.length) |
|
xfree(reply.data); |
|
} |
|
mm_request_send(socket, MONITOR_ANS_KRB5, m); |
|
|
|
return success; |
|
} |
|
#endif |
|
|
int |
int |
mm_answer_term(int socket, Buffer *req) |
mm_answer_term(int socket, Buffer *req) |