typo
[openssl.git] / crypto / des / cbc_cksm.c
index b7048c8a3f693a060906301915453a3e2f7946b6..09a7ba56aadad3f8e7c24b77b5903dfde032f5f8 100644 (file)
 
 #include "des_locl.h"
 
-DES_LONG des_cbc_cksum(in, out, length, schedule, iv)
-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);
@@ -83,7 +82,7 @@ const des_cblock iv;
                        
                tin0^=tout0; tin[0]=tin0;
                tin1^=tout1; tin[1]=tin1;
-               des_encrypt((DES_LONG *)tin,schedule,DES_ENCRYPT);
+               DES_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT);
                /* fix 15/10/91 eay - thanks to keithr@sco.COM */
                tout0=tin[0];
                tout1=tin[1];
@@ -94,5 +93,14 @@ const des_cblock iv;
                l2c(tout1,out);
                }
        tout0=tin0=tin1=tin[0]=tin[1]=0;
+       /*
+         Transform the data in tout1 so that it will
+         match the return value that the MIT Kerberos
+         mit_des_cbc_cksum API returns.
+       */
+       tout1 = ((tout1 >> 24L) & 0x000000FF)
+             | ((tout1 >> 8L)  & 0x0000FF00)
+             | ((tout1 << 8L)  & 0x00FF0000)
+             | ((tout1 << 24L) & 0xFF000000);
        return(tout1);
        }