I have prepared a set of patches to the DES library that should solve
the const problem.  Also I have, in those places where the functions
have arguments of type des_cblock (which really is char * as
des_cblock is a typedef for char [8]), converted back to des_cblock *,
which is what SSLeay used there.  This makes those arguments pointers
to an array with 8 elements of type char.  These pointers will
typically have the same representation as pointers to the first
element, but they are something quite different as far as C types are
concerned; and they allow the compiler to check things more thoroughly:

   typedef unsigned char des_cblock[8];
   typedef const unsigned char const_des_cblock[8];
   int des_set_key(const_des_cblock *key,des_key_schedule schedule);

   unsigned char key[7] = {...};
   unsigned char deskey[8] = {...};
   des_key_schedule ks;

   des_set_key(&key, ks);    /* gets a warning */
   des_set_key(&deskey, ks); /* no warning */

as opposed to:

   /* typedef unsigned char des_cblock[8]; */
   /* int des_set_key(des_cblock key,des_key_schedule schedule); */

   unsigned char key[7] = {...};
   unsigned char deskey[8] = {...};
   des_key_schedule ks;

   des_set_key(key, ks);     /* no warning -- the argument is a char * */
   des_set_key(deskey, ks);  /* no warning */

Also I don't like relying on the automatic conversion of somethings
that "is an array" into a pointer on its first element when the
typedef that declares the array type is not visible (it's not obvious,
after all, that the typedef is not a struct).  This applies to
des_key_schedule as well, but I didn't want to change everything (my
changes restore compatibility with SSLeay for those arguments, while
changing from des_key_schedule to des_key_schedule * would introduce
something that SSLeay did not do).

SSLeay used to have pointers to the arrays, but was full of casts to
handle those.  Those casts, however, are not at all necessary:

SSLeay had
void des_ofb_encrypt(in, out, numbits, length, schedule, ivec)
unsigned char *in;
unsigned char *out;
[...]
des_cblock (*ivec);
        {
[...]
        unsigned char *iv;

[...]
        iv=(unsigned char *)ivec;

which is bad; OpenSSL now has

void des_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
             long length, des_key_schedule schedule, des_cblock ivec)
        {
[...]   
        unsigned char *iv;

[...]
        iv=ivec;

and my patch would change this to

void des_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
             long length, des_key_schedule schedule, des_cblock *ivec)
        {
[...]
        unsigned char *iv;

[...]
        iv = &(*ivec)[0];

-- i.e. let iv be a pointer to the first element of the array pointed
to by ivec.  (You could also write iv=*ivec, which implicitly is the
same, but it doesn't make clear on first sight that des_cblock is an
array type.)

In the EVP library I introduced some casts -- those method functions
should have prototypes that are usable for the general case (although
we don't have the general argument list yet, now they are invoked
without argument list declaration:

typedef struct evp_cipher_st
        {
[...]
        void (*init)();         /* init for encryption */
        void (*do_cipher)();    /* encrypt data */
        void (*cleanup)();      /* used by cipher method */ 
[...]
        } EVP_CIPHER;)



Here are the diffs; tell me what you think about it.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Index: crypto/des/des.h
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/des.h,v
retrieving revision 1.10
diff -u -r1.10 des.h
--- des.h       1999/05/13 11:37:00     1.10
+++ des.h       1999/05/15 10:39:15
@@ -77,8 +77,8 @@
 #endif
 
 typedef unsigned char des_cblock[8];
-typedef unsigned char *des_cblocks; /* Unfortunately there's no way to say that
-                                      we want a multiple of 8 */
+typedef const unsigned char const_des_cblock[8];
+
 typedef struct des_ks_struct
        {
        union   {
@@ -87,7 +87,9 @@
                 * 8 byte longs */
                DES_LONG pad[2];
                } ks;
-#undef _
+#if defined _
+# error "_ is defined, but some strange definition the DES library cannot handle 
+that."
+#endif
 #define _      ks._
        int weak_key;
        } des_key_schedule[16];
@@ -143,25 +145,25 @@
 EXTERN int des_set_weak_key_flag; /* set the weak key flag */
 
 const char *des_options(void);
-void des_ecb3_encrypt(const des_cblock input, des_cblock output,
+void des_ecb3_encrypt(const_des_cblock *input, des_cblock *output,
                      des_key_schedule ks1,des_key_schedule ks2,
                      des_key_schedule ks3, int enc);
-DES_LONG des_cbc_cksum(const unsigned char *input,des_cblock output,
+DES_LONG des_cbc_cksum(const unsigned char *input,des_cblock *output,
                       long length,des_key_schedule schedule,
-                      const des_cblock ivec);
+                      const_des_cblock *ivec);
 void des_cbc_encrypt(const unsigned char *input,unsigned char *output,
-                    long length,des_key_schedule schedule,des_cblock ivec,
+                    long length,des_key_schedule schedule,des_cblock *ivec,
                     int enc);
 void des_ncbc_encrypt(const unsigned char *input,unsigned char *output,
-                     long length,des_key_schedule schedule,des_cblock ivec,
+                     long length,des_key_schedule schedule,des_cblock *ivec,
                      int enc);
 void des_xcbc_encrypt(const unsigned char *input,unsigned char *output,
-                     long length,des_key_schedule schedule,des_cblock ivec,
-                     const des_cblock inw,const des_cblock outw,int enc);
+                     long length,des_key_schedule schedule,des_cblock *ivec,
+                     const_des_cblock *inw,const_des_cblock *outw,int enc);
 void des_cfb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
-                    long length,des_key_schedule schedule,des_cblock ivec,
+                    long length,des_key_schedule schedule,des_cblock *ivec,
                     int enc);
-void des_ecb_encrypt(const des_cblock input,des_cblock output,
+void des_ecb_encrypt(const_des_cblock *input,des_cblock *output,
                     des_key_schedule ks,int enc);
 void des_encrypt(DES_LONG *data,des_key_schedule ks, int enc);
 void des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc);
@@ -172,29 +174,29 @@
 void des_ede3_cbc_encrypt(const unsigned char *input,unsigned char *output, 
                          long length,
                          des_key_schedule ks1,des_key_schedule ks2,
-                         des_key_schedule ks3,des_cblock ivec,int enc);
+                         des_key_schedule ks3,des_cblock *ivec,int enc);
 void des_ede3_cbcm_encrypt(const unsigned char *in,unsigned char *out,
                           long length,
                           des_key_schedule ks1,des_key_schedule ks2,
                           des_key_schedule ks3,
-                          des_cblock ivec1,des_cblock ivec2,
+                          des_cblock *ivec1,des_cblock *ivec2,
                           int enc);
 void des_ede3_cfb64_encrypt(const unsigned char *in,unsigned char *out,
                            long length,des_key_schedule ks1,
                            des_key_schedule ks2,des_key_schedule ks3,
-                           des_cblock ivec,int *num,int enc);
+                           des_cblock *ivec,int *num,int enc);
 void des_ede3_ofb64_encrypt(const unsigned char *in,unsigned char *out,
                            long length,des_key_schedule ks1,
                            des_key_schedule ks2,des_key_schedule ks3,
-                           des_cblock ivec,int *num);
+                           des_cblock *ivec,int *num);
 
-void des_xwhite_in2out(const des_cblock des_key,const des_cblock in_white,
-                      des_cblock out_white);
+void des_xwhite_in2out(const_des_cblock *des_key,const_des_cblock *in_white,
+                      des_cblock *out_white);
 
 int des_enc_read(int fd,void *buf,int len,des_key_schedule sched,
-                des_cblock iv);
+                des_cblock *iv);
 int des_enc_write(int fd,const void *buf,int len,des_key_schedule sched,
-                 des_cblock iv);
+                 des_cblock *iv);
 char *des_fcrypt(const char *buf,const char *salt, char *ret);
 #if defined(PERL5) || defined(__FreeBSD__)
 char *des_crypt(const char *buf,const char *salt);
@@ -208,33 +210,33 @@
 #endif
 #endif
 void des_ofb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
-                    long length,des_key_schedule schedule,des_cblock ivec);
+                    long length,des_key_schedule schedule,des_cblock *ivec);
 void des_pcbc_encrypt(const unsigned char *input,unsigned char *output,
-                     long length,des_key_schedule schedule,des_cblock ivec,
+                     long length,des_key_schedule schedule,des_cblock *ivec,
                      int enc);
-DES_LONG des_quad_cksum(const unsigned char *input,des_cblocks output,
-                       long length,int out_count,des_cblock seed);
-void des_random_seed(des_cblock key);
-void des_random_key(des_cblock ret);
-int des_read_password(des_cblock key,const char *prompt,int verify);
-int des_read_2passwords(des_cblock key1,des_cblock key2,
+DES_LONG des_quad_cksum(const unsigned char *input,des_cblock output[],
+                       long length,int out_count,des_cblock *seed);
+void des_random_seed(des_cblock *key);
+void des_random_key(des_cblock *ret);
+int des_read_password(des_cblock *key,const char *prompt,int verify);
+int des_read_2passwords(des_cblock *key1,des_cblock *key2,
                        const char *prompt,int verify);
 int des_read_pw_string(char *buf,int length,const char *prompt,int verify);
-void des_set_odd_parity(des_cblock key);
-int des_is_weak_key(const des_cblock key);
-int des_set_key(const des_cblock key,des_key_schedule schedule);
-int des_key_sched(const des_cblock key,des_key_schedule schedule);
-void des_string_to_key(const char *str,des_cblock key);
-void des_string_to_2keys(const char *str,des_cblock key1,des_cblock key2);
+void des_set_odd_parity(des_cblock *key);
+int des_is_weak_key(const_des_cblock *key);
+int des_set_key(const_des_cblock *key,des_key_schedule schedule);
+int des_key_sched(const_des_cblock *key,des_key_schedule schedule);
+void des_string_to_key(const char *str,des_cblock *key);
+void des_string_to_2keys(const char *str,des_cblock *key1,des_cblock *key2);
 void des_cfb64_encrypt(const unsigned char *in,unsigned char *out,long length,
-                      des_key_schedule schedule,des_cblock ivec,int *num,
+                      des_key_schedule schedule,des_cblock *ivec,int *num,
                       int enc);
 void des_ofb64_encrypt(const unsigned char *in,unsigned char *out,long length,
-                      des_key_schedule schedule,des_cblock ivec,int *num);
+                      des_key_schedule schedule,des_cblock *ivec,int *num);
 int des_read_pw(char *buf,char *buff,int size,const char *prompt,int verify);
 
 /* Extra functions from Mark Murray <[EMAIL PROTECTED]> */
-void des_cblock_print_file(const des_cblock cb, FILE *fp);
+void des_cblock_print_file(const_des_cblock *cb, FILE *fp);
 
 #ifdef FreeBSD
 /* The following functions are not in the normal unix build or the
Index: apps/speed.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/apps/speed.c,v
retrieving revision 1.10
diff -u -r1.10 speed.c
--- speed.c     1999/05/13 13:29:25     1.10
+++ speed.c     1999/05/15 10:05:58
@@ -580,9 +580,9 @@
 #endif
 
 #ifndef NO_DES
-       des_set_key(key,sch);
-       des_set_key(key2,sch2);
-       des_set_key(key3,sch3);
+       des_set_key(&key,sch);
+       des_set_key(&key2,sch2);
+       des_set_key(&key3,sch3);
 #endif
 #ifndef NO_IDEA
        idea_set_encrypt_key(key16,&idea_ks);
@@ -833,7 +833,7 @@
                        Time_F(START);
                        for (count=0,run=1; COND(c[D_CBC_DES][j]); count++)
                                des_ncbc_encrypt(buf,buf,lengths[j],sch,
-                                                &(iv[0]),DES_ENCRYPT);
+                                                &iv,DES_ENCRYPT);
                        d=Time_F(STOP);
                        BIO_printf(bio_err,"%ld %s's in %.2fs\n",
                                count,names[D_CBC_DES],d);
@@ -850,7 +850,7 @@
                        for (count=0,run=1; COND(c[D_EDE3_DES][j]); count++)
                                des_ede3_cbc_encrypt(buf,buf,lengths[j],
                                                     sch,sch2,sch3,
-                                                    &(iv[0]),DES_ENCRYPT);
+                                                    &iv,DES_ENCRYPT);
                        d=Time_F(STOP);
                        BIO_printf(bio_err,"%ld %s's in %.2fs\n",
                                count,names[D_EDE3_DES],d);
Index: crypto/des/cbc_cksm.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/cbc_cksm.c,v
retrieving revision 1.4
diff -u -r1.4 cbc_cksm.c
--- cbc_cksm.c  1999/04/19 21:28:05     1.4
+++ cbc_cksm.c  1999/05/15 10:28:47
@@ -58,12 +58,15 @@
 
 #include "des_locl.h"
 
-DES_LONG des_cbc_cksum(const unsigned char *in, des_cblock out, long length,
-            des_key_schedule schedule, const des_cblock iv)
+DES_LONG des_cbc_cksum(const unsigned char *in, des_cblock *output,
+               long length,
+               des_key_schedule schedule, const_des_cblock *ivec)
        {
        register DES_LONG tout0,tout1,tin0,tin1;
        register long l=length;
        DES_LONG tin[2];
+       unsigned char *out = &(*output)[0];
+       const unsigned char *iv = &(*ivec)[0];
 
        c2l(iv,tout0);
        c2l(iv,tout1);
Index: crypto/des/cbc_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/cbc_enc.c,v
retrieving revision 1.3
diff -u -r1.3 cbc_enc.c
--- cbc_enc.c   1999/04/19 21:28:05     1.3
+++ cbc_enc.c   1999/05/15 10:37:43
@@ -61,7 +61,7 @@
 /* Note that this is inconsistent with other DES functions, in that it doesn't
    update ivec */
 void des_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
-            des_key_schedule schedule, des_cblock ivec, int enc)
+            des_key_schedule schedule, des_cblock *ivec, int enc)
        {
        register DES_LONG tin0,tin1;
        register DES_LONG tout0,tout1,xor0,xor1;
@@ -69,7 +69,7 @@
        DES_LONG tin[2];
        unsigned char *iv;
 
-       iv=ivec;
+       iv = &(*ivec)[0];
 
        if (enc)
                {
Index: crypto/des/cfb64ede.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/cfb64ede.c,v
retrieving revision 1.3
diff -u -r1.3 cfb64ede.c
--- cfb64ede.c  1999/04/19 21:28:05     1.3
+++ cfb64ede.c  1999/05/15 10:38:15
@@ -65,7 +65,7 @@
 
 void des_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out,
             long length, des_key_schedule ks1, des_key_schedule ks2,
-            des_key_schedule ks3, des_cblock ivec, int *num, int enc)
+            des_key_schedule ks3, des_cblock *ivec, int *num, int enc)
        {
        register DES_LONG v0,v1;
        register long l=length;
@@ -73,7 +73,7 @@
        DES_LONG ti[2];
        unsigned char *iv,c,cc;
 
-       iv=ivec;
+       iv=&(*ivec)[0];
        if (enc)
                {
                while (l--)
@@ -89,10 +89,10 @@
                                v0=ti[0];
                                v1=ti[1];
 
-                               iv=ivec;
+                               iv = &(*ivec)[0];
                                l2c(v0,iv);
                                l2c(v1,iv);
-                               iv=ivec;
+                               iv = &(*ivec)[0];
                                }
                        c= *(in++)^iv[n];
                        *(out++)=c;
@@ -115,10 +115,10 @@
                                v0=ti[0];
                                v1=ti[1];
 
-                               iv=ivec;
+                               iv = &(*ivec)[0];
                                l2c(v0,iv);
                                l2c(v1,iv);
-                               iv=ivec;
+                               iv = &(*ivec)[0];
                                }
                        cc= *(in++);
                        c=iv[n];
Index: crypto/des/cfb64enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/cfb64enc.c,v
retrieving revision 1.3
diff -u -r1.3 cfb64enc.c
--- cfb64enc.c  1999/04/19 21:28:05     1.3
+++ cfb64enc.c  1999/05/15 10:38:02
@@ -64,8 +64,8 @@
  */
 
 void des_cfb64_encrypt(const unsigned char *in, unsigned char *out,
-            long length, des_key_schedule schedule, des_cblock ivec, int *num,
-            int enc)
+            long length, des_key_schedule schedule, des_cblock *ivec,
+            int *num, int enc)
        {
        register DES_LONG v0,v1;
        register long l=length;
@@ -73,7 +73,7 @@
        DES_LONG ti[2];
        unsigned char *iv,c,cc;
 
-       iv=ivec;
+       iv = &(*ivec)[0];
        if (enc)
                {
                while (l--)
@@ -83,10 +83,10 @@
                                c2l(iv,v0); ti[0]=v0;
                                c2l(iv,v1); ti[1]=v1;
                                des_encrypt(ti,schedule,DES_ENCRYPT);
-                               iv=ivec;
+                               iv = &(*ivec)[0];
                                v0=ti[0]; l2c(v0,iv);
                                v0=ti[1]; l2c(v0,iv);
-                               iv=ivec;
+                               iv = &(*ivec)[0];
                                }
                        c= *(in++)^iv[n];
                        *(out++)=c;
@@ -103,10 +103,10 @@
                                c2l(iv,v0); ti[0]=v0;
                                c2l(iv,v1); ti[1]=v1;
                                des_encrypt(ti,schedule,DES_ENCRYPT);
-                               iv=ivec;
+                               iv = &(*ivec)[0];
                                v0=ti[0]; l2c(v0,iv);
                                v0=ti[1]; l2c(v0,iv);
-                               iv=ivec;
+                               iv = &(*ivec)[0];
                                }
                        cc= *(in++);
                        c=iv[n];
Index: crypto/des/cfb_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/cfb_enc.c,v
retrieving revision 1.3
diff -u -r1.3 cfb_enc.c
--- cfb_enc.c   1999/04/19 21:28:05     1.3
+++ cfb_enc.c   1999/05/15 10:40:01
@@ -65,7 +65,7 @@
  * byte.
  */
 void des_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
-            long length, des_key_schedule schedule, des_cblock ivec, int enc)
+            long length, des_key_schedule schedule, des_cblock *ivec, int enc)
        {
        register DES_LONG d0,d1,v0,v1,n=(numbits+7)/8;
        register DES_LONG mask0,mask1;
@@ -90,7 +90,7 @@
                mask1=0x00000000L;
                }
 
-       iv=ivec;
+       iv = &(*ivec)[0];
        c2l(iv,v0);
        c2l(iv,v1);
        if (enc)
@@ -157,7 +157,7 @@
                        out+=n;
                        }
                }
-       iv=ivec;
+       iv = &(*ivec)[0];
        l2c(v0,iv);
        l2c(v1,iv);
        v0=v1=d0=d1=ti[0]=ti[1]=0;
Index: crypto/des/des_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/des_enc.c,v
retrieving revision 1.4
diff -u -r1.4 des_enc.c
--- des_enc.c   1999/04/19 21:28:06     1.4
+++ des_enc.c   1999/05/15 10:40:09
@@ -290,7 +290,7 @@
 #ifndef DES_DEFAULT_OPTIONS
 
 void des_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length,
-            des_key_schedule schedule, des_cblock ivec, int enc)
+            des_key_schedule schedule, des_cblock *ivec, int enc)
        {
        register DES_LONG tin0,tin1;
        register DES_LONG tout0,tout1,xor0,xor1;
@@ -298,7 +298,7 @@
        DES_LONG tin[2];
        unsigned char *iv;
 
-       iv=ivec;
+       iv = &(*ivec)[0];
 
        if (enc)
                {
@@ -323,7 +323,7 @@
                        tout0=tin[0]; l2c(tout0,out);
                        tout1=tin[1]; l2c(tout1,out);
                        }
-               iv=ivec;
+               iv = &(*ivec)[0];
                l2c(tout0,iv);
                l2c(tout1,iv);
                }
@@ -355,7 +355,7 @@
                        xor1=tin1;
                        }
 
-               iv=ivec;
+               iv = &(*ivec)[0];
                l2c(xor0,iv);
                l2c(xor1,iv);
                }
@@ -365,7 +365,7 @@
 
 void des_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output,
             long length, des_key_schedule ks1, des_key_schedule ks2,
-            des_key_schedule ks3, des_cblock ivec, int enc)
+            des_key_schedule ks3, des_cblock *ivec, int enc)
        {
        register DES_LONG tin0,tin1;
        register DES_LONG tout0,tout1,xor0,xor1;
@@ -377,7 +377,7 @@
 
        in=input;
        out=output;
-       iv=ivec;
+       iv = &(*ivec)[0];
 
        if (enc)
                {
@@ -414,7 +414,7 @@
                        l2c(tout0,out);
                        l2c(tout1,out);
                        }
-               iv=ivec;
+               iv = &(*ivec)[0];
                l2c(tout0,iv);
                l2c(tout1,iv);
                }
@@ -466,7 +466,7 @@
                        xor1=t1;
                        }
 
-               iv=ivec;
+               iv = &(*ivec)[0];
                l2c(xor0,iv);
                l2c(xor1,iv);
                }
Index: crypto/des/destest.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/destest.c,v
retrieving revision 1.11
diff -u -r1.11 destest.c
--- destest.c   1999/05/13 11:37:00     1.11
+++ destest.c   1999/05/15 10:46:31
@@ -330,17 +330,17 @@
 
 #ifndef NO_DESCBCM
        printf("Doing cbcm\n");
-       if ((j=des_key_sched(cbc_key,ks)) != 0)
+       if ((j=des_key_sched(&cbc_key,ks)) != 0)
                {
                printf("Key error %d\n",j);
                err=1;
                }
-       if ((j=des_key_sched(cbc2_key,ks2)) != 0)
+       if ((j=des_key_sched(&cbc2_key,ks2)) != 0)
                {
                printf("Key error %d\n",j);
                err=1;
                }
-       if ((j=des_key_sched(cbc3_key,ks3)) != 0)
+       if ((j=des_key_sched(&cbc3_key,ks3)) != 0)
                {
                printf("Key error %d\n",j);
                err=1;
@@ -352,10 +352,10 @@
        memcpy(iv3,cbc_iv,sizeof(cbc_iv));
        memset(iv2,'\0',sizeof iv2);
 
-       des_ede3_cbcm_encrypt(cbc_data,cbc_out,16L,ks,ks2,ks3,iv3,iv2,
+       des_ede3_cbcm_encrypt(cbc_data,cbc_out,16L,ks,ks2,ks3,&iv3,&iv2,
                              DES_ENCRYPT);
        des_ede3_cbcm_encrypt(&cbc_data[16],&cbc_out[16],i-16,ks,ks2,ks3,
-                             iv3,iv2,DES_ENCRYPT);
+                             &iv3,&iv2,DES_ENCRYPT);
        /*      if (memcmp(cbc_out,cbc3_ok,
                (unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0)
                {
@@ -365,7 +365,7 @@
        */
        memcpy(iv3,cbc_iv,sizeof(cbc_iv));
        memset(iv2,'\0',sizeof iv2);
-       des_ede3_cbcm_encrypt(cbc_out,cbc_in,i,ks,ks2,ks3,iv3,iv2,DES_DECRYPT);
+       des_ede3_cbcm_encrypt(cbc_out,cbc_in,i,ks,ks2,ks3,&iv3,&iv2,DES_DECRYPT);
        if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
                {
                int n;
@@ -384,7 +384,7 @@
        printf("Doing ecb\n");
        for (i=0; i<NUM_TESTS; i++)
                {
-               if ((j=des_key_sched(key_data[i],ks)) != 0)
+               if ((j=des_key_sched(&key_data[i],ks)) != 0)
                        {
                        printf("Key error %2d:%d\n",i+1,j);
                        err=1;
@@ -392,8 +392,8 @@
                memcpy(in,plain_data[i],8);
                memset(out,0,8);
                memset(outin,0,8);
-               des_ecb_encrypt(in,out,ks,DES_ENCRYPT);
-               des_ecb_encrypt(out,outin,ks,DES_DECRYPT);
+               des_ecb_encrypt(&in,&out,ks,DES_ENCRYPT);
+               des_ecb_encrypt(&out,&outin,ks,DES_DECRYPT);
 
                if (memcmp(out,cipher_data[i],8) != 0)
                        {
@@ -414,17 +414,17 @@
        printf("Doing ede ecb\n");
        for (i=0; i<(NUM_TESTS-1); i++)
                {
-               if ((j=des_key_sched(key_data[i],ks)) != 0)
+               if ((j=des_key_sched(&key_data[i],ks)) != 0)
                        {
                        err=1;
                        printf("Key error %2d:%d\n",i+1,j);
                        }
-               if ((j=des_key_sched(key_data[i+1],ks2)) != 0)
+               if ((j=des_key_sched(&key_data[i+1],ks2)) != 0)
                        {
                        printf("Key error %2d:%d\n",i+2,j);
                        err=1;
                        }
-               if ((j=des_key_sched(key_data[i+2],ks3)) != 0)
+               if ((j=des_key_sched(&key_data[i+2],ks3)) != 0)
                        {
                        printf("Key error %2d:%d\n",i+3,j);
                        err=1;
@@ -432,8 +432,8 @@
                memcpy(in,plain_data[i],8);
                memset(out,0,8);
                memset(outin,0,8);
-               des_ecb2_encrypt(in,out,ks,ks2,DES_ENCRYPT);
-               des_ecb2_encrypt(out,outin,ks,ks2,DES_DECRYPT);
+               des_ecb2_encrypt(&in,&out,ks,ks2,DES_ENCRYPT);
+               des_ecb2_encrypt(&out,&outin,ks,ks2,DES_DECRYPT);
 
                if (memcmp(out,cipher_ecb2[i],8) != 0)
                        {
@@ -452,7 +452,7 @@
 #endif
 
        printf("Doing cbc\n");
-       if ((j=des_key_sched(cbc_key,ks)) != 0)
+       if ((j=des_key_sched(&cbc_key,ks)) != 0)
                {
                printf("Key error %d\n",j);
                err=1;
@@ -461,13 +461,13 @@
        memset(cbc_in,0,40);
        memcpy(iv3,cbc_iv,sizeof(cbc_iv));
        des_ncbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,
-                        iv3,DES_ENCRYPT);
+                        &iv3,DES_ENCRYPT);
        if (memcmp(cbc_out,cbc_ok,32) != 0)
                printf("cbc_encrypt encrypt error\n");
 
        memcpy(iv3,cbc_iv,sizeof(cbc_iv));
        des_ncbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,
-                        iv3,DES_DECRYPT);
+                        &iv3,DES_DECRYPT);
        if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)) != 0)
                {
                printf("cbc_encrypt decrypt error\n");
@@ -476,7 +476,7 @@
 
 #ifndef LIBDES_LIT
        printf("Doing desx cbc\n");
-       if ((j=des_key_sched(cbc_key,ks)) != 0)
+       if ((j=des_key_sched(&cbc_key,ks)) != 0)
                {
                printf("Key error %d\n",j);
                err=1;
@@ -485,14 +485,14 @@
        memset(cbc_in,0,40);
        memcpy(iv3,cbc_iv,sizeof(cbc_iv));
        des_xcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,
-                        iv3,cbc2_key,cbc3_key, DES_ENCRYPT);
+                        &iv3,&cbc2_key,&cbc3_key, DES_ENCRYPT);
        if (memcmp(cbc_out,xcbc_ok,32) != 0)
                {
                printf("des_xcbc_encrypt encrypt error\n");
                }
        memcpy(iv3,cbc_iv,sizeof(cbc_iv));
        des_xcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,
-                        iv3,cbc2_key,cbc3_key, DES_DECRYPT);
+                        &iv3,&cbc2_key,&cbc3_key, DES_DECRYPT);
        if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
                {
                printf("des_xcbc_encrypt decrypt error\n");
@@ -501,17 +501,17 @@
 #endif
 
        printf("Doing ede cbc\n");
-       if ((j=des_key_sched(cbc_key,ks)) != 0)
+       if ((j=des_key_sched(&cbc_key,ks)) != 0)
                {
                printf("Key error %d\n",j);
                err=1;
                }
-       if ((j=des_key_sched(cbc2_key,ks2)) != 0)
+       if ((j=des_key_sched(&cbc2_key,ks2)) != 0)
                {
                printf("Key error %d\n",j);
                err=1;
                }
-       if ((j=des_key_sched(cbc3_key,ks3)) != 0)
+       if ((j=des_key_sched(&cbc3_key,ks3)) != 0)
                {
                printf("Key error %d\n",j);
                err=1;
@@ -522,9 +522,9 @@
        /* i=((i+7)/8)*8; */
        memcpy(iv3,cbc_iv,sizeof(cbc_iv));
 
-       des_ede3_cbc_encrypt(cbc_data,cbc_out,16L,ks,ks2,ks3,iv3,DES_ENCRYPT);
+       des_ede3_cbc_encrypt(cbc_data,cbc_out,16L,ks,ks2,ks3,&iv3,DES_ENCRYPT);
        des_ede3_cbc_encrypt(&(cbc_data[16]),&(cbc_out[16]),i-16,ks,ks2,ks3,
-                            iv3,DES_ENCRYPT);
+                            &iv3,DES_ENCRYPT);
        if (memcmp(cbc_out,cbc3_ok,
                (unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0)
                {
@@ -533,7 +533,7 @@
                }
 
        memcpy(iv3,cbc_iv,sizeof(cbc_iv));
-       des_ede3_cbc_encrypt(cbc_out,cbc_in,i,ks,ks2,ks3,iv3,DES_DECRYPT);
+       des_ede3_cbc_encrypt(cbc_out,cbc_in,i,ks,ks2,ks3,&iv3,DES_DECRYPT);
        if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
                {
                printf("des_ede3_cbc_encrypt decrypt error\n");
@@ -542,21 +542,21 @@
 
 #ifndef LIBDES_LIT
        printf("Doing pcbc\n");
-       if ((j=des_key_sched(cbc_key,ks)) != 0)
+       if ((j=des_key_sched(&cbc_key,ks)) != 0)
                {
                printf("Key error %d\n",j);
                err=1;
                }
        memset(cbc_out,0,40);
        memset(cbc_in,0,40);
-       des_pcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,cbc_iv,
-                        DES_ENCRYPT);
+       des_pcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,
+                        &cbc_iv,DES_ENCRYPT);
        if (memcmp(cbc_out,pcbc_ok,32) != 0)
                {
                printf("pcbc_encrypt encrypt error\n");
                err=1;
                }
-       des_pcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,cbc_iv,
+       des_pcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,&cbc_iv,
                         DES_DECRYPT);
        if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
                {
@@ -582,7 +582,7 @@
        memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
        for (i=0; i<sizeof(plain); i++)
                des_cfb_encrypt(&(plain[i]),&(cfb_buf1[i]),
-                       8,1,ks,cfb_tmp,DES_ENCRYPT);
+                       8,1,ks,&cfb_tmp,DES_ENCRYPT);
        if (memcmp(cfb_cipher8,cfb_buf1,sizeof(plain)) != 0)
                {
                printf("cfb_encrypt small encrypt error\n");
@@ -592,7 +592,7 @@
        memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
        for (i=0; i<sizeof(plain); i++)
                des_cfb_encrypt(&(cfb_buf1[i]),&(cfb_buf2[i]),
-                       8,1,ks,cfb_tmp,DES_DECRYPT);
+                       8,1,ks,&cfb_tmp,DES_DECRYPT);
        if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
                {
                printf("cfb_encrypt small decrypt error\n");
@@ -605,9 +605,9 @@
        printf("done\n");
 
        printf("Doing ofb\n");
-       des_key_sched(ofb_key,ks);
+       des_key_sched(&ofb_key,ks);
        memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
-       des_ofb_encrypt(plain,ofb_buf1,64,sizeof(plain)/8,ks,ofb_tmp);
+       des_ofb_encrypt(plain,ofb_buf1,64,sizeof(plain)/8,ks,&ofb_tmp);
        if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
                {
                printf("ofb_encrypt encrypt error\n");
@@ -620,7 +620,7 @@
                err=1;
                }
        memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
-       des_ofb_encrypt(ofb_buf1,ofb_buf2,64,sizeof(ofb_buf1)/8,ks,ofb_tmp);
+       des_ofb_encrypt(ofb_buf1,ofb_buf2,64,sizeof(ofb_buf1)/8,ks,&ofb_tmp);
        if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
                {
                printf("ofb_encrypt decrypt error\n");
@@ -634,14 +634,14 @@
                }
 
        printf("Doing ofb64\n");
-       des_key_sched(ofb_key,ks);
+       des_key_sched(&ofb_key,ks);
        memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
        memset(ofb_buf1,0,sizeof(ofb_buf1));
        memset(ofb_buf2,0,sizeof(ofb_buf1));
        num=0;
        for (i=0; i<sizeof(plain); i++)
                {
-               des_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,ofb_tmp,
+               des_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,&ofb_tmp,
                                  &num);
                }
        if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
@@ -651,7 +651,7 @@
                }
        memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
        num=0;
-       des_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),ks,ofb_tmp,&num);
+       des_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),ks,&ofb_tmp,&num);
        if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
                {
                printf("ofb64_encrypt decrypt error\n");
@@ -659,7 +659,7 @@
                }
 
        printf("Doing ede_ofb64\n");
-       des_key_sched(ofb_key,ks);
+       des_key_sched(&ofb_key,ks);
        memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
        memset(ofb_buf1,0,sizeof(ofb_buf1));
        memset(ofb_buf2,0,sizeof(ofb_buf1));
@@ -667,7 +667,7 @@
        for (i=0; i<sizeof(plain); i++)
                {
                des_ede3_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,ks,ks,
-                                      ofb_tmp,&num);
+                                      &ofb_tmp,&num);
                }
        if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
                {
@@ -677,7 +677,7 @@
        memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
        num=0;
        des_ede3_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),ks,
-                              ks,ks,ofb_tmp,&num);
+                              ks,ks,&ofb_tmp,&num);
        if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
                {
                printf("ede_ofb64_encrypt decrypt error\n");
@@ -685,8 +685,8 @@
                }
 
        printf("Doing cbc_cksum\n");
-       des_key_sched(cbc_key,ks);
-       cs=des_cbc_cksum(cbc_data,cret,strlen((char *)cbc_data),ks,cbc_iv);
+       des_key_sched(&cbc_key,ks);
+       cs=des_cbc_cksum(cbc_data,&cret,strlen((char *)cbc_data),ks,&cbc_iv);
        if (cs != cbc_cksum_ret)
                {
                printf("bad return value (%08lX), should be %08lX\n",
@@ -704,8 +704,8 @@
           quad_cksum returns up to 4 groups of 8 bytes, this test gets it to
           produce 2 groups then treats them as 4 groups of 4 bytes.
           Ben 13 Feb 1999 */
-       cs=quad_cksum(cbc_data,(des_cblocks)qret,strlen((char *)cbc_data),2,
-                     cbc_iv);
+       cs=quad_cksum(cbc_data,(des_cblock *)qret,strlen((char *)cbc_data),2,
+                     &cbc_iv);
 
        { /* Big-endian fix */
        static DES_LONG l=1;
@@ -769,7 +769,7 @@
                printf(" %d",i);
                des_ncbc_encrypt(&(cbc_out[i]),cbc_in,
                                 strlen((char *)cbc_data)+1,ks,
-                                cbc_iv,DES_ENCRYPT);
+                                &cbc_iv,DES_ENCRYPT);
                }
        printf("\noutput word alignment test");
        for (i=0; i<4; i++)
@@ -777,7 +777,7 @@
                printf(" %d",i);
                des_ncbc_encrypt(cbc_out,&(cbc_in[i]),
                                 strlen((char *)cbc_data)+1,ks,
-                                cbc_iv,DES_ENCRYPT);
+                                &cbc_iv,DES_ENCRYPT);
                }
        printf("\n");
        printf("fast crypt test ");
@@ -824,9 +824,9 @@
        des_key_schedule ks;
        int i,err=0;
 
-       des_key_sched(cfb_key,ks);
+       des_key_sched(&cfb_key,ks);
        memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
-       des_cfb_encrypt(plain,cfb_buf1,bits,sizeof(plain),ks,cfb_tmp,
+       des_cfb_encrypt(plain,cfb_buf1,bits,sizeof(plain),ks,&cfb_tmp,
                        DES_ENCRYPT);
        if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
                {
@@ -836,7 +836,7 @@
                        printf("%s\n",pt(&(cfb_buf1[i])));
                }
        memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
-       des_cfb_encrypt(cfb_buf1,cfb_buf2,bits,sizeof(plain),ks,cfb_tmp,
+       des_cfb_encrypt(cfb_buf1,cfb_buf2,bits,sizeof(plain),ks,&cfb_tmp,
                        DES_DECRYPT);
        if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
                {
@@ -853,12 +853,12 @@
        des_key_schedule ks;
        int err=0,i,n;
 
-       des_key_sched(cfb_key,ks);
+       des_key_sched(&cfb_key,ks);
        memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
        n=0;
-       des_cfb64_encrypt(plain,cfb_buf1,12,ks,cfb_tmp,&n,DES_ENCRYPT);
+       des_cfb64_encrypt(plain,cfb_buf1,12,ks,&cfb_tmp,&n,DES_ENCRYPT);
        des_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),sizeof(plain)-12,ks,
-                         cfb_tmp,&n,DES_ENCRYPT);
+                         &cfb_tmp,&n,DES_ENCRYPT);
        if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
                {
                err=1;
@@ -868,9 +868,9 @@
                }
        memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
        n=0;
-       des_cfb64_encrypt(cfb_buf1,cfb_buf2,17,ks,cfb_tmp,&n,DES_DECRYPT);
+       des_cfb64_encrypt(cfb_buf1,cfb_buf2,17,ks,&cfb_tmp,&n,DES_DECRYPT);
        des_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
-                         sizeof(plain)-17,ks,cfb_tmp,&n,DES_DECRYPT);
+                         sizeof(plain)-17,ks,&cfb_tmp,&n,DES_DECRYPT);
        if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
                {
                err=1;
@@ -886,14 +886,14 @@
        des_key_schedule ks;
        int err=0,i,n;
 
-       des_key_sched(cfb_key,ks);
+       des_key_sched(&cfb_key,ks);
        memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
        n=0;
-       des_ede3_cfb64_encrypt(plain,cfb_buf1,12,ks,ks,ks,cfb_tmp,&n,
+       des_ede3_cfb64_encrypt(plain,cfb_buf1,12,ks,ks,ks,&cfb_tmp,&n,
                               DES_ENCRYPT);
        des_ede3_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),
                               sizeof(plain)-12,ks,ks,ks,
-                              cfb_tmp,&n,DES_ENCRYPT);
+                              &cfb_tmp,&n,DES_ENCRYPT);
        if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
                {
                err=1;
@@ -904,10 +904,10 @@
        memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
        n=0;
        des_ede3_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,ks,ks,ks,
-                              cfb_tmp,&n,DES_DECRYPT);
+                              &cfb_tmp,&n,DES_DECRYPT);
        des_ede3_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
                               sizeof(plain)-17,ks,ks,ks,
-                              cfb_tmp,&n,DES_DECRYPT);
+                              &cfb_tmp,&n,DES_DECRYPT);
        if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
                {
                err=1;
Index: crypto/des/ecb3_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/ecb3_enc.c,v
retrieving revision 1.5
diff -u -r1.5 ecb3_enc.c
--- ecb3_enc.c  1999/04/20 15:11:04     1.5
+++ ecb3_enc.c  1999/05/15 10:42:50
@@ -58,12 +58,14 @@
 
 #include "des_locl.h"
 
-void des_ecb3_encrypt(const des_cblock in, des_cblock out,
+void des_ecb3_encrypt(const_des_cblock *input, des_cblock *output,
             des_key_schedule ks1, des_key_schedule ks2, des_key_schedule ks3,
             int enc)
        {
        register DES_LONG l0,l1;
        DES_LONG ll[2];
+       const unsigned char *in = &(*input)[0];
+       unsigned char *out = &(*output)[0];
 
        c2l(in,l0);
        c2l(in,l1);
Index: crypto/des/ecb_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/ecb_enc.c,v
retrieving revision 1.13
diff -u -r1.13 ecb_enc.c
--- ecb_enc.c   1999/05/13 11:37:00     1.13
+++ ecb_enc.c   1999/05/15 10:51:56
@@ -103,11 +103,14 @@
        }
                
 
-void des_ecb_encrypt(const des_cblock in, des_cblock out, des_key_schedule ks,
+void des_ecb_encrypt(const_des_cblock *input, des_cblock *output,
+            des_key_schedule ks,
             int enc)
        {
        register DES_LONG l;
        DES_LONG ll[2];
+       const unsigned char *in = &(*input)[0];
+       unsigned char *out = &(*output)[0];
 
        c2l(in,l); ll[0]=l;
        c2l(in,l); ll[1]=l;
Index: crypto/des/ede_cbcm_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/ede_cbcm_enc.c,v
retrieving revision 1.6
diff -u -r1.6 ede_cbcm_enc.c
--- ede_cbcm_enc.c      1999/04/27 01:13:58     1.6
+++ ede_cbcm_enc.c      1999/05/15 10:34:27
@@ -73,7 +73,8 @@
 
 void des_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out,
             long length, des_key_schedule ks1, des_key_schedule ks2,
-            des_key_schedule ks3, des_cblock ivec1, des_cblock ivec2, int enc)
+            des_key_schedule ks3, des_cblock *ivec1, des_cblock *ivec2,
+            int enc)
     {
     register DES_LONG tin0,tin1;
     register DES_LONG tout0,tout1,xor0,xor1,m0,m1;
@@ -81,8 +82,8 @@
     DES_LONG tin[2];
     unsigned char *iv1,*iv2;
 
-    iv1=ivec1;
-    iv2=ivec2;
+    iv1 = &(*ivec1)[0];
+    iv2 = &(*ivec2)[0];
 
     if (enc)
        {
@@ -125,11 +126,11 @@
            l2c(tout0,out);
            l2c(tout1,out);
            }
-       iv1=ivec1;
+       iv1=&(*ivec1)[0];
        l2c(m0,iv1);
        l2c(m1,iv1);
 
-       iv2=ivec2;
+       iv2=&(*ivec2)[0];
        l2c(tout0,iv2);
        l2c(tout1,iv2);
        }
@@ -182,11 +183,11 @@
            xor1=t1;
            }
 
-       iv1=ivec1;
+       iv1=&(*ivec1)[0];
        l2c(m0,iv1);
        l2c(m1,iv1);
 
-       iv2=ivec2;
+       iv2=&(*ivec2)[0];
        l2c(xor0,iv2);
        l2c(xor1,iv2);
        }
Index: crypto/des/enc_read.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/enc_read.c,v
retrieving revision 1.9
diff -u -r1.9 enc_read.c
--- enc_read.c  1999/05/13 11:37:00     1.9
+++ enc_read.c  1999/05/15 10:17:12
@@ -85,7 +85,7 @@
 
 
 int des_enc_read(int fd, void *buf, int len, des_key_schedule sched,
-                des_cblock iv)
+                des_cblock *iv)
        {
        /* data to be unencrypted */
        int net_num=0;
Index: crypto/des/enc_writ.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/enc_writ.c,v
retrieving revision 1.8
diff -u -r1.8 enc_writ.c
--- enc_writ.c  1999/04/23 15:00:23     1.8
+++ enc_writ.c  1999/05/15 10:17:24
@@ -77,7 +77,7 @@
  */
 
 int des_enc_write(int fd, const void *_buf, int len,
-                 des_key_schedule sched, des_cblock iv)
+                 des_key_schedule sched, des_cblock *iv)
        {
 #ifdef _LIBC
        extern int srandom();
Index: crypto/des/fcrypt.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/fcrypt.c,v
retrieving revision 1.5
diff -u -r1.5 fcrypt.c
--- fcrypt.c    1999/04/26 16:41:20     1.5
+++ fcrypt.c    1999/05/15 10:33:31
@@ -108,7 +108,7 @@
        for (; i<8; i++)
                key[i]=0;
 
-       des_set_key(key,ks);
+       des_set_key(&key,ks);
        fcrypt_body(&(out[0]),ks,Eswap0,Eswap1);
 
        ll=out[0]; l2c(ll,b);
Index: crypto/des/ofb64ede.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/ofb64ede.c,v
retrieving revision 1.3
diff -u -r1.3 ofb64ede.c
--- ofb64ede.c  1999/04/19 21:28:07     1.3
+++ ofb64ede.c  1999/05/15 10:40:14
@@ -64,7 +64,8 @@
  */
 void des_ede3_ofb64_encrypt(register const unsigned char *in,
             register unsigned char *out, long length, des_key_schedule k1,
-            des_key_schedule k2, des_key_schedule k3, des_cblock ivec, int *num)
+            des_key_schedule k2, des_key_schedule k3, des_cblock *ivec,
+            int *num)
        {
        register DES_LONG v0,v1;
        register int n= *num;
@@ -75,7 +76,7 @@
        unsigned char *iv;
        int save=0;
 
-       iv=ivec;
+       iv = &(*ivec)[0];
        c2l(iv,v0);
        c2l(iv,v1);
        ti[0]=v0;
@@ -105,7 +106,7 @@
                {
 /*             v0=ti[0];
                v1=ti[1];*/
-               iv=ivec;
+               iv = &(*ivec)[0];
                l2c(v0,iv);
                l2c(v1,iv);
                }
Index: crypto/des/ofb64enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/ofb64enc.c,v
retrieving revision 1.3
diff -u -r1.3 ofb64enc.c
--- ofb64enc.c  1999/04/19 21:28:07     1.3
+++ ofb64enc.c  1999/05/15 10:40:19
@@ -64,7 +64,7 @@
  */
 void des_ofb64_encrypt(register const unsigned char *in,
             register unsigned char *out, long length, des_key_schedule schedule,
-            des_cblock ivec, int *num)
+            des_cblock *ivec, int *num)
        {
        register DES_LONG v0,v1,t;
        register int n= *num;
@@ -75,7 +75,7 @@
        unsigned char *iv;
        int save=0;
 
-       iv=ivec;
+       iv = &(*ivec)[0];
        c2l(iv,v0);
        c2l(iv,v1);
        ti[0]=v0;
@@ -100,7 +100,7 @@
                {
                v0=ti[0];
                v1=ti[1];
-               iv=ivec;
+               iv = &(*ivec)[0];
                l2c(v0,iv);
                l2c(v1,iv);
                }
Index: crypto/des/ofb_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/ofb_enc.c,v
retrieving revision 1.3
diff -u -r1.3 ofb_enc.c
--- ofb_enc.c   1999/04/19 21:28:07     1.3
+++ ofb_enc.c   1999/05/15 10:40:24
@@ -65,7 +65,7 @@
  * byte.
  */
 void des_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
-            long length, des_key_schedule schedule, des_cblock ivec)
+            long length, des_key_schedule schedule, des_cblock *ivec)
        {
        register DES_LONG d0,d1,vv0,vv1,v0,v1,n=(numbits+7)/8;
        register DES_LONG mask0,mask1;
@@ -92,7 +92,7 @@
                mask1=0x00000000L;
                }
 
-       iv=ivec;
+       iv = &(*ivec)[0];
        c2l(iv,v0);
        c2l(iv,v1);
        ti[0]=v0;
@@ -126,7 +126,7 @@
                        v1=((v1>>num)|(vv0<<(32-num)))&0xffffffffL;
                        }
                }
-       iv=ivec;
+       iv = &(*ivec)[0];
        l2c(v0,iv);
        l2c(v1,iv);
        v0=v1=d0=d1=ti[0]=ti[1]=vv0=vv1=0;
Index: crypto/des/pcbc_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/pcbc_enc.c,v
retrieving revision 1.4
diff -u -r1.4 pcbc_enc.c
--- pcbc_enc.c  1999/04/19 21:28:07     1.4
+++ pcbc_enc.c  1999/05/15 10:40:26
@@ -59,7 +59,7 @@
 #include "des_locl.h"
 
 void des_pcbc_encrypt(const unsigned char *input, unsigned char *output,
-            long length, des_key_schedule schedule, des_cblock ivec, int enc)
+            long length, des_key_schedule schedule, des_cblock *ivec, int enc)
        {
        register DES_LONG sin0,sin1,xor0,xor1,tout0,tout1;
        DES_LONG tin[2];
@@ -68,7 +68,7 @@
 
        in=input;
        out=output;
-       iv=ivec;
+       iv = &(*ivec)[0];
 
        if (enc)
                {
Index: crypto/des/qud_cksm.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/qud_cksm.c,v
retrieving revision 1.5
diff -u -r1.5 qud_cksm.c
--- qud_cksm.c  1999/04/19 21:28:07     1.5
+++ qud_cksm.c  1999/05/15 10:14:31
@@ -73,8 +73,8 @@
 /* Got the value MIT uses via brute force :-) 2/10/90 eay */
 #define NOISE  ((DES_LONG)83653421L)
 
-DES_LONG des_quad_cksum(const unsigned char *input, des_cblocks output,
-            long length, int out_count, des_cblock seed)
+DES_LONG des_quad_cksum(const unsigned char *input, des_cblock output[],
+            long length, int out_count, des_cblock *seed)
        {
        DES_LONG z0,z1,t0,t1;
        int i;
@@ -83,10 +83,10 @@
        unsigned char *lp;
 
        if (out_count < 1) out_count=1;
-       lp=output;
+       lp = &(output[0])[0];
 
-       z0=Q_B0(seed[0])|Q_B1(seed[1])|Q_B2(seed[2])|Q_B3(seed[3]);
-       z1=Q_B0(seed[4])|Q_B1(seed[5])|Q_B2(seed[6])|Q_B3(seed[7]);
+       z0=Q_B0((*seed)[0])|Q_B1((*seed)[1])|Q_B2((*seed)[2])|Q_B3((*seed)[3]);
+       z1=Q_B0((*seed)[4])|Q_B1((*seed)[5])|Q_B2((*seed)[6])|Q_B3((*seed)[7]);
 
        for (i=0; ((i<4)&&(i<out_count)); i++)
                {
@@ -129,7 +129,7 @@
                                }
                        else
                                {
-                               lp=&output[(out_count-i-1)*8];
+                               lp = &(output[out_count-i-1])[0];
                                l2n(z1,lp);
                                l2n(z0,lp);
                                }
Index: crypto/des/rand_key.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/rand_key.c,v
retrieving revision 1.3
diff -u -r1.3 rand_key.c
--- rand_key.c  1999/04/19 21:28:07     1.3
+++ rand_key.c  1999/05/15 10:20:14
@@ -62,13 +62,13 @@
 static int seed=0;
 static des_cblock init;
 
-void des_random_seed(des_cblock key)
+void des_random_seed(des_cblock *key)
        {
-       memcpy(init,key,sizeof(des_cblock));
+       memcpy(&init,key,sizeof(des_cblock));
        seed=1;
        }
 
-void des_random_key(unsigned char *ret)
+void des_random_key(des_cblock *ret)
        {
        des_key_schedule ks;
        static DES_LONG c=0;
@@ -99,13 +99,13 @@
        t=(DES_LONG)((pid)|((c++)<<16));
        l2c(t,p);
 
-       des_set_odd_parity(data);
-       des_set_key(data,ks);
-       des_cbc_cksum(key,key,sizeof(key),ks,data);
+       des_set_odd_parity(&data);
+       des_set_key(&data,ks);
+       des_cbc_cksum(key,&key,sizeof(key),ks,&data);
 
-       des_set_odd_parity(key);
-       des_set_key(key,ks);
-       des_cbc_cksum(key,data,sizeof(key),ks,key);
+       des_set_odd_parity(&key);
+       des_set_key(&key,ks);
+       des_cbc_cksum(key,&data,sizeof(key),ks,&key);
 
        memcpy(ret,data,sizeof(key));
        memset(key,0,sizeof(key));
Index: crypto/des/read2pwd.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/read2pwd.c,v
retrieving revision 1.3
diff -u -r1.3 read2pwd.c
--- read2pwd.c  1999/04/19 21:28:07     1.3
+++ read2pwd.c  1999/05/15 10:26:08
@@ -58,7 +58,7 @@
 
 #include "des_locl.h"
 
-int des_read_password(des_cblock key, const char *prompt, int verify)
+int des_read_password(des_cblock *key, const char *prompt, int verify)
        {
        int ok;
        char buf[BUFSIZ],buff[BUFSIZ];
@@ -70,7 +70,7 @@
        return(ok);
        }
 
-int des_read_2passwords(des_cblock key1, des_cblock key2, const char *prompt,
+int des_read_2passwords(des_cblock *key1, des_cblock *key2, const char *prompt,
             int verify)
        {
        int ok;
Index: crypto/des/rpc_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/rpc_enc.c,v
retrieving revision 1.4
diff -u -r1.4 rpc_enc.c
--- rpc_enc.c   1999/04/26 16:41:20     1.4
+++ rpc_enc.c   1999/05/15 10:30:50
@@ -66,16 +66,17 @@
        des_key_schedule ks;
        int enc;
 
-       des_set_key(desp->des_key,ks);
+       des_set_key(&desp->des_key,ks);
        enc=(desp->des_dir == ENCRYPT)?DES_ENCRYPT:DES_DECRYPT;
 
        if (desp->des_mode == CBC)
-               des_ecb_encrypt(desp->UDES.UDES_buf,desp->UDES.UDES_buf,ks,
+               des_ecb_encrypt((const_des_cblock *)desp->UDES.UDES_buf,
+                               (des_cblock *)desp->UDES.UDES_buf,ks,
                                enc);
        else
                {
                des_ncbc_encrypt(desp->UDES.UDES_buf,desp->UDES.UDES_buf,
-                               len,ks,desp->des_ivec,enc);
+                               len,ks,&desp->des_ivec,enc);
 #ifdef undef
                /* len will always be %8 if called from common_crypt
                 * in secure_rpc.
Index: crypto/des/set_key.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/set_key.c,v
retrieving revision 1.6
diff -u -r1.6 set_key.c
--- set_key.c   1999/05/13 11:37:00     1.6
+++ set_key.c   1999/05/15 10:48:14
@@ -67,24 +67,24 @@
 #include "podd.h"
 #include "sk.h"
 
-static int check_parity(const des_cblock key);
+static int check_parity(const_des_cblock *key);
 GLOBAL int des_check_key=0;
 
-void des_set_odd_parity(des_cblock key)
+void des_set_odd_parity(des_cblock *key)
        {
        int i;
 
        for (i=0; i<DES_KEY_SZ; i++)
-               key[i]=odd_parity[key[i]];
+               (*key)[i]=odd_parity[(*key)[i]];
        }
 
-static int check_parity(const des_cblock key)
+static int check_parity(const_des_cblock *key)
        {
        int i;
 
        for (i=0; i<DES_KEY_SZ; i++)
                {
-               if (key[i] != odd_parity[key[i]])
+               if ((*key)[i] != odd_parity[(*key)[i]])
                        return(0);
                }
        return(1);
@@ -120,7 +120,7 @@
        {0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE},
        {0xFE,0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1}};
 
-int des_is_weak_key(const des_cblock key)
+int des_is_weak_key(const_des_cblock *key)
        {
        int i;
 
@@ -149,7 +149,7 @@
  * return -1 if key parity error,
  * return -2 if illegal weak key.
  */
-int des_set_key(const des_cblock key, des_key_schedule schedule)
+int des_set_key(const_des_cblock *key, des_key_schedule schedule)
        {
        static int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
        register DES_LONG c,d,t,s,t2;
@@ -167,7 +167,7 @@
                }
 
        k=(DES_LONG *)schedule;
-       in=key;
+       in = &(*key)[0];
 
        c2l(in,c);
        c2l(in,d);
@@ -228,7 +228,7 @@
        return(0);
        }
 
-int des_key_sched(const des_cblock key, des_key_schedule schedule)
+int des_key_sched(const_des_cblock *key, des_key_schedule schedule)
        {
        return(des_set_key(key,schedule));
        }
Index: crypto/des/str2key.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/str2key.c,v
retrieving revision 1.5
diff -u -r1.5 str2key.c
--- str2key.c   1999/05/13 11:37:01     1.5
+++ str2key.c   1999/05/15 10:31:22
@@ -60,7 +60,7 @@
 
 EXTERN int des_check_key;
 
-void des_string_to_key(const char *str, des_cblock key)
+void des_string_to_key(const char *str, des_cblock *key)
        {
        des_key_schedule ks;
        int i,length;
@@ -70,20 +70,20 @@
        length=strlen(str);
 #ifdef OLD_STR_TO_KEY
        for (i=0; i<length; i++)
-               key[i%8]^=(str[i]<<1);
+               (*key)[i%8]^=(str[i]<<1);
 #else /* MIT COMPATIBLE */
        for (i=0; i<length; i++)
                {
                j=str[i];
                if ((i%16) < 8)
-                       key[i%8]^=(j<<1);
+                       (*key)[i%8]^=(j<<1);
                else
                        {
                        /* Reverse the bit order 05/05/92 eay */
                        j=((j<<4)&0xf0)|((j>>4)&0x0f);
                        j=((j<<2)&0xcc)|((j>>2)&0x33);
                        j=((j<<1)&0xaa)|((j>>1)&0x55);
-                       key[7-(i%8)]^=j;
+                       (*key)[7-(i%8)]^=j;
                        }
                }
 #endif
@@ -97,7 +97,7 @@
        des_set_odd_parity(key);
        }
 
-void des_string_to_2keys(const char *str, des_cblock key1, des_cblock key2)
+void des_string_to_2keys(const char *str, des_cblock *key1, des_cblock *key2)
        {
        des_key_schedule ks;
        int i,length;
@@ -111,7 +111,7 @@
                {
                for (i=0; i<length; i++)
                        {
-                       key2[i]=key1[i]=(str[i]<<1);
+                       (*key2)[i]=(*key1)[i]=(str[i]<<1);
                        }
                }
        else
@@ -119,9 +119,9 @@
                for (i=0; i<length; i++)
                        {
                        if ((i/8)&1)
-                               key2[i%8]^=(str[i]<<1);
+                               (*key2)[i%8]^=(str[i]<<1);
                        else
-                               key1[i%8]^=(str[i]<<1);
+                               (*key1)[i%8]^=(str[i]<<1);
                        }
                }
 #else /* MIT COMPATIBLE */
@@ -131,9 +131,9 @@
                if ((i%32) < 16)
                        {
                        if ((i%16) < 8)
-                               key1[i%8]^=(j<<1);
+                               (*key1)[i%8]^=(j<<1);
                        else
-                               key2[i%8]^=(j<<1);
+                               (*key2)[i%8]^=(j<<1);
                        }
                else
                        {
@@ -141,9 +141,9 @@
                        j=((j<<2)&0xcc)|((j>>2)&0x33);
                        j=((j<<1)&0xaa)|((j>>1)&0x55);
                        if ((i%16) < 8)
-                               key1[7-(i%8)]^=j;
+                               (*key1)[7-(i%8)]^=j;
                        else
-                               key2[7-(i%8)]^=j;
+                               (*key2)[7-(i%8)]^=j;
                        }
                }
        if (length <= 8) memcpy(key2,key1,8);
Index: crypto/des/supp.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/supp.c,v
retrieving revision 1.4
diff -u -r1.4 supp.c
--- supp.c      1999/04/19 21:28:07     1.4
+++ supp.c      1999/05/15 10:31:49
@@ -93,7 +93,7 @@
 #include <stdio.h>
 #include "des_locl.h"
 
-void des_cblock_print_file(const des_cblock cb, FILE *fp)
+void des_cblock_print_file(const_des_cblock *cb, FILE *fp)
 {
        int i;
        const unsigned int *p = (const unsigned int *)cb;
Index: crypto/des/xcbc_enc.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/des/xcbc_enc.c,v
retrieving revision 1.3
diff -u -r1.3 xcbc_enc.c
--- xcbc_enc.c  1999/04/19 21:28:07     1.3
+++ xcbc_enc.c  1999/05/15 10:21:02
@@ -79,11 +79,14 @@
 0xA7,0x1C,0xC9,0x09,0x69,0x9A,0x83,0xCF,0x29,0x39,0xB9,0xE9,0x4C,0xFF,0x43,0xAB,
        };
 
-void des_xwhite_in2out(const des_cblock key, const des_cblock in,
-            des_cblock out)
+void des_xwhite_in2out(const_des_cblock *des_key, const_des_cblock *in_white,
+            des_cblock *out_white)
        {
        int out0,out1;
        int i;
+       const unsigned char *key = &(*des_key)[0];
+       const unsigned char *in = &(*in_white)[0];
+       unsigned char *out = &(*out_white)[0];
 
        out[0]=out[1]=out[2]=out[3]=out[4]=out[5]=out[6]=out[7]=0;
        out0=out1=0;
@@ -104,9 +107,9 @@
                }
        }
 
-void des_xcbc_encrypt(const unsigned char *in, unsigned char *out, long length,
-            des_key_schedule schedule, des_cblock ivec, const des_cblock inw,
-            const des_cblock outw, int enc)
+void des_xcbc_encrypt(const unsigned char *in, unsigned char *out,
+           long length, des_key_schedule schedule, des_cblock *ivec,
+           const_des_cblock *inw, const_des_cblock *outw, int enc)
        {
        register DES_LONG tin0,tin1;
        register DES_LONG tout0,tout1,xor0,xor1;
@@ -116,14 +119,14 @@
        DES_LONG tin[2];
        unsigned char *iv;
 
-       in2=inw;
+       in2 = &(*inw)[0];
        c2l(in2,inW0);
        c2l(in2,inW1);
-       in2=outw;
+       in2 = &(*outw)[0];
        c2l(in2,outW0);
        c2l(in2,outW1);
 
-       iv=ivec;
+       iv = &(*ivec)[0];
 
        if (enc)
                {
@@ -148,7 +151,7 @@
                        tout0=tin[0]^outW0; l2c(tout0,out);
                        tout1=tin[1]^outW1; l2c(tout1,out);
                        }
-               iv=ivec;
+               iv = &(*ivec)[0];
                l2c(tout0,iv);
                l2c(tout1,iv);
                }
@@ -180,7 +183,7 @@
                        xor1=tin1;
                        }
 
-               iv=ivec;
+               iv = &(*ivec)[0];
                l2c(xor0,iv);
                l2c(xor1,iv);
                }
Index: crypto/evp/e_cbc_3d.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/evp/e_cbc_3d.c,v
retrieving revision 1.7
diff -u -r1.7 e_cbc_3d.c
--- e_cbc_3d.c  1999/05/12 23:11:07     1.7
+++ e_cbc_3d.c  1999/05/15 10:22:07
@@ -107,14 +107,16 @@
 static void des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
 
-       if (key != NULL)
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.des_ede.ks1);
-               des_set_key(&(key[8]),ctx->c.des_ede.ks2);
+               des_set_key(&deskey[0],ctx->c.des_ede.ks1);
+               des_set_key(&deskey[1],ctx->c.des_ede.ks2);
                memcpy( (char *)ctx->c.des_ede.ks3,
                        (char *)ctx->c.des_ede.ks1,
                        sizeof(ctx->c.des_ede.ks1));
@@ -124,15 +126,17 @@
 static void des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
 
-       if (key != NULL)
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.des_ede.ks1);
-               des_set_key(&(key[8]),ctx->c.des_ede.ks2);
-               des_set_key(&(key[16]),ctx->c.des_ede.ks3);
+               des_set_key(&deskey[0],ctx->c.des_ede.ks1);
+               des_set_key(&deskey[1],ctx->c.des_ede.ks2);
+               des_set_key(&deskey[2],ctx->c.des_ede.ks3);
                }
        }
 
@@ -141,7 +145,7 @@
        {
        des_ede3_cbc_encrypt(in,out,inl, ctx->c.des_ede.ks1,
                ctx->c.des_ede.ks2,ctx->c.des_ede.ks3,
-               &(ctx->iv[0]),
+               (des_cblock *) &(ctx->iv[0]),
                ctx->encrypt);
        }
 #endif
Index: crypto/evp/e_cbc_d.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/evp/e_cbc_d.c,v
retrieving revision 1.7
diff -u -r1.7 e_cbc_d.c
--- e_cbc_d.c   1999/05/12 23:11:07     1.7
+++ e_cbc_d.c   1999/05/15 10:45:08
@@ -87,16 +87,20 @@
 static void des_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
-       if (key != NULL)
-               des_set_key(key,ctx->c.des_ks);
+       if (deskey != NULL)
+               des_set_key(deskey,ctx->c.des_ks);
        }
 
 static void des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
             unsigned char *in, unsigned int inl)
        {
-       des_ncbc_encrypt(in,out,inl,ctx->c.des_ks,&(ctx->iv[0]),ctx->encrypt);
+       des_ncbc_encrypt(in,out,inl,ctx->c.des_ks,
+               (des_cblock *)&(ctx->iv[0]),
+               ctx->encrypt);
        }
 #endif
Index: crypto/evp/e_cfb_3d.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/evp/e_cfb_3d.c,v
retrieving revision 1.6
diff -u -r1.6 e_cfb_3d.c
--- e_cfb_3d.c  1999/04/27 04:18:08     1.6
+++ e_cfb_3d.c  1999/05/15 10:57:43
@@ -107,15 +107,17 @@
 static void des_ede_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        ctx->num=0;
 
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
-       if (key != NULL)
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.des_ede.ks1);
-               des_set_key(&(key[8]),ctx->c.des_ede.ks2);
+               des_set_key(&deskey[0],ctx->c.des_ede.ks1);
+               des_set_key(&deskey[1],ctx->c.des_ede.ks2);
                memcpy( (char *)ctx->c.des_ede.ks3,
                        (char *)ctx->c.des_ede.ks1,
                        sizeof(ctx->c.des_ede.ks1));
@@ -125,16 +127,18 @@
 static void des_ede3_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        ctx->num=0;
 
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
-       if (key != NULL)
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.des_ede.ks1);
-               des_set_key(&(key[8]),ctx->c.des_ede.ks2);
-               des_set_key(&(key[16]),ctx->c.des_ede.ks3);
+               des_set_key(&deskey[0],ctx->c.des_ede.ks1);
+               des_set_key(&deskey[1],ctx->c.des_ede.ks2);
+               des_set_key(&deskey[2],ctx->c.des_ede.ks3);
                }
        }
 
@@ -145,6 +149,7 @@
                               ctx->c.des_ede.ks1,
                               ctx->c.des_ede.ks2,
                               ctx->c.des_ede.ks3,
-                              &(ctx->iv[0]),&ctx->num,ctx->encrypt);
+                              (des_cblock*)&(ctx->iv[0]),
+                              &ctx->num,ctx->encrypt);
        }
 #endif
Index: crypto/evp/e_cfb_d.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/evp/e_cfb_d.c,v
retrieving revision 1.6
diff -u -r1.6 e_cfb_d.c
--- e_cfb_d.c   1999/04/27 04:18:08     1.6
+++ e_cfb_d.c   1999/05/15 10:46:15
@@ -87,13 +87,15 @@
 static void des_cfb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        ctx->num=0;
 
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
-       if (key != NULL)
-               des_set_key(key,ctx->c.des_ks);
+       if (deskey != NULL)
+               des_set_key(deskey,ctx->c.des_ks);
        }
 
 static void des_cfb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
@@ -102,7 +104,7 @@
        des_cfb64_encrypt(
                in,out,
                (long)inl, ctx->c.des_ks,
-               &(ctx->iv[0]),
+               (des_cblock *)&(ctx->iv[0]),
                &ctx->num,ctx->encrypt);
        }
 #endif
Index: crypto/evp/e_ecb_3d.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/evp/e_ecb_3d.c,v
retrieving revision 1.6
diff -u -r1.6 e_ecb_3d.c
--- e_ecb_3d.c  1999/04/27 04:18:09     1.6
+++ e_ecb_3d.c  1999/05/15 11:02:05
@@ -106,10 +106,12 @@
 static void des_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
-       if (key != NULL)
+       des_cblock *deskey = (des_cblock *)key;
+
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.des_ede.ks1);
-               des_set_key(&(key[8]),ctx->c.des_ede.ks2);
+               des_set_key(&deskey[0],ctx->c.des_ede.ks1);
+               des_set_key(&deskey[1],ctx->c.des_ede.ks2);
                memcpy( (char *)ctx->c.des_ede.ks3,
                        (char *)ctx->c.des_ede.ks1,
                        sizeof(ctx->c.des_ede.ks1));
@@ -119,11 +121,13 @@
 static void des_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
-       if (key != NULL)
+       des_cblock *deskey = (des_cblock *)key;
+
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.des_ede.ks1);
-               des_set_key(&(key[8]),ctx->c.des_ede.ks2);
-               des_set_key(&(key[16]),ctx->c.des_ede.ks3);
+               des_set_key(&deskey[0],ctx->c.des_ede.ks1);
+               des_set_key(&deskey[1],ctx->c.des_ede.ks2);
+               des_set_key(&deskey[2],ctx->c.des_ede.ks3);
                }
        }
 
@@ -131,16 +135,24 @@
             unsigned char *in, unsigned int inl)
        {
        unsigned int i;
+       des_cblock *output   /* = (des_cblock *)out */;
+       des_cblock *input    /* = (des_cblock *)in */;
 
        if (inl < 8) return;
        inl-=8;
        for (i=0; i<=inl; i+=8)
                {
-               des_ecb3_encrypt(&(in[i]),&(out[i]),
+               output = (des_cblock *)(out + i);
+               input = (des_cblock *)(in + i);
+
+               des_ecb3_encrypt(input,output,
                        ctx->c.des_ede.ks1,
                        ctx->c.des_ede.ks2,
                        ctx->c.des_ede.ks3,
                        ctx->encrypt);
+
+               /* output++; */
+               /* input++; */
                }
        }
 #endif
Index: crypto/evp/e_ecb_d.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/evp/e_ecb_d.c,v
retrieving revision 1.6
diff -u -r1.6 e_ecb_d.c
--- e_ecb_d.c   1999/04/27 04:18:09     1.6
+++ e_ecb_d.c   1999/05/15 11:05:21
@@ -87,20 +87,32 @@
 static void des_ecb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
-       if (key != NULL)
-               des_set_key(key,ctx->c.des_ks);
+       des_cblock *deskey = (des_cblock *)key;
+
+       if (deskey != NULL)
+               des_set_key(deskey,ctx->c.des_ks);
        }
 
 static void des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
             unsigned char *in, unsigned int inl)
        {
        unsigned int i;
+       des_cblock *output  /* = (des_cblock *)out */;
+       des_cblock *input   /* = (des_cblock *)in */; 
 
        if (inl < 8) return;
        inl-=8;
        for (i=0; i<=inl; i+=8)
                {
-               des_ecb_encrypt(&(in[i]),&(out[i]),ctx->c.des_ks,ctx->encrypt);
+               /* Either this ... */
+               output = (des_cblock *)(out + i);
+               input = (des_cblock *)(in + i);
+
+               des_ecb_encrypt(input,output,ctx->c.des_ks,ctx->encrypt);
+
+               /* ... or this. */
+               /* output++; */
+               /* input++; */
                }
        }
 #endif
Index: crypto/evp/e_ofb_3d.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/evp/e_ofb_3d.c,v
retrieving revision 1.6
diff -u -r1.6 e_ofb_3d.c
--- e_ofb_3d.c  1999/04/27 04:18:09     1.6
+++ e_ofb_3d.c  1999/05/15 10:00:44
@@ -107,15 +107,17 @@
 static void des_ede_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        ctx->num=0;
 
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
-       if (key != NULL)
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.des_ede.ks1);
-               des_set_key(&(key[8]),ctx->c.des_ede.ks2);
+               des_set_key(&deskey[0],ctx->c.des_ede.ks1);
+               des_set_key(&deskey[1],ctx->c.des_ede.ks2);
                memcpy( (char *)ctx->c.des_ede.ks3,
                        (char *)ctx->c.des_ede.ks1,
                        sizeof(ctx->c.des_ede.ks1));
@@ -125,16 +127,18 @@
 static void des_ede3_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        ctx->num=0;
 
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
-       if (key != NULL)
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.des_ede.ks1);
-               des_set_key(&(key[8]),ctx->c.des_ede.ks2);
-               des_set_key(&(key[16]),ctx->c.des_ede.ks3);
+               des_set_key(&deskey[0],ctx->c.des_ede.ks1);
+               des_set_key(&deskey[1],ctx->c.des_ede.ks2);
+               des_set_key(&deskey[2],ctx->c.des_ede.ks3);
                }
        }
 
@@ -143,6 +147,6 @@
        {
        des_ede3_ofb64_encrypt(in,out,inl,ctx->c.des_ede.ks1,
                               ctx->c.des_ede.ks2, ctx->c.des_ede.ks3,
-                              &(ctx->iv[0]),&ctx->num);
+                              (des_cblock *)&(ctx->iv[0]),&ctx->num);
        }
 #endif
Index: crypto/evp/e_ofb_d.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/evp/e_ofb_d.c,v
retrieving revision 1.6
diff -u -r1.6 e_ofb_d.c
--- e_ofb_d.c   1999/04/27 04:18:09     1.6
+++ e_ofb_d.c   1999/05/15 10:37:05
@@ -87,18 +87,21 @@
 static void des_ofb_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        ctx->num=0;
 
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
-       if (key != NULL)
-               des_set_key(key,ctx->c.des_ks);
+       if (deskey != NULL)
+               des_set_key(deskey,ctx->c.des_ks);
        }
 
 static void des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
             unsigned char *in, unsigned int inl)
        {
-       des_ofb64_encrypt(in,out,inl,ctx->c.des_ks,&(ctx->iv[0]),&ctx->num);
+       des_ofb64_encrypt(in,out,inl,ctx->c.des_ks,
+               (des_cblock *)&(ctx->iv[0]),&ctx->num);
        }
 #endif
Index: crypto/evp/e_xcbc_d.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/evp/e_xcbc_d.c,v
retrieving revision 1.6
diff -u -r1.6 e_xcbc_d.c
--- e_xcbc_d.c  1999/04/27 04:18:09     1.6
+++ e_xcbc_d.c  1999/05/15 10:03:35
@@ -87,12 +87,14 @@
 static void desx_cbc_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
             unsigned char *iv, int enc)
        {
+       des_cblock *deskey = (des_cblock *)key;
+
        if (iv != NULL)
                memcpy(&(ctx->oiv[0]),iv,8);
        memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8);
-       if (key != NULL)
+       if (deskey != NULL)
                {
-               des_set_key(key,ctx->c.desx_cbc.ks);
+               des_set_key(deskey,ctx->c.desx_cbc.ks);
                memcpy(&(ctx->c.desx_cbc.inw[0]),&(key[8]),8);
                memcpy(&(ctx->c.desx_cbc.outw[0]),&(key[16]),8);
                }
@@ -102,9 +104,9 @@
             unsigned char *in, unsigned int inl)
        {
        des_xcbc_encrypt(in,out,inl,ctx->c.desx_cbc.ks,
-               &(ctx->iv[0]),
-               &(ctx->c.desx_cbc.inw[0]),
-               &(ctx->c.desx_cbc.outw[0]),
+               (des_cblock *)&(ctx->iv[0]),
+               &ctx->c.desx_cbc.inw,
+               &ctx->c.desx_cbc.outw,
                ctx->encrypt);
        }
 #endif
Index: crypto/mdc2/mdc2dgst.c
===================================================================
RCS file: /usr/local/openssl/cvs/openssl/crypto/mdc2/mdc2dgst.c,v
retrieving revision 1.6
diff -u -r1.6 mdc2dgst.c
--- mdc2dgst.c  1999/04/26 16:42:04     1.6
+++ mdc2dgst.c  1999/05/15 10:55:20
@@ -134,12 +134,12 @@
                c->h[0]=(c->h[0]&0x9f)|0x40;
                c->hh[0]=(c->hh[0]&0x9f)|0x20;
 
-               des_set_odd_parity(c->h);
-               des_set_key(c->h,k);
+               des_set_odd_parity(&c->h);
+               des_set_key(&c->h,k);
                des_encrypt(d,k,1);
 
-               des_set_odd_parity(c->hh);
-               des_set_key(c->hh,k);
+               des_set_odd_parity(&c->hh);
+               des_set_key(&c->hh,k);
                des_encrypt(dd,k,1);
 
                ttin0=tin0^dd[0];
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to