crypt-take-voids-20041005
[openafs.git] / src / des / cbc_encrypt.c
index e6bbe41..a2c8a52 100644 (file)
  */
 
 #include <mit-cpyright.h>
+#include <afsconfig.h>
+#include <afs/param.h>
+
+#ifndef KERNEL
 #include <stdio.h>
+#endif
+
 #include <des.h>
-#include <afs/param.h>
+#include "des_prototypes.h"
 
-#define XPRT_CBC_ENCRYPT
+RCSID
+    ("$Header$");
 
-extern int des_debug;
-extern int des_debug_print();
+
+#define XPRT_CBC_ENCRYPT
 
 /*
  * This routine performs DES cipher-block-chaining operation, either
@@ -45,33 +52,34 @@ extern int des_debug_print();
  * of 8 bytes, but only the first "length" bytes returned into the
  * cleartext.
  */
-
+/*
+    des_cblock *in;            * >= length bytes of input text *
+    des_cblock *out;           * >= length bytes of output text *
+    register afs_int32 length; * in bytes *
+    int encrypt;               * 0 ==> decrypt, else encrypt *
+    des_key_schedule key;              * precomputed key schedule *
+    des_cblock *iv;            * 8 bytes of ivec *
+*/
 afs_int32
-des_cbc_encrypt(in,out,length,key,iv,encrypt)
-    des_cblock *in;            /* >= length bytes of input text */
-    des_cblock *out;           /* >= length bytes of output text */
-    register afs_int32 length; /* in bytes */
-    int encrypt;               /* 0 ==> decrypt, else encrypt */
-    des_key_schedule key;              /* precomputed key schedule */
-    des_cblock *iv;            /* 8 bytes of ivec */
+des_cbc_encrypt(void * in, void * out, register afs_int32 length,
+               des_key_schedule key, des_cblock * iv, int encrypt)
 {
     register afs_uint32 *input = (afs_uint32 *) in;
     register afs_uint32 *output = (afs_uint32 *) out;
     register afs_uint32 *ivec = (afs_uint32 *) iv;
 
-    afs_uint32 i,j;
+    afs_uint32 i, j;
     afs_uint32 t_input[2];
     afs_uint32 t_output[2];
-    unsigned char *t_in_p = (unsigned char *) t_input;
+    unsigned char *t_in_p = (unsigned char *)t_input;
     afs_uint32 xor_0, xor_1;
 
     if (encrypt) {
 #ifdef MUSTALIGN
        if ((afs_int32) ivec & 3) {
-           bcopy((char *)ivec++, (char *)&t_output[0], sizeof(t_output[0]));
-           bcopy((char *)ivec, (char *)&t_output[1], sizeof(t_output[1]));
-       }
-       else
+           memcpy((char *)&t_output[0], (char *)ivec++, sizeof(t_output[0]));
+           memcpy((char *)&t_output[1], (char *)ivec, sizeof(t_output[1]));
+       } else
 #endif
        {
            t_output[0] = *ivec++;
@@ -82,10 +90,11 @@ des_cbc_encrypt(in,out,length,key,iv,encrypt)
            /* get input */
 #ifdef MUSTALIGN
            if ((afs_int32) input & 3) {
-               bcopy((char *)input++,(char *)&t_input[0],sizeof(t_input[0]));
-               bcopy((char *)input++,(char *)&t_input[1],sizeof(t_input[1]));
-           }
-           else
+               memcpy((char *)&t_input[0], (char *)input++,
+                      sizeof(t_input[0]));
+               memcpy((char *)&t_input[1], (char *)input++,
+                      sizeof(t_input[1]));
+           } else
 #endif
            {
                t_input[0] = *input++;
@@ -95,26 +104,25 @@ des_cbc_encrypt(in,out,length,key,iv,encrypt)
            /* zero pad */
            if (length < 8)
                for (j = length; j <= 7; j++)
-                   *(t_in_p+j)= 0;
+                   *(t_in_p + j) = 0;
 
 #ifdef DEBUG
            if (des_debug)
-               des_debug_print("clear",length,t_input[0],t_input[1]);
+               des_debug_print("clear", length, t_input[0], t_input[1]);
 #endif
            /* do the xor for cbc into the temp */
            t_input[0] ^= t_output[0];
            t_input[1] ^= t_output[1];
            /* encrypt */
-           (void) des_ecb_encrypt(t_input,t_output,key,encrypt);
+           (void)des_ecb_encrypt(t_input, t_output, key, encrypt);
            /* copy temp output and save it for cbc */
 #ifdef MUSTALIGN
            if ((afs_int32) output & 3) {
-               bcopy((char *)&t_output[0],(char *)output++,
-                     sizeof(t_output[0]));
-               bcopy((char *)&t_output[1],(char *)output++,
-                     sizeof(t_output[1]));
-           }
-           else
+               memcpy((char *)output++, (char *)&t_output[0],
+                      sizeof(t_output[0]));
+               memcpy((char *)output++, (char *)&t_output[1],
+                      sizeof(t_output[1]));
+           } else
 #endif
            {
                *output++ = t_output[0];
@@ -123,8 +131,8 @@ des_cbc_encrypt(in,out,length,key,iv,encrypt)
 
 #ifdef DEBUG
            if (des_debug) {
-               des_debug_print("xor'ed",i,t_input[0],t_input[1]);
-               des_debug_print("cipher",i,t_output[0],t_output[1]);
+               des_debug_print("xor'ed", i, t_input[0], t_input[1]);
+               des_debug_print("cipher", i, t_output[0], t_output[1]);
            }
 #endif
        }
@@ -135,10 +143,9 @@ des_cbc_encrypt(in,out,length,key,iv,encrypt)
        /* decrypt */
 #ifdef MUSTALIGN
        if ((afs_int32) ivec & 3) {
-           bcopy((char *)ivec++,(char *)&xor_0,sizeof(xor_0));
-           bcopy((char *)ivec,(char *)&xor_1,sizeof(xor_1));
-       }
-       else
+           memcpy((char *)&xor_0, (char *)ivec++, sizeof(xor_0));
+           memcpy((char *)&xor_1, (char *)ivec, sizeof(xor_1));
+       } else
 #endif
        {
            xor_0 = *ivec++;
@@ -149,10 +156,11 @@ des_cbc_encrypt(in,out,length,key,iv,encrypt)
            /* get input */
 #ifdef MUSTALIGN
            if ((afs_int32) input & 3) {
-               bcopy((char *)input++,(char *)&t_input[0],sizeof(t_input[0]));
-               bcopy((char *)input++,(char *)&t_input[1],sizeof(t_input[0]));
-           }
-           else
+               memcpy((char *)&t_input[0], (char *)input++,
+                      sizeof(t_input[0]));
+               memcpy((char *)&t_input[1], (char *)input++,
+                      sizeof(t_input[0]));
+           } else
 #endif
            {
                t_input[0] = *input++;
@@ -162,17 +170,17 @@ des_cbc_encrypt(in,out,length,key,iv,encrypt)
            /* no padding for decrypt */
 #ifdef DEBUG
            if (des_debug)
-               des_debug_print("cipher",i,t_input[0],t_input[1]);
+               des_debug_print("cipher", i, t_input[0], t_input[1]);
 #else
 #ifdef lint
            i = i;
 #endif
 #endif
            /* encrypt */
-           (void) des_ecb_encrypt(t_input,t_output,key,encrypt);
+           (void)des_ecb_encrypt(t_input, t_output, key, encrypt);
 #ifdef DEBUG
            if (des_debug)
-               des_debug_print("out pre xor",i,t_output[0],t_output[1]);
+               des_debug_print("out pre xor", i, t_output[0], t_output[1]);
 #endif
            /* do the xor for cbc into the output */
            t_output[0] ^= xor_0;
@@ -180,12 +188,11 @@ des_cbc_encrypt(in,out,length,key,iv,encrypt)
            /* copy temp output */
 #ifdef MUSTALIGN
            if ((afs_int32) output & 3) {
-               bcopy((char *)&t_output[0],(char *)output++,
-                     sizeof(t_output[0]));
-               bcopy((char *)&t_output[1],(char *)output++,
-                     sizeof(t_output[1]));
-           }
-           else
+               memcpy((char *)output++, (char *)&t_output[0],
+                      sizeof(t_output[0]));
+               memcpy((char *)output++, (char *)&t_output[1],
+                      sizeof(t_output[1]));
+           } else
 #endif
            {
                *output++ = t_output[0];
@@ -197,7 +204,7 @@ des_cbc_encrypt(in,out,length,key,iv,encrypt)
            xor_1 = t_input[1];
 #ifdef DEBUG
            if (des_debug)
-               des_debug_print("clear",i,t_output[0],t_output[1]);
+               des_debug_print("clear", i, t_output[0], t_output[1]);
 #endif
        }
        return 0;