
#include "lclient.h"

#include <stdio.h>
#ifdef _AIX
#define _POSIX_SOURCE
#include <fcntl.h>
#else
#include <sys/file.h>
#endif


main(int argc, char *argv[])
{
  int fd_in, fd_out;
  unsigned char key[KEY_SIZE];

  if (argc < 5)
    {
    usage:
      fputs("usage: encrypt input-program output-program [-keyfile key-file] [-key a b c d]\n", stderr);
      return 1;
    }
  if (! strcmp(argv[3], "-keyfile"))
    {
      if (argc != 5)
	goto usage;
      if (read_key_file("encrypt", argv[4], key, sizeof key))
	return 2;
    }
  else if (! strcmp(argv[3], "-key"))
    {
#if CRYPT_TYPE == DES_CRYPT
      if (argc != 6 || lclient_parse_key_64(key, argv[4], argv[5]))
	goto usage;
#endif
#if CRYPT_TYPE == MD5_CRYPT
      if (argc != 8 || lclient_parse_key_128(key, argv[4], argv[5], argv[6], argv[7]))
	goto usage;
#endif
    }
  else
    {
      goto usage;
    }

  fd_in = open(argv[1], O_RDONLY);
  if (fd_in == -1)
    {
      perror("encrypt: unable to open input file");
      return 3;
    }
  fd_out = open(argv[2], O_WRONLY | O_CREAT, 0666);
  if (fd_out == -1)
    {
      perror("encrypt: unable to open output file");
      return 4;
    }
  return copy_crypt_file("encrypt", fd_in, fd_out, key, 1);
}
