|
I'm trying to write a subroutine to GnuPG encrypt a report (generated from a database query) given only the report contents and the encryption key as arguments. No external dependencies (other than Perl modules and specifically excluding GPG binaries and its keyring files).
This looks like it should work (I had help from Benjamin Trott, but I guess, I don't fully understand his comments).
Does anyone have any other bright ideas on how to eliminate these external dependencies?
#!/usr/bin/perl
#================================================================================
# test script to encrypt data without external dependencies
#================================================================================
use strict;
use warnings;
use Crypt::OpenPGP;
use Crypt::OpenPGP::KeyBlock;
use Crypt::OpenPGP::KeyRing;
my $plaintext = qq^
Dummy report data
^;
my $ring = Crypt::OpenPGP::KeyRing->new( Data => "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGP 6.5.1
mQGiBES0BisRBAD11RjxN2lk+2eKsVjfJSrjkrbhoIRS1eduMb1Q1dzbqNAG1L/j
Srd+T/dfWEqWu0LqBwgSK/P6a+cdnENSFj8LQOWD8zbrXbok2gFoIkF/L1O/7znC
5IwFPP+2FZe1kFyY36PKooot+okYG/G16HNAuU3CzxBYCuqkxqEDeU1kdwCg/1jI
FrbO0cUrJrit/6NIyzDBCOMEANgBXtHtdrdtmwE35HcFO2sdywvvIOE+L1Wouwku
ewK6/bpLGa1LnYu7T7xO+CziYqjp9SIGiSPmZjQQPXfBrEtCvLMCTC/mdylOP6Sh
hrnLWgPgAV5d7wpR1VUQCugDDZ9s/ExQuQEeD3dHt2dBBco5/+lvdr/cXE06J3x2
fETgA/9dhSfdp4h4PIKYkgDvTGIpFp6JeKTVd5PnTu80JO9JkkSWtPryukDT/smq
ACzyrCkexY0zdGgFJ5mmrK/S5KNyrUOw46noCj07k6/l4dl5CCM0K670JpoYijL5
rAUnfvvcozjhqKpgwalGDsIZ+pDNTL2BjREZulU6mTEiO9iAxLQMZnR0LXRlc3Qt
a2V5iQBOBBARAgAOBQJEtAYrBAsDAQICGQEACgkQ7PgWEnFENBZ0NACgl4QXiLg5
3ziImum1iWQDTjSFBA8AoI9A3rEbeeaqUAHWQMn7x2wtofPiuQMNBES0Bi8QDADM
HXdXJDhK4sTw6I4TZ5dOkhNh9tvrJQ4X/faY98h8ebByHTh1+/bBc8SDESYrQ2DD
4+jWCv2hKCYLrqmus2UPogBTAaB81qujEh76DyrOH3SET8rzF/OkQOnX0ne2Qi0C
NsEmy2henXyYCQqNfi3t5F159dSST5sYjvwqp0t8MvZCV7cIfwgXcqK61qlC8wXo
+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh01D4
9Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNb
no2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbz
ySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzhsSlAGBGNfISnCnLW
hsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZJrqrol7DVelMMm8A
AgIL/jQq8VcNbVMOJVW9ijKHVg/wbx6wzqYEOedqsbLjcX0TNvrp2aL2RDK4xq/E
oIERKZftsI2TvglcgNrw8NXnps1hT5lP1oEjmRF8B57bm4p4fScfaPEodzCTsbX7
KFI+ie/XbApHrcFnQzfQFA0hqDFidATSxf6mWPPMUVSvDTaNbq1Ps88OLeSoF3kE
58hMm9x8xZJOnQeTe4gvX2uDz+F6daxC7xBd73axc2KS9mnBqj9Xw2qLm438TuKC
V7ioOXxzeSVioDNsnh+PLYhEBPFCgsjEqKu0TXWDVkkzzxLO11Uq6VTYt/ve1cVz
mq2vLN3km1kZoumXHYROV9mg2Zr7Y6604r+OAVHxNgJz5X6OB36bjQgpWDPuNWmk
uh1PrZAT6WB2LJDaSZk6y3EQfGWvnZ5OqgqhIVl2HlyMGU4E8C8iTkuCStpndMFw
ZchMKR7UbTswzI7m4t4RPLvpaF8YxmAJy9UzZEK3Ycnq5oNsgicKqgM2GVpky1GO
oAtMaIkARgQYEQIABgUCRLQGLwAKCRDs+BYScUQ0FoObAKD1vGbfNCeu/CVvwsTr
9mz6nUmeTgCeNO9P7OkUuySN6D2YTYbKvgIAEes=
=+ksY
-----END PGP PUBLIC KEY BLOCK-----" );
my $kb = Crypt::OpenPGP::KeyBlock->new;
$kb->add( ($ring->blocks)[0] );
my $cert = $kb->encrypting_key;
my $pgp = Crypt::OpenPGP->new( Compat => 'GnuPG' );
my $ct = $pgp->encrypt( Key => $cert, Data => $plaintext )
or die "ERROR: " . $pgp->errstr;
print $ct;
|