summaryrefslogtreecommitdiffstats
path: root/secure/lib/libtelnet/kerberos.c
diff options
context:
space:
mode:
Diffstat (limited to 'secure/lib/libtelnet/kerberos.c')
-rw-r--r--secure/lib/libtelnet/kerberos.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/secure/lib/libtelnet/kerberos.c b/secure/lib/libtelnet/kerberos.c
index aa9b418..7c5771c 100644
--- a/secure/lib/libtelnet/kerberos.c
+++ b/secure/lib/libtelnet/kerberos.c
@@ -227,9 +227,10 @@ kerberos4_send(ap)
register int i;
des_key_sched(cred.session, sched);
- des_set_random_generator_seed(cred.session);
- des_new_random_key(challenge);
- des_ecb_encrypt(challenge, session_key, sched, 1);
+ des_init_random_number_generator(cred.session);
+ des_new_random_key(session_key);
+ des_ecb_encrypt(session_key, session_key, sched, 0);
+ des_ecb_encrypt(session_key, challenge, sched, 0);
/*
* Increment the challenge by 1, and encrypt it for
* later comparison.
@@ -322,6 +323,11 @@ kerberos4_is(ap, data, cnt)
break;
}
+ /*
+ * Initialize the random number generator since it's
+ * used later on by the encryption routine.
+ */
+ des_init_random_number_generator(session_key);
des_key_sched(session_key, sched);
bcopy((void *)data, (void *)datablock, sizeof(Block));
/*
@@ -339,7 +345,7 @@ kerberos4_is(ap, data, cnt)
* increment by one, re-encrypt it and send it back.
*/
des_ecb_encrypt(datablock, challenge, sched, 0);
- for (r = 7; r >= 0; r++) {
+ for (r = 7; r >= 0; r--) {
register int t;
t = (unsigned int)challenge[r] + 1;
challenge[r] = t; /* ignore overflow */
OpenPOWER on IntegriCloud