
#include "lclient.h"

#if CRYPT_TYPE == DES_CRYPT

#include <stdio.h>
#include <des.h>

void lclient_des_crypt(unsigned char *key, unsigned char *data,
		       unsigned int length, int encrypt)
{
  des_key_schedule sched;
  int i;

#ifdef DEBUG
  printf("des_crypt({%x, %x}, %x, %d, %d)\n", ((int *)key)[0], ((int *)key)[1],
	 data, length, encrypt);
#endif

  des_fixup_key_parity(key);
  if (des_key_sched(key, sched) != 0)
    {
      fputs("invalid DES key\n", stderr);
      exit(2); /* ??? */
    }
  for (i = 0; i < length; i += 8)
    des_ecb_encrypt(data + i, data + i, sched, encrypt);
#if DEBUG > 1
  printf("data %x %x %x %x\n", ((int *)data)[0], ((int *)data)[1],
	 ((int *)data)[2], ((int *)data)[3]);
#endif
  return;
}

#endif
