NAME

CTK::Crypt - GPG Crypt backend

VERSION

Version 1.00

SYNOPSIS

use CTK::Crypt::GPG;

my $gpg = new CTK::Crypt::GPG(
    -gpgbin     => "/usr/bin/gpg",
    -gpghome    => "/gpg/homedir",
    -gpgconf    => "/gpg/homedir/gpg.conf",
    -gpgopts    => ["verbose", "yes"],
    -publickey  => "/path/to/public.key",
    -privatekey => "/path/to/private.key",
    -password   => "passphrase", # Key password
    -recipient  => "anonymous@example.com", # Email, user id, keyid, or keygrip
) or die("Can't create crypter");

$gpg->encrypt(
    -infile => "MyDocument.txt",
    -outfile=> "MyDocument.txt.asc",
    -armor  => "yes",
) or die( $gpg->error );

$gpg->decrypt(
    -infile => "MyDocument.txt.asc",
    -outfile=> "MyDocument.txt",
) or die( $gpg->error );

DESCRIPTION

GPG Crypt backend

See http://www.gnupg.org (GPG4Win - http://gpg4win.org) for details

For start working with this module You need create public and private GPG keys:

gpg --full-gen-key

Example of interaction (test account):

> Anonymous
> anonymous@example.com
> Password: test
< 58E79B320D135DEE
< ADF81A296AAC9503A6135F258E79B320D135DEE

For show list of available keys run:

gpg -k
gpg -K

For export keys run:

gpg --export -a -o mypublic.key "anonymous@example.com"
gpg --export-secret-keys --batch --pinentry-mode loopback --passphrase "test" -a -o myprivate.key "anonymous@example.com"

new

my $gpg = new CTK::Crypt::GPG(
    -gpgbin     => "/usr/bin/gpg",
    -gpghome    => "/gpg/homedir",
    -gpgconf    => "/gpg/homedir/gpg.conf",
    -gpgopts    => ["verbose", "yes"],
    -publickey  => "/path/to/public.key",
    -privatekey => "/path/to/private.key",
    -password   => "passphrase", # Key password
    -recipient  => "anonymous@example.com", # Email, user id, keyid, or keygrip
) or die("Can't create crypter");
gpgbin

GPG program

For example: "/usr/bin/gpg"

Default: gpg from PATH

gpghome, homedir

GPG homedir

For example: "/gpg/homedir"

Default: /tmp/gpgXXXXX

gpgconf

Path to GPG config file (for options storing)

For example: "/gpg/homedir/gpg.conf"

Default: /tmp/gpgXXXXX/gpg.conf

gpgopts, options

GPG default options

For example: ["verbose", "yes"]

Default: ["verbose", "yes"],

publickey, pubkey, pubring

Public key path

For example: "/path/to/public.key"

privatekey, privkey, privring, seckey, secring

Private key path

For example: "/path/to/private.key"

password, passphrase, passw, pass

Private key password

For example: "passphrase"

recipient, keyid, id, user, keygrip

Email, user id, keyid, or keygrip

For example: "anonymous@example.com",

decrypt

$gpg->decrypt(
    -infile => "MyDocument.txt.asc",
    -outfile=> "MyDocument.txt",
) or die( $gpg->error );

PGP file decrypting

in, filein, filesrs, infile, src

Source file (encrypted file)

out, fileout, filedst, outfile, dst

Target file

encrypt

$gpg->encrypt(
    -infile => "MyDocument.txt",
    -outfile=> "MyDocument.txt.asc",
    -armor  => "yes",
) or die( $gpg->error );

PGP file encrypting

in, filein, filesrs, infile, src

Source file

out, fileout, filedst, outfile, dst

Target file (encrypted file)

armor, ascii

Enable armor-mode (as text output): yes, on, 1, enable

For example: "yes"

Default: "no"

error

print $gpg->error;

Returns error string

HISTORY

See Changes file

DEPENDENCIES

CTK::Util, File::Temp

TO DO

See TODO file

BUGS

* none noted

SEE ALSO

CTK::Util, http://www.gnupg.org, GPG4Win

AUTHOR

Serż Minus (Sergey Lepenkov) http://www.serzik.com <abalama@cpan.org>

COPYRIGHT

Copyright (C) 1998-2019 D&D Corporation. All Rights Reserved

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See LICENSE file and https://dev.perl.org/licenses/