package Crypt::GpgME;
use strict;
use warnings;
use IO::Scalar;
our $VERSION = '0.09';
our @ISA;
eval {
require XSLoader;
XSLoader::load( __PACKAGE__, $VERSION );
1;
} or do {
require DynaLoader;
push @ISA, 'DynaLoader';
__PACKAGE__->bootstrap( $VERSION );
};
sub import {
my ($base, @args) = @_;
my $do_init = 1;
my $init_version = undef;
while (my $arg = shift @args) {
if ($arg eq '-no-init') {
$do_init = 0;
}
elsif ($arg eq '-init') {
$do_init = 1;
if (!@args) {
require Carp;
Carp::croak ('-init requires a version number to pass to Crypt::GpgME->check_version');
}
$init_version = shift @args;
}
else {
$base->VERSION($arg);
}
}
if ($do_init) {
$base->check_version( defined $init_version ? $init_version : () );
}
}
package Crypt::GpgME::Data;
use strict;
use warnings;
use base qw/IO::Scalar/;
1;
__END__
=head1 NAME
Crypt::GpgME - Perl interface to libgpgme
=head1 SYNOPSIS
use IO::File;
use Crypt::GpgME;
my $ctx = Crypt::GpgME->new;
$ctx->set_passphrase_cb(sub { 'abc' });
my $signed = $ctx->sign( IO::File->new('some_file', 'r') );
print while <$signed>;
=head1 FUNCTIONS
=head2 GPGME_VERSION
my $version = Crypt::GpgME->GPGME_VERSION;
my $version = $ctx->GPGME_VERSION;
Returns a string containing the libgpgme version number this module has been
compiled against.
=head2 new
my $ctx = Crypt::GpgME->new;
Returns a new Crypt::GpgME instance. Throws an exception on error.
=head2 card_edit
my $fh = $ctx->card_edit($key, $coderef);
my $fh = $ctx->card_edit($key, $coderef, $user_data);
=head2 check_version
Crypt::GpgME->check_version;
Crypt::GpgME->check_version($version);
=head2 delete
$ctx->delete($key);
$ctx->delete($key, $allow_secret);
=head2 edit
my $fh = $ctx->edit($key, $coderef);
my $fh = $ctx->edit($key, $coderef, $user_data);
=head2 engine_check_version
$ctx->engine_check_version($proto);
Crypt::GpgME->engine_check_version($proto);
=head2 genkey
my ($result, $pubkey_fh, $seckey_fh) = $ctx->genkey($parms);
=head2 get_armor
my $armor = $ctx->get_armor;
=head2 get_engine_info
my $engine_info = $ctx->get_engine_info;
my $engine_info = Crypt::GpgME->get_engine_info;
=head2 get_include_certs
my $include_certs = $ctx->get_include_certs;
=head2 get_key
my $key = $ctx->get_key($fpr);
my $key = $ctx->get_key($fpr, $secret);
=head2 get_keylist_mode
my $keylist_mode = $ctx->get_keylist_mode;
=head2 get_protocol
my $protocol = $ctx->get_protocol;
=head2 get_textmode
my $textmode = $ctx->get_protocol;
=head2 keylist
my @results = $ctx->keylist($pattern);
my @results = $ctx->keylist($pattern, $secret_only);
=head2 set_armor
$ctx->set_armor($armor);
=head2 set_engine_info
$ctx->set_engine_info($proto, $file_name, $home_dir);
Crypt::GpgME->set_engine_info($proto, $file_name, $home_dir);
=head2 set_include_certs
$ctx->set_include_certs;
$ctx->set_include_certs($nr_of_certs);
=head2 set_keylist_mode
$ctx->set_keylist_mode;
$ctx->set_keylist_mode($keylist_mode);
=head2 set_locale
$ctx->set_locale($category, $value);
Crypt::GpgME->set_locale($category, $value);
=head2 set_passphrase_cb
$ctx->set_passphrase_cb($coderef);
$ctx->set_passphrase_cb($coderef, $user_data);
=head2 set_progress_cb
$ctx->set_progress_cb($coderef);
$ctx->set_progress_cb($coderef, $user_data);
=head2 set_protocol
$ctx->set_protocol;
$ctx->set_protocol($proto);
=head2 set_textmode
$ctx->set_textmode($textmode);
=head2 sig_notation_add
$ctx->sig_notation_add($name, $value);
$ctx->sig_notation_add($name, $value, $flags);
=head2 sig_notation_clear
$ctx->sig_notation_clear;
=head2 sig_notation_get
my @notation = $ctx->sig_notation_get;
=head2 sign
my $fh = $ctx->sign($plain);
my $fh = $ctx->sign($plain, $mode);
=head2 signers_add
$ctx->signers_add($key);
=head2 signers_clear
$ctx->signers_clear;
=head2 signers_enum
my $key = $ctx->signers_enum($seq);
=head2 trustlist
my @trustlist = $ctx->trustlist($pattern, $maxlevel);
=head2 verify
my ($result, $plain) = $ctx->verify($sig);
my $result = $ctx->verify($sig, $signed_text);
=head1 AUTHOR
Florian Ragwitz, C<< <rafl at debian.org> >>
=head1 BUGS
Please report any bugs or feature requests to
C<bug-crypt-gpgme at rt.cpan.org>, or through the web interface at
L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Crypt-GpgME>.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Crypt::GpgME
You can also look for information at:
=over 4
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/Crypt-GpgME>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/Crypt-GpgME>
=item * RT: CPAN's request tracker
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Crypt-GpgME>
=item * Search CPAN
L<http://search.cpan.org/dist/Crypt-GpgME>
=back
=head1 ACKNOWLEDGEMENTS
=head1 COPYRIGHT & LICENSE
Copyright 2007-2009 Florian Ragwitz, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut