merge new-crypto branch
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@5332 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -68,9 +68,12 @@ do_read (int fd,
|
||||
ret = krb5_net_read (context, &fd, buf, outer_len);
|
||||
if (ret != outer_len)
|
||||
return ret;
|
||||
status = krb5_decrypt(context, buf, outer_len,
|
||||
ETYPE_DES_CBC_CRC, /* XXX */
|
||||
keyblock, &data);
|
||||
|
||||
|
||||
|
||||
status = krb5_decrypt(context, crypto, KRB5_KU_OTHER_ENCRYPTED,
|
||||
buf, outer_len, &data);
|
||||
|
||||
if (status)
|
||||
errx (1, "%s", krb5_get_err_text (context, status));
|
||||
memcpy (buf, data.data, len);
|
||||
@@ -98,12 +101,9 @@ do_write (int fd, void *buf, size_t sz)
|
||||
u_int32_t len;
|
||||
int ret;
|
||||
|
||||
status = krb5_encrypt (context,
|
||||
buf,
|
||||
sz,
|
||||
ETYPE_DES_CBC_CRC, /* XXX */
|
||||
keyblock,
|
||||
&data);
|
||||
status = krb5_encrypt(context, crypto, KRB5_KU_OTHER_ENCRYPTED,
|
||||
buf, sz, &data);
|
||||
|
||||
if (status)
|
||||
errx (1, "%s", krb5_get_err_text(context, status));
|
||||
len = htonl(sz);
|
||||
|
@@ -44,6 +44,7 @@ int do_encrypt;
|
||||
int do_forward;
|
||||
krb5_context context;
|
||||
krb5_keyblock *keyblock;
|
||||
krb5_crypto crypto;
|
||||
des_key_schedule schedule;
|
||||
des_cblock iv;
|
||||
|
||||
@@ -278,6 +279,11 @@ send_krb5_auth(int s,
|
||||
errx (1, "krb5_auth_con_getkey: %s",
|
||||
krb5_get_err_text(context, status));
|
||||
|
||||
krb5_crypto_init(context, keyblock, 0, &crypto);
|
||||
if(status)
|
||||
errx (1, "krb5_crypto_init: %s",
|
||||
krb5_get_err_text(context, status));
|
||||
|
||||
len = strlen(remote_user) + 1;
|
||||
if (net_write (s, remote_user, len) != len)
|
||||
err (1, "write");
|
||||
|
@@ -122,6 +122,7 @@ extern enum auth_method auth_method;
|
||||
extern int do_encrypt;
|
||||
extern krb5_context context;
|
||||
extern krb5_keyblock *keyblock;
|
||||
extern krb5_crypto crypto;
|
||||
extern des_key_schedule schedule;
|
||||
extern des_cblock iv;
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
|
||||
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
|
||||
* (Royal Institute of Technology, Stockholm, Sweden).
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -43,6 +43,7 @@ enum auth_method auth_method;
|
||||
|
||||
krb5_context context;
|
||||
krb5_keyblock *keyblock;
|
||||
krb5_crypto crypto;
|
||||
des_key_schedule schedule;
|
||||
des_cblock iv;
|
||||
|
||||
@@ -225,7 +226,6 @@ recv_krb5_auth (int s, u_char *buf,
|
||||
krb5_auth_context auth_context = NULL;
|
||||
krb5_ticket *ticket;
|
||||
krb5_error_code status;
|
||||
krb5_authenticator authenticator;
|
||||
krb5_data cksum_data;
|
||||
krb5_principal server;
|
||||
|
||||
@@ -269,33 +269,31 @@ recv_krb5_auth (int s, u_char *buf,
|
||||
|
||||
status = krb5_auth_con_getkey (context, auth_context, &keyblock);
|
||||
if (status)
|
||||
syslog_and_die ("krb5_auth_con_getkey: %s",
|
||||
krb5_get_err_text(context, status));
|
||||
syslog_and_die ("krb5_auth_con_getkey: %s",
|
||||
krb5_get_err_text(context, status));
|
||||
|
||||
status = krb5_auth_getauthenticator (context,
|
||||
auth_context,
|
||||
&authenticator);
|
||||
if (status)
|
||||
syslog_and_die ("krb5_auth_getauthenticator: %s",
|
||||
krb5_get_err_text(context, status));
|
||||
status = krb5_crypto_init(context, keyblock, 0, &crypto);
|
||||
if(status)
|
||||
syslog_and_die("krb5_crypto_init: %s",
|
||||
krb5_get_err_text(context, status));
|
||||
|
||||
|
||||
cksum_data.length = asprintf ((char **)&cksum_data.data,
|
||||
"%u:%s%s",
|
||||
ntohs(thisaddr.sin_port),
|
||||
cmd,
|
||||
server_username);
|
||||
|
||||
status = krb5_verify_checksum (context,
|
||||
cksum_data.data,
|
||||
cksum_data.length,
|
||||
keyblock,
|
||||
authenticator->cksum);
|
||||
status = krb5_verify_authenticator_checksum(context,
|
||||
auth_context,
|
||||
cksum_data.data,
|
||||
cksum_data.length);
|
||||
|
||||
if (status)
|
||||
syslog_and_die ("krb5_verify_checksum: %s",
|
||||
syslog_and_die ("krb5_verify_authenticator_checksum: %s",
|
||||
krb5_get_err_text(context, status));
|
||||
|
||||
free (cksum_data.data);
|
||||
krb5_free_authenticator (context, &authenticator);
|
||||
|
||||
recv_krb5_creds (s, auth_context, server_username, ticket->client);
|
||||
|
||||
|
Reference in New Issue
Block a user