version 1.24.2.3, 2002/06/22 07:23:16 |
version 1.24.2.4, 2002/10/11 14:53:06 |
|
|
} |
} |
|
|
int |
int |
auth_krb4(Authctxt *authctxt, KTEXT auth, char **client) |
auth_krb4(Authctxt *authctxt, KTEXT auth, char **client, KTEXT reply) |
{ |
{ |
AUTH_DAT adat = {0}; |
AUTH_DAT adat = {0}; |
KTEXT_ST reply; |
|
Key_schedule schedule; |
Key_schedule schedule; |
struct sockaddr_in local, foreign; |
struct sockaddr_in local, foreign; |
char instance[INST_SZ]; |
char instance[INST_SZ]; |
|
|
|
|
/* If we can't successfully encrypt the checksum, we send back an |
/* If we can't successfully encrypt the checksum, we send back an |
empty message, admitting our failure. */ |
empty message, admitting our failure. */ |
if ((r = krb_mk_priv((u_char *) & cksum, reply.dat, sizeof(cksum) + 1, |
if ((r = krb_mk_priv((u_char *) & cksum, reply->dat, sizeof(cksum) + 1, |
schedule, &adat.session, &local, &foreign)) < 0) { |
schedule, &adat.session, &local, &foreign)) < 0) { |
debug("Kerberos v4 mk_priv: (%d) %s", r, krb_err_txt[r]); |
debug("Kerberos v4 mk_priv: (%d) %s", r, krb_err_txt[r]); |
reply.dat[0] = 0; |
reply->dat[0] = 0; |
reply.length = 0; |
reply->length = 0; |
} else |
} else |
reply.length = r; |
reply->length = r; |
|
|
/* Clear session key. */ |
/* Clear session key. */ |
memset(&adat.session, 0, sizeof(&adat.session)); |
memset(&adat.session, 0, sizeof(&adat.session)); |
|
|
packet_start(SSH_SMSG_AUTH_KERBEROS_RESPONSE); |
|
packet_put_string((char *) reply.dat, reply.length); |
|
packet_send(); |
|
packet_write_wait(); |
|
return (1); |
return (1); |
} |
} |
#endif /* KRB4 */ |
#endif /* KRB4 */ |