#!perl
push(@INC,'/afs/athena.mit.edu/user/e/eichin/perl');
require 'des.perl';

$type = $ARGV[0];

if ($#ARGV == 2) {
    $key = &string2key($ARGV[1]);
    $ivec = &string2key($ARGV[2]);
} else {
    open(TTYI,"</dev/tty");
    open(TTYO,">/dev/tty");
    select((select(TTYO), $| = 1)[0]);
    print TTYO "key: ";
    $keytxt = <TTYI>; chop $keytxt;
    print TTYO "ivec: ";
    $ivectxt = <TTYI>; chop $ivectxt;
    $key = &string2key($keytxt);
    $ivec = &string2key($ivectxt);
}
$schedule="";
&make_key_sched($key,$schedule);
undef($/);

$datum = <STDIN>;

$outdat = "";
if ($type eq "encrypt") {
  &des_pcbc_encrypt($datum, $outdat, length($datum), $schedule, $ivec, 1);
} elsif ($type eq "decrypt") {
  &des_pcbc_encrypt($datum, $outdat, length($datum), $schedule, $ivec, 0);
} else {
  print STDERR "dcrypt [encrypt|dcrypt] Key Ivec\n";
}
print $outdat;

