version 1.44, 2003/06/24 08:23:46 |
version 1.45, 2003/07/22 13:35:22 |
|
|
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 KRB4 |
|
int mm_answer_krb4(int, Buffer *); |
|
#endif |
|
#ifdef KRB5 |
#ifdef KRB5 |
int mm_answer_krb5(int, Buffer *); |
int mm_answer_krb5(int, Buffer *); |
#endif |
#endif |
|
|
{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 KRB4 |
|
{MONITOR_REQ_KRB4, MON_ONCE|MON_AUTH, mm_answer_krb4}, |
|
#endif |
|
#ifdef KRB5 |
#ifdef KRB5 |
{MONITOR_REQ_KRB5, MON_ONCE|MON_AUTH, mm_answer_krb5}, |
{MONITOR_REQ_KRB5, MON_ONCE|MON_AUTH, mm_answer_krb5}, |
#endif |
#endif |
|
|
|
|
return (success); |
return (success); |
} |
} |
|
|
#ifdef KRB4 |
|
int |
|
mm_answer_krb4(int socket, Buffer *m) |
|
{ |
|
KTEXT_ST auth, reply; |
|
char *client, *p; |
|
int success; |
|
u_int alen; |
|
|
|
reply.length = auth.length = 0; |
|
|
|
p = buffer_get_string(m, &alen); |
|
if (alen >= MAX_KTXT_LEN) |
|
fatal("%s: auth too large", __func__); |
|
memcpy(auth.dat, p, alen); |
|
auth.length = alen; |
|
memset(p, 0, alen); |
|
xfree(p); |
|
|
|
success = options.kerberos_authentication && |
|
authctxt->valid && |
|
auth_krb4(authctxt, &auth, &client, &reply); |
|
|
|
memset(auth.dat, 0, alen); |
|
buffer_clear(m); |
|
buffer_put_int(m, success); |
|
|
|
if (success) { |
|
buffer_put_cstring(m, client); |
|
buffer_put_string(m, reply.dat, reply.length); |
|
if (client) |
|
xfree(client); |
|
if (reply.length) |
|
memset(reply.dat, 0, reply.length); |
|
} |
|
|
|
debug3("%s: sending result %d", __func__, success); |
|
mm_request_send(socket, MONITOR_ANS_KRB4, m); |
|
|
|
auth_method = "kerberos"; |
|
|
|
/* Causes monitor loop to terminate if authenticated */ |
|
return (success); |
|
} |
|
#endif |
|
|
|
#ifdef KRB5 |
#ifdef KRB5 |
int |
int |