version 1.40, 2002/04/10 08:21:47 |
version 1.40.2.3, 2003/04/03 22:35:16 |
|
|
|
|
if (kdata[0] == 4) { /* KRB_PROT_VERSION */ |
if (kdata[0] == 4) { /* KRB_PROT_VERSION */ |
#ifdef KRB4 |
#ifdef KRB4 |
KTEXT_ST tkt; |
KTEXT_ST tkt, reply; |
|
|
tkt.length = dlen; |
tkt.length = dlen; |
if (tkt.length < MAX_KTXT_LEN) |
if (tkt.length < MAX_KTXT_LEN) |
memcpy(tkt.dat, kdata, tkt.length); |
memcpy(tkt.dat, kdata, tkt.length); |
|
|
if (auth_krb4(authctxt, &tkt, &client_user)) { |
if (PRIVSEP(auth_krb4(authctxt, &tkt, |
|
&client_user, &reply))) { |
authenticated = 1; |
authenticated = 1; |
snprintf(info, sizeof(info), |
snprintf(info, sizeof(info), |
" tktuser %.100s", |
" tktuser %.100s", |
client_user); |
client_user); |
|
|
|
packet_start( |
|
SSH_SMSG_AUTH_KERBEROS_RESPONSE); |
|
packet_put_string((char *) |
|
reply.dat, reply.length); |
|
packet_send(); |
|
packet_write_wait(); |
|
|
xfree(client_user); |
xfree(client_user); |
} |
} |
#endif /* KRB4 */ |
#endif /* KRB4 */ |
} else { |
} else { |
#ifdef KRB5 |
#ifdef KRB5 |
krb5_data tkt; |
krb5_data tkt, reply; |
tkt.length = dlen; |
tkt.length = dlen; |
tkt.data = kdata; |
tkt.data = kdata; |
|
|
if (auth_krb5(authctxt, &tkt, &client_user)) { |
if (PRIVSEP(auth_krb5(authctxt, &tkt, |
|
&client_user, &reply))) { |
authenticated = 1; |
authenticated = 1; |
snprintf(info, sizeof(info), |
snprintf(info, sizeof(info), |
" tktuser %.100s", |
" tktuser %.100s", |
client_user); |
client_user); |
|
|
|
/* Send response to client */ |
|
packet_start( |
|
SSH_SMSG_AUTH_KERBEROS_RESPONSE); |
|
packet_put_string((char *) |
|
reply.data, reply.length); |
|
packet_send(); |
|
packet_write_wait(); |
|
|
|
if (reply.length) |
|
xfree(reply.data); |
xfree(client_user); |
xfree(client_user); |
} |
} |
#endif /* KRB5 */ |
#endif /* KRB5 */ |
|
|
if (bits != BN_num_bits(client_host_key->rsa->n)) |
if (bits != BN_num_bits(client_host_key->rsa->n)) |
verbose("Warning: keysize mismatch for client_host_key: " |
verbose("Warning: keysize mismatch for client_host_key: " |
"actual %d, announced %d", |
"actual %d, announced %d", |
BN_num_bits(client_host_key->rsa->n), bits); |
BN_num_bits(client_host_key->rsa->n), bits); |
packet_check_eom(); |
packet_check_eom(); |
|
|
authenticated = auth_rhosts_rsa(pw, client_user, |
authenticated = auth_rhosts_rsa(pw, client_user, |
|
|
debug("rcvd SSH_CMSG_AUTH_TIS_RESPONSE"); |
debug("rcvd SSH_CMSG_AUTH_TIS_RESPONSE"); |
if (options.challenge_response_authentication == 1) { |
if (options.challenge_response_authentication == 1) { |
char *response = packet_get_string(&dlen); |
char *response = packet_get_string(&dlen); |
debug("got response '%s'", response); |
|
packet_check_eom(); |
packet_check_eom(); |
authenticated = verify_response(authctxt, response); |
authenticated = verify_response(authctxt, response); |
memset(response, 'r', dlen); |
memset(response, 'r', dlen); |