[2576] in Kerberos_V5_Development

home help back first fref pref prev next nref lref last post

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

home help back first fref pref prev next nref lref last post