Fix strange formatting by indent
[openssl.git] / crypto / des / cbc_cksm.c
index aeb0a79df9956977635fc142a9f4ddbd678d5909..09a7ba56aadad3f8e7c24b77b5903dfde032f5f8 100644 (file)
 
 #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);
@@ -79,7 +82,7 @@ DES_LONG des_cbc_cksum(const unsigned char *in, des_cblock out, long length,
                        
                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];
@@ -90,5 +93,14 @@ DES_LONG des_cbc_cksum(const unsigned char *in, des_cblock out, long length,
                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);
        }