#!/usr/local/bin/perl -w

use FileHandle;
use Stream::IO;
use PGP::RandomStream;
use PGP::PacketFactory;
use PGP::PKEncryptedData;
use PGP::ConvEncryptedData;

#
#	Create random stream
#
my $ris = new PGP::RandomStream;
ref($ris) || die $ris;
$ris->goodSeed();

#
#	Read secret key
#
my $fis = new Stream::FileInput "secring.pgp";
ref($fis) || die "Could not create Stream::FileInput ($fis)";
my $dis = new Stream::DataInput $fis;
ref($dis) || die "Could not create Stream::DataInput ($dis)";
my $skc = PGP::PacketFactory::restore($dis);
die $skc unless ref($skc);

#
#	Decrypt secret key
#
my $sk = $skc->decrypt("joe");
die "Cannot decrypt secret key ($sk)" unless ref $sk;


#
#	Read from stdin
#
my @data = <STDIN>;
my $msg = '';
foreach(@data)
{
	chomp;
	$msg .= $_;
	$msg .= "\r\n";
}

#
#	Package up data in a literal packet
#
my $lit = new PGP::LiteralData $msg;
ref($lit) || die $lit;
my ($litpkt, $err);
($litpkt, $err) = PGP::PacketFactory::saveAsString($lit);
defined $err && die $err;


my $sig = new PGP::Signature $sk, $lit, undef, undef, $ris;
die $sig unless ref($sig);
	   
my ($pkt, $err);
($pkt, $err) = PGP::PacketFactory::saveAsString($sig);
defined $err && die $err;

print "-----BEGIN PGP MESSAGE-----\n\n";
print PGP::Armoury::messageWithChecksum($pkt);
print "-----END PGP MESSAGE-----\n";


