[2576] in Kerberos_V5_Development
Re: DES implementation goofs (was Re: Prototype hell)
daemon@ATHENA.MIT.EDU (Tom Yu)
Wed Oct 15 22:18:55 1997
Date: Wed, 15 Oct 1997 22:18:29 -0400
To: Ken Hornstein <kenh@cmf.nrl.navy.mil>, "Theodore Y. Ts'o" <tytso@MIT.EDU>,
krbdev@MIT.EDU
From: Tom Yu <tlyu@MIT.EDU>
In-Reply-To: <199710140612.CAA25557@tesla-coil.MIT.EDU>
Actually, I goofed. The patches below should be correct (the previous
patches didn't take des425 into account). You can also just grab a
recent snapshot. :-)
---Tom
Index: lib/crypto/ChangeLog
===================================================================
RCS file: /cvs/krbdev/krb5/src/lib/crypto/ChangeLog,v
retrieving revision 5.56
retrieving revision 5.57
diff -u -r5.56 -r5.57
--- ChangeLog 1997/02/22 08:00:54 5.56
+++ ChangeLog 1997/10/14 19:38:55 5.57
@@ -1,3 +1,7 @@
+Tue Oct 14 15:34:44 1997 Tom Yu <tlyu@voltage-multiplier.mit.edu>
+
+ * Makefile.in: Bump major version due to possible size changes.
+
Fri Feb 21 18:40:13 1997 Sam Hartman <hartmans@tertius.mit.edu>
* Makefile.in (OBJS): Move in crypto_glue.c as krb5_glue.c; avoid
Index: lib/crypto/Makefile.in
===================================================================
RCS file: /cvs/krbdev/krb5/src/lib/crypto/Makefile.in,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- Makefile.in 1997/02/23 07:28:13 1.44
+++ Makefile.in 1997/10/14 19:38:55 1.45
@@ -29,8 +29,8 @@
$(srcdir)/raw_des.c
LIB=crypto
-LIBMAJOR=1
-LIBMINOR=1
+LIBMAJOR=2
+LIBMINOR=0
RELDIR=crypto
STLIBOBJS=cryptoconf.o encrypt_data.o decrypt_data.o \
des_crc.o des_md5.o des3_sha.o des3_raw.o raw_des.o krb5_glue.o
Index: lib/crypto/des/ChangeLog
===================================================================
RCS file: /cvs/krbdev/krb5/src/lib/crypto/des/ChangeLog,v
retrieving revision 5.64
retrieving revision 5.65
diff -u -r5.64 -r5.65
--- ChangeLog 1997/10/06 15:36:25 5.64
+++ ChangeLog 1997/10/14 19:38:36 5.65
@@ -1,3 +1,13 @@
+Tue Oct 14 15:35:53 1997 Tom Yu <tlyu@voltage-multiplier.mit.edu>
+
+ * des_int.h: Use better logic to find an appropriate type for
+ KRB_INT32; also don't assume that a key schedule element is
+ exactly 64 bits wide... use instead 2 * KRB_INT32, since that is
+ what the code uses internally.
+
+ * des.h: Use better logic to find an appropriate type for
+ KRB_INT32.
+
Mon Oct 6 11:32:51 1997 Ezra Peisach <epeisach@mit.edu>
* destest.c (main): Initialize context to 0 so it will not be
Index: lib/crypto/des/des.h
===================================================================
RCS file: /cvs/krbdev/krb5/src/lib/crypto/des/des.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- des.h 1995/08/26 17:13:19 1.4
+++ des.h 1997/10/14 19:38:37 1.5
@@ -16,16 +16,22 @@
#include "k5-int.h"
#ifndef KRB_INT32
-#if (SIZEOF_LONG == 4)
+#ifdef SIZEOF_INT
+#if SIZEOF_INT >= 4
+#define KRB_INT32 int
+#else
#define KRB_INT32 long
-#elif (SIZEOF_INT == 4)
+#endif
+#else /* !defined(SIZEOF_INT) */
+#include <limits.h>
+#if (UINT_MAX >= 0xffffffff)
#define KRB_INT32 int
-#elif (SIZEOF_SHORT == 4)
-#define KRB_INT32 short
#else
- ?== No 32 bit type available
+#define KRB_INT32 long
#endif
-#endif /* !KRB_INT32 */
+#endif /* !defined(SIZEOF_INT) */
+#endif /* !defined(KRB_INT32) */
+
#ifndef KRB_UINT32
#define KRB_UINT32 unsigned KRB_INT32
#endif
Index: lib/crypto/des/des_int.h
===================================================================
RCS file: /cvs/krbdev/krb5/src/lib/crypto/des/des_int.h,v
retrieving revision 5.39
retrieving revision 5.40
diff -u -r5.39 -r5.40
--- des_int.h 1996/06/13 00:13:56 5.39
+++ des_int.h 1997/10/14 19:38:37 5.40
@@ -28,6 +28,8 @@
#ifndef DES_INTERNAL_DEFS
#define DES_INTERNAL_DEFS
+#include "des.h"
+
/*
* Begin "mit-des.h"
*/
@@ -44,9 +46,26 @@
typedef krb5_octet mit_des_cblock[8]; /* crypto-block size */
+#ifndef KRB_INT32
+#ifdef SIZEOF_INT
+#if SIZEOF_INT >= 4
+#define KRB_INT32 int
+#else
+#define KRB_INT32 long
+#endif
+#else /* !defined(SIZEOF_INT) */
+#include <limits.h>
+#if (UINT_MAX >= 0xffffffff)
+#define KRB_INT32 int
+#else
+#define KRB_INT32 long
+#endif
+#endif /* !defined(SIZEOF_INT) */
+#endif /* !defined(KRB_INT32) */
+
/* Key schedule--used internally by DES routines to gain some speed */
typedef struct mit_des_ks_struct {
- mit_des_cblock _;
+ KRB_INT32 _[2];
} mit_des_key_schedule[16];
/* Triple-DES structures */
Index: lib/des425/ChangeLog
===================================================================
RCS file: /cvs/krbdev/krb5/src/lib/des425/ChangeLog,v
retrieving revision 5.55
retrieving revision 5.56
diff -u -r5.55 -r5.56
--- ChangeLog 1997/02/23 07:28:44 5.55
+++ ChangeLog 1997/10/14 19:41:11 5.56
@@ -1,3 +1,8 @@
+Tue Oct 14 15:40:46 1997 Tom Yu <tlyu@voltage-multiplier.mit.edu>
+
+ * Makefile.in (LIBMAJOR): Bump major version due to possible
+ change in type sizes.
+
Sat Feb 22 18:55:52 1997 Richard Basch <basch@lehman.com>
* Makefile.in: Use some of the new library list build rules in
Index: lib/des425/Makefile.in
===================================================================
RCS file: /cvs/krbdev/krb5/src/lib/des425/Makefile.in,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- Makefile.in 1997/02/23 07:28:45 1.33
+++ Makefile.in 1997/10/14 19:41:12 1.34
@@ -9,7 +9,7 @@
RUN_SETUP=@KRB5_RUN_ENV@
LIB=des425
-LIBMAJOR=1
+LIBMAJOR=2
LIBMINOR=0
RELDIR=des425
# Depends on libcrypto and libkrb5
Index: include/kerberosIV/ChangeLog
===================================================================
RCS file: /cvs/krbdev/krb5/src/include/kerberosIV/ChangeLog,v
retrieving revision 5.33
retrieving revision 5.34
diff -u -r5.33 -r5.34
--- ChangeLog 1997/02/22 07:58:21 5.33
+++ ChangeLog 1997/10/14 19:40:17 5.34
@@ -1,3 +1,9 @@
+Tue Oct 14 15:39:28 1997 Tom Yu <tlyu@voltage-multiplier.mit.edu>
+
+ * des.h: Define KRB_INT32 for the purposes of dealing with the key
+ schedule. Also, define the key schedule more sanely. See related
+ comments in lib/crypto/des.
+
Sat Feb 22 00:49:37 1997 Sam Hartman <hartmans@tertius.mit.edu>
* krb.h: Do not depend on unix being defined on Unix systems;
Index: include/kerberosIV/des.h
===================================================================
RCS file: /cvs/krbdev/krb5/src/include/kerberosIV/des.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- des.h 1997/02/18 05:37:39 1.4
+++ des.h 1997/10/14 19:40:18 1.5
@@ -68,8 +68,27 @@
typedef unsigned char des_cblock[8]; /* crypto-block size */
+
/* Key schedule */
-typedef struct des_ks_struct { des_cblock _; } des_key_schedule[16];
+/* Ick. We need this in here unfortunately... */
+#ifndef KRB_INT32
+#ifdef SIZEOF_INT
+#if SIZEOF_INT >= 4
+#define KRB_INT32 int
+#else
+#define KRB_INT32 long
+#endif
+#else /* !defined(SIZEOF_INT) */
+#include <limits.h>
+#if (UINT_MAX >= 0xffffffff)
+#define KRB_INT32 int
+#else
+#define KRB_INT32 long
+#endif
+#endif /* !defined(SIZEOF_INT) */
+#endif /* !defined(KRB_INT32) */
+
+typedef struct des_ks_struct { KRB_INT32 _[2]; } des_key_schedule[16];
#define DES_KEY_SZ (sizeof(des_cblock))
#define DES_ENCRYPT 1