view release on metacpan or search on metacpan
lib/Mail/Make.pm view on Meta::CPAN
# Any of the above + attachments -> multipart/mixed
sub as_entity
{
my $self = shift( @_ );
# When gpg_sign() / gpg_encrypt() / gpg_sign_encrypt() have already assembled the
# top-level entity (stored in _gpg_entity), return it directly. Envelope headers have
# already been merged by _wrap_in_mail().
return( $self->{_gpg_entity} ) if( defined( $self->{_gpg_entity} ) );
# S/MIME: entity pre-assembled by Mail::Make::SMIME::_build_from_smime_output().
# Headers are already embedded in the parsed entity; return it directly.
return( $self->{_smime_entity} ) if( defined( $self->{_smime_entity} ) );
lib/Mail/Make.pm view on Meta::CPAN
# This is used when we know the message will be large, or when we want to bound peak
# memory use unconditionally.
# Default: false.
sub use_temp_file { return( shift->_set_get_boolean( 'use_temp_file', @_ ) ); }
# gpg_encrypt( %opts )
# Encrypts this message for one or more recipients and returns a new Mail::Make object
# whose body is a RFC 3156 multipart/encrypted structure.
#
# Required options:
# Recipients => [ 'alice@example.com', ... ]
#
# Optional options:
# GpgBin => '/usr/bin/gpg2'
# KeyServer => 'keys.openpgp.org'
# AutoFetch => 1
# Digest => 'SHA256'
sub gpg_encrypt
{
my $self = shift( @_ );
my $opts = $self->_get_args_as_hash( @_ );
require Mail::Make::GPG;
my $gpg = Mail::Make::GPG->new(
( defined( $opts->{GpgBin} ) ? ( gpg_bin => $opts->{GpgBin} ) : () ),
( defined( $opts->{Digest} ) ? ( digest => $opts->{Digest} ) : () ),
( defined( $opts->{KeyServer} ) ? ( keyserver => $opts->{KeyServer} ) : () ),
( defined( $opts->{AutoFetch} ) ? ( auto_fetch => $opts->{AutoFetch} ) : () ),
) || return( $self->pass_error( Mail::Make::GPG->error ) );
my $recipients = $opts->{Recipients} ||
return( $self->error( 'Recipients option is required.' ) );
$recipients = [ $recipients ] unless( ref( $recipients ) eq 'ARRAY' );
return( $gpg->encrypt(
entity => $self,
recipients => $recipients,
) || $self->pass_error( $gpg->error ) );
}
# gpg_sign( %opts )
# Signs this message and returns a new Mail::Make object whose body is a
# RFC 3156 multipart/signed structure with a detached ASCII-armoured signature.
#
# Required options:
# KeyId => '35ADBC3AF8355E845139D8965F3C0261CDB2E752'
#
# Optional options:
# Passphrase => 'secret' # or CODE ref; omit to use gpg-agent
# Digest => 'SHA256'
# GpgBin => '/usr/bin/gpg2'
sub gpg_sign
{
my $self = shift( @_ );
my $opts = $self->_get_args_as_hash( @_ );
require Mail::Make::GPG;
my $gpg = Mail::Make::GPG->new(
( defined( $opts->{GpgBin} ) ? ( gpg_bin => $opts->{GpgBin} ) : () ),
( defined( $opts->{Digest} ) ? ( digest => $opts->{Digest} ) : () ),
) || return( $self->pass_error( Mail::Make::GPG->error ) );
return( $gpg->sign(
entity => $self,
key_id => ( $opts->{KeyId} // '' ),
passphrase => ( $opts->{Passphrase} // undef ),
( defined( $opts->{Digest} ) ? ( digest => $opts->{Digest} ) : () ),
) || $self->pass_error( $gpg->error ) );
}
# gpg_sign_encrypt( %opts )
# Signs then encrypts this message. Returns a new Mail::Make object whose body is a
# RFC 3156 multipart/encrypted structure containing a signed and encrypted payload.
#
# Required options:
# KeyId => '35ADBC3AF8355E845139D8965F3C0261CDB2E752'
# Recipients => [ 'alice@example.com', ... ]
#
# Optional options:
# Passphrase => 'secret' # or CODE ref
# Digest => 'SHA256'
# GpgBin => '/usr/bin/gpg2'
# KeyServer => 'keys.openpgp.org'
# AutoFetch => 1
sub gpg_sign_encrypt
{
my $self = shift( @_ );
my $opts = $self->_get_args_as_hash( @_ );
require Mail::Make::GPG;
my $gpg = Mail::Make::GPG->new(
( defined( $opts->{GpgBin} ) ? ( gpg_bin => $opts->{GpgBin} ) : () ),
( defined( $opts->{Digest} ) ? ( digest => $opts->{Digest} ) : () ),
( defined( $opts->{KeyServer} ) ? ( keyserver => $opts->{KeyServer} ) : () ),
( defined( $opts->{AutoFetch} ) ? ( auto_fetch => $opts->{AutoFetch} ) : () ),
) || return( $self->pass_error( Mail::Make::GPG->error ) );
my $recipients = $opts->{Recipients} ||
return( $self->error( 'Recipients option is required.' ) );
$recipients = [ $recipients ] unless( ref( $recipients ) eq 'ARRAY' );
return( $gpg->sign_encrypt(
entity => $self,
key_id => ( $opts->{KeyId} // '' ),
passphrase => ( $opts->{Passphrase} // undef ),
recipients => $recipients,
( defined( $opts->{Digest} ) ? ( digest => $opts->{Digest} ) : () ),
) || $self->pass_error( $gpg->error ) );
}
# smime_encrypt( %opts )
# Encrypts this message for one or more recipients. Returns a new Mail::Make object whose
lib/Mail/Make.pm view on Meta::CPAN
When true, L</as_string_ref> always spools to a temporary file regardless of message size. Useful when you know the message will be large, or when you want to bound peak memory use unconditionally. Default: false.
=head1 GPG METHODS
These methods delegate to L<Mail::Make::GPG>, which requires L<IPC::Run> and a working C<gpg> (or C<gpg2>) installation. All three methods produce RFC 3156-compliant messages and return a new L<Mail::Make> object suitable for passing directly to C<sm...
=head2 gpg_encrypt( %opts )
Encrypts this message for one or more recipients and returns a new L<Mail::Make> object whose entity is an RFC 3156 C<multipart/encrypted; protocol="application/pgp-encrypted"> message.
Required options:
lib/Mail/Make.pm view on Meta::CPAN
=over 4
=item C<< AutoFetch => $bool >>
When true and C<KeyServer> is set, calls C<gpg --locate-keys> for each recipient before encryption. Default: C<0>.
=item C<< Digest => $algorithm >>
Hash algorithm for the signature embedded in the encrypted payload.
Default: C<SHA256>.
=item C<< GpgBin => $path >>
Full path to the C<gpg> executable. Defaults to searching C<gpg2> then C<gpg> in C<PATH>.
=item C<< KeyServer => $url >>
Keyserver URL for auto-fetching recipient public keys (e.g. C<'keys.openpgp.org'>). Only consulted when C<AutoFetch> is true.
=back
=head2 gpg_sign( %opts )
Signs this message and returns a new L<Mail::Make> object whose entity is an RFC 3156 C<multipart/signed; protocol="application/pgp-signature"> message with a detached, ASCII-armoured signature.
Required options:
lib/Mail/Make.pm view on Meta::CPAN
Valid values: C<SHA256>, C<SHA384>, C<SHA512>, C<SHA1>.
=item C<< GpgBin => $path >>
Full path to the C<gpg> executable.
=item C<< Passphrase => $string_or_coderef >>
Passphrase to unlock the secret key. May be a plain string or a C<CODE> reference called with no arguments at signing time. When omitted, GnuPG's agent handles passphrase prompting.
=back
=head2 gpg_sign_encrypt( %opts )
Signs then encrypts this message. Returns a new L<Mail::Make> object whose entity is an RFC 3156 C<multipart/encrypted> message containing a signed and encrypted OpenPGP payload.
Accepts all options from both L</gpg_sign> and L</gpg_encrypt>.
B<Note:> C<KeyId> and C<Recipients> are both required.
B<Typical usage:>
# Sign only
my $signed = $mail->gpg_sign(
KeyId => '35ADBC3AF8355E845139D8965F3C0261CDB2E752',
Passphrase => 'my-passphrase', # or: sub { MyKeyring::get('gpg') }
) || die( $mail->error );
$signed->smtpsend( Host => 'smtp.example.com' );
# Encrypt only
my $encrypted = $mail->gpg_encrypt(
Recipients => [ 'alice@example.com' ],
) || die( $mail->error );
# Sign then encrypt
my $protected = $mail->gpg_sign_encrypt(
KeyId => '35ADBC3AF8355E845139D8965F3C0261CDB2E752',
Passphrase => sub { MyKeyring::get_passphrase() },
Recipients => [ 'alice@example.com', 'bob@example.com' ],
) || die( $mail->error );
lib/Mail/Make.pm view on Meta::CPAN
=head2 Memory usage
All three methods load the complete serialised message into memory before performing any cryptographic operation. This is a fundamental constraint imposed by two factors: the L<Crypt::SMIME> API accepts only Perl strings (no filehandle or streaming i...
For typical email messages this is not a concern. If you anticipate very large attachments, consider L<Mail::Make::GPG> instead, which delegates to the C<gpg> command-line tool via L<IPC::Run> and can handle arbitrary message sizes through temporary ...
See L<Mail::Make::SMIME/"MEMORY USAGE AND LIMITATIONS"> for a full discussion.
=head2 smime_encrypt( %opts )
view all matches for this distribution
view release on metacpan or search on metacpan
t/204-sgfolder.mbox view on Meta::CPAN
Subject: Re: Mail::Box::DBI (was Re: Mail::Box v2.043)
In-Reply-To: <20030710125253.L5754@speeltuin.ATComputing.nl>
Message-ID: <Pine.OSX.4.56.0307101923360.2007@revf>
References: <20030710103707.J5754@speeltuin.ATComputing.nl>
<1057832283.1546.60.camel@frodo> <20030710125253.L5754@speeltuin.ATComputing.nl>
X-PGP-Key: http://nothingmuch.woobling.org/gpg-key-0xEBD27418.asc
X-Habeas-SWE-1: winter into spring
X-Habeas-SWE-2: brightly anticipated
X-Habeas-SWE-3: like Habeas SWE (tm)
X-Habeas-SWE-4: Copyright 2002 Habeas (tm)
X-Habeas-SWE-5: Sender Warranted Email (SWE) (tm). The sender of this
t/204-sgfolder.mbox view on Meta::CPAN
ciao ciao!
- --
Yuval Kogman ( nothingmuch@woobling.org | nothingmuch@altern.org )
kung foo master: /me sushi-spin-kicks : neeyah!!!!!!!!!!!!!!!!!!!!!
et perl hacker. !@# http://nothingmuch.woobling.org/ gpg:0xEBD27418
http://wecanstopspam.org/ http://www.habeas.com/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Darwin)
Comment: pgpenvelope 2.10.2 - http://pgpenvelope.sourceforge.net/
t/204-sgfolder.mbox view on Meta::CPAN
Date: Tue, 15 Jul 2003 04:06:12 +0300 (IDT)
From: Yuval Kojman <lists@woobling.org>
To: mailbox@perl.overmeer.net
Subject: mailbox imap/pop server plans
Message-ID: <Pine.OSX.4.56.0307150404001.22084@revf>
X-PGP-Key: http://nothingmuch.woobling.org/gpg-key-0xEBD27418.asc
X-Habeas-SWE-1: winter into spring
X-Habeas-SWE-2: brightly anticipated
X-Habeas-SWE-3: like Habeas SWE (tm)
X-Habeas-SWE-4: Copyright 2002 Habeas (tm)
X-Habeas-SWE-5: Sender Warranted Email (SWE) (tm). The sender of this
t/204-sgfolder.mbox view on Meta::CPAN
TIA
- --
Yuval Kogman ( nothingmuch@woobling.org | nothingmuch@altern.org )
kung foo master: /me whallops greyface with a fnord: neeyah!!!!!!!!
et perl hacker. !@# http://nothingmuch.woobling.org/ gpg:0xEBD27418
http://wecanstopspam.org/ http://www.habeas.com/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Darwin)
Comment: pgpenvelope 2.10.2 - http://pgpenvelope.sourceforge.net/
t/204-sgfolder.mbox view on Meta::CPAN
Date: Tue, 15 Jul 2003 04:06:12 +0300 (IDT)
From: Yuval Kojman <lists@woobling.org>
To: mailbox@perl.overmeer.net
Subject: mailbox imap/pop server plans
Message-ID: <correct-message@localhost>
X-PGP-Key: http://nothingmuch.woobling.org/gpg-key-0xEBD27418.asc
X-Habeas-SWE-1: winter into spring
X-Habeas-SWE-2: brightly anticipated
X-Habeas-SWE-3: like Habeas SWE (tm)
X-Habeas-SWE-4: This line is wrong on purpose!!!!
X-Habeas-SWE-5: Sender Warranted Email (SWE) (tm). The sender of this
t/204-sgfolder.mbox view on Meta::CPAN
TIA
- --
Yuval Kogman ( nothingmuch@woobling.org | nothingmuch@altern.org )
kung foo master: /me whallops greyface with a fnord: neeyah!!!!!!!!
et perl hacker. !@# http://nothingmuch.woobling.org/ gpg:0xEBD27418
http://wecanstopspam.org/ http://www.habeas.com/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Darwin)
Comment: pgpenvelope 2.10.2 - http://pgpenvelope.sourceforge.net/
t/204-sgfolder.mbox view on Meta::CPAN
Date: Tue, 15 Jul 2003 04:06:12 +0300 (IDT)
From: Yuval Kojman <lists@woobling.org>
To: mailbox@perl.overmeer.net
Subject: mailbox imap/pop server plans
Message-ID: <missing-line-4@localhost>
X-PGP-Key: http://nothingmuch.woobling.org/gpg-key-0xEBD27418.asc
X-Habeas-SWE-1: winter into spring
X-Habeas-SWE-2: brightly anticipated
X-Habeas-SWE-3: like Habeas SWE (tm)
X-Habeas-SWE-5: Sender Warranted Email (SWE) (tm). The sender of this
X-Habeas-SWE-6: email in exchange for a license for this Habeas
t/204-sgfolder.mbox view on Meta::CPAN
TIA
- --
Yuval Kogman ( nothingmuch@woobling.org | nothingmuch@altern.org )
kung foo master: /me whallops greyface with a fnord: neeyah!!!!!!!!
et perl hacker. !@# http://nothingmuch.woobling.org/ gpg:0xEBD27418
http://wecanstopspam.org/ http://www.habeas.com/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Darwin)
Comment: pgpenvelope 2.10.2 - http://pgpenvelope.sourceforge.net/
t/204-sgfolder.mbox view on Meta::CPAN
Date: Tue, 15 Jul 2003 04:06:12 +0300 (IDT)
From: Yuval Kojman <lists@woobling.org>
To: mailbox@perl.overmeer.net
Subject: mailbox imap/pop server plans
Message-ID: <additional-line@localhost>
X-PGP-Key: http://nothingmuch.woobling.org/gpg-key-0xEBD27418.asc
X-Habeas-SWE-1: winter into spring
X-Habeas-SWE-2: brightly anticipated
X-Habeas-SWE-3: like Habeas SWE (tm)
X-Habeas-SWE-4: This line is wrong on purpose!!!!
X-Habeas-SWE-5: Sender Warranted Email (SWE) (tm). The sender of this
t/204-sgfolder.mbox view on Meta::CPAN
TIA
- --
Yuval Kogman ( nothingmuch@woobling.org | nothingmuch@altern.org )
kung foo master: /me whallops greyface with a fnord: neeyah!!!!!!!!
et perl hacker. !@# http://nothingmuch.woobling.org/ gpg:0xEBD27418
http://wecanstopspam.org/ http://www.habeas.com/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Darwin)
Comment: pgpenvelope 2.10.2 - http://pgpenvelope.sourceforge.net/
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Mail/Postfixadmin.pm view on Meta::CPAN
$query.="`$self->{'_fields'}->{'mailbox'}->{'password'}`= '$cryptedPassword'";
if($self->{'storeCleartextPassword'} > 0){
$query.= ", `$self->{'_fields'}->{'mailbox'}->{'password_clear'}` = '$clearPassword'";
}
if($self->{'storeGPGPassword'} > 0){
my $gpgPassword = $self->cryptPasswordGPG($clearPassword);
$query.= ", `$self->{'_fields'}->{'mailbox'}->{'password_gpg'}` = '$gpgPassword'";
}
$query.="where `$self->{'_fields'}->{'mailbox'}->{'username'}` = '$user'";
my $sth = $self->{'_dbi'}->prepare($query);
$sth->execute();
lib/Mail/Postfixadmin.pm view on Meta::CPAN
'domain' => 'domain',
'created' => 'created',
'modified' => 'modified',
'active' => 'active',
'password_clear'=> 'password_clear',
'password_gpg' => 'password_gpg',
};
$fields{'domain_admins'} = {
'domain' => 'domain',
'username' => 'username'
};
view all matches for this distribution
view release on metacpan or search on metacpan
any concern to you, by all means verify the signature of this file and
contact the author if any discrepancy is detected.
You can find more information about this at the following URL
http://mipagina.cantv.net/lem/gpg/
This information includes the correct keys, fingerprints, etc.Note
that this README file should also be signed.
LICENSE AND WARRANTY
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Mail/Run/Crypt.pm view on Meta::CPAN
Subject => $subject,
Data => $content,
);
# Encrypt the MIME object
my $mgpg = Mail::GnuPG->new(
key => $self->{keyid},
passphrase => $self->{passphrase},
);
# Sign and/or encrypt as appropriate
if ( $self->{sign} and $self->{encrypt} ) {
$mgpg->mime_signencrypt( $mime, $self->{mailto} );
}
elsif ( $self->{sign} ) {
$mgpg->mime_sign( $mime, $self->{mailto} );
}
elsif ( $self->{encrypt} ) {
$mgpg->mime_encrypt( $mime, $self->{mailto} );
}
# Send it
return $mime->send();
}
view all matches for this distribution
view release on metacpan or search on metacpan
t/acceptance-base.pl
t/acceptance.t
t/boilerplate.t
t/config
t/config.dist
t/data/gpg_thunderbird.eml
t/data/plain.eml
t/pod.t
t/SATest.pm
t/test_dir
t/unit.t
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Mail/SpamAssassin/Plugin/OpenPGP.pm view on Meta::CPAN
=head1 DESCRIPTION
This uses Mail::GPG which uses GnuPG::Interface which uses Gnu Privacy Guard via IPC.
Make sure the homedir you use for gnupg has a gpg.conf with something like the following in it, so that it will automatically fetch public keys. And make sure that the directory & files are only readable by owner (a gpg security requirement).
keyserver-options auto-key-retrieve timeout=5
# any keyserver will do
keyserver x-hkp://random.sks.keyserver.penguin.de
If a public key cannot be retrieved, the email will be marked as SIGNED but neither GOOD nor BAD. To ensure that your local public keys don't get out of date, you should probably set up a scheduled job to delete pubring.gpg regularly
For project information, see L<http://konfidi.org>
=head1 USER SETTINGS
gpg_executable /path/to/gpg
gpg_homedir /var/foo/gpg-homedir-for-spamassassin
openpgp_add_header_fingerprint 1 # default 1 (true)
openpgp_add_header_failure_info 0 # default 1 (true)
The OpenPGP headers are never added to emails without a signature.
lib/Mail/SpamAssassin/Plugin/OpenPGP.pm view on Meta::CPAN
my @cmds = ();
# see Mail::SpamAssassin::Conf::Parser for expected format of the "config blocks" stored in @cmds
push(@cmds, {
setting => 'gpg_homedir',
# FIXME: default => 1,
type => $Mail::SpamAssassin::Conf::CONF_TYPE_STRING,
});
push(@cmds, {
setting => 'gpg_executable',
type => $Mail::SpamAssassin::Conf::CONF_TYPE_STRING,
});
push(@cmds, {
setting => 'openpgp_add_header_fingerprint',
default => 1,
lib/Mail/SpamAssassin/Plugin/OpenPGP.pm view on Meta::CPAN
$result =~ s/,.*$//;
return $result;
}
# TODO contribute back to Mail::GPG::Result
sub _gpg_result_date {
my $result = shift;
my $gpg_status = $result->get_gpg_status;
## dbg "openpgp: status: " . $$gpg_status;
# based on Mail::GPG::Result's analyze_result
pos($$gpg_status) = undef; # reset /g modifier since this module uses the following regex multiple times
while ( $$gpg_status && $$gpg_status =~ m{^\[GNUPG:\]\s+(.*)$}mg ) {
my $line = $1;
## dbg "openpgp: line: " . $line;
# 3rd field after VALIDSIG
if ( $line =~ /^VALIDSIG\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/ ) {
#$sign_fingerprint = $1;
lib/Mail/SpamAssassin/Plugin/OpenPGP.pm view on Meta::CPAN
}
}
# TODO contribute back to Mail::GPG::Result
# it's get_sign_fingerprint does signing key, not primary key if signing key is a subkey
sub _gpg_result_primary_key_fingerprint {
my $result = shift;
my $gpg_status = $result->get_gpg_status;
pos($$gpg_status) = undef; # reset /g modifier since this module uses the following regex multiple times
# based on Mail::GPG::Result's analyze_result
while ( $$gpg_status && $$gpg_status =~ m{^\[GNUPG:\]\s+(.*)$}mg ) {
my $line = $1;
# if signed with a subkey, subkey comes first and primary key comes later
# [GNUPG:] VALIDSIG D1892B5C772E643EBB97397E6737EA5562EFBB73 2008-01-21 1200891462 0 3 0 1 10 01 EAB0FABEDEA81AD4086902FE56F0526F9BB3CE70
# some gnupg versions may only output 3 fields after VALIDSIG
# get last 40hex-digit sequence
lib/Mail/SpamAssassin/Plugin/OpenPGP.pm view on Meta::CPAN
$scan->{openpgp_signed} = 0;
$scan->{openpgp_signed_good} = 0;
$scan->{openpgp_signed_bad} = 0;
my %opts;
if (defined $scan->{conf}->{gpg_executable}) {
$opts{gpg_call} = $scan->{conf}->{gpg_executable};
}
# see GnuPG::Interface's hash_init (correlates to gpg commandline arguments)
$opts{gnupg_hash_init} = {
homedir => $scan->{conf}->{gpg_homedir}
};
my $gpg = Mail::GPG->new(%opts);
# TODO: use SA-parsed entity instead of having Mail::GPG reparse it into a MIME::Entity?
my $entity = Mail::GPG->parse(mail_sref => \$scan->{msg}->get_pristine());
# TODO: configurable option to use is_signed_quick
if ($gpg->is_signed(entity => $entity)) {
$scan->{openpgp_signed} = 1;
dbg "openpgp: is signed";
}
if ($gpg->is_encrypted(entity => $entity)) {
$scan->{openpgp_encrypted} = 1;
dbg "openpgp: is encrypted";
}
if ($scan->{openpgp_signed}) {
my $result = $gpg->verify(entity => $entity);
if (!$result->get_is_signed) {
warn "openpgp: \$gpg->is_signed != \$result->get_is_signed";
$scan->{openpgp_signed} = 1;
} else {
#dbg "openpgp: " . $result->as_string();
if (${$result->get_gpg_stdout}) {
dbg "openpgp: gpg stdout:" . ${$result->get_gpg_stdout};
}
if (${$result->get_gpg_stderr}) {
dbg "openpgp: gpg stderr:" . ${$result->get_gpg_stderr};
}
if ($result->get_gpg_rc != 0) {
my $err = "Error running gpg: " . ${$result->get_gpg_stdout} . ${$result->get_gpg_stderr};
dbg "openpgp: $err";
if ($scan->{conf}->{openpgp_add_header_fingerprint}) {
$scan->{conf}->{headers_spam}->{'OpenPGP-Failure'} = $err;
$scan->{conf}->{headers_ham}->{'OpenPGP-Failure'} = $err;
}
} else {
$scan->{openpgp_fingerprint} = _gpg_result_primary_key_fingerprint($result);
$scan->{openpgp_signed_good} = $result->get_sign_ok;
$scan->{openpgp_signed_bad} = !$result->get_sign_ok;
if ($scan->{conf}->{openpgp_add_header_fingerprint}) {
$scan->{conf}->{headers_spam}->{'OpenPGP-Fingerprint'} = $scan->{openpgp_fingerprint};
$scan->{conf}->{headers_ham}->{'OpenPGP-Fingerprint'} = $scan->{openpgp_fingerprint};
}
}
if ($scan->{openpgp_signed_bad}) {
my $err = "bad signature: " . ${$result->get_gpg_stderr};
dbg "openpgp: $err";
if ($scan->{conf}->{openpgp_add_header_fingerprint}) {
$scan->{conf}->{headers_spam}->{'OpenPGP-Failure'} = $err;
$scan->{conf}->{headers_ham}->{'OpenPGP-Failure'} = $err;
}
lib/Mail/SpamAssassin/Plugin/OpenPGP.pm view on Meta::CPAN
}
}
if ($scan->{openpgp_signed_good}) {
# date of email must be close to that of the signature
my $sent_date = Mail::SpamAssassin::Util::parse_rfc822_date($scan->get('Date'));
my $signature_date = _gpg_result_date($result);
# TODO configurable threshold
my $threshold = 60*60;
if (abs($sent_date - $signature_date) > $threshold) {
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Mail/SpamAssassin/Util/DependencyInfo.pm view on Meta::CPAN
It's only a concern if you are warned about all 3
i.e. (curl, wget & fetch) missing";
our @OPTIONAL_BINARIES = (
{
binary => 'gpg',
version => '0',
recommended_min_version => '1.0.6',
version_check_params => '--version',
version_check_regex => 'gpg \(GnuPG\) ([\d\.]*)',
desc => 'The "sa-update" program requires this executable to verify
encryption signatures. It is not recommended, but you can use
"sa-update" with the --no-gpg to skip the verification. ',
},
{
binary => 'wget',
version => '0',
recommended_min_version => '1.8.2',
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Mail/SpamCannibal/GoodPrivacy.pm view on Meta::CPAN
wrapper around 'pgp2x', 'pgp6x', or 'gnupg'
that provides encryption and decryption for
IPTable::IPv4::DBTables::SpamCannibal.
Mail::SpamCannibal::GoodPrivacy has been tested using pgp-2.6.2g, pgp-6.5.8,
and gpg-1.2.2 on RSA keys generated by pgp-2.6.2g which are included with
this distribution.
Utilities to verify that a message has PGP encrypted content prior to
decryption so that plain text messages are not inadvertently passed to the
decrypt program;
lib/Mail/SpamCannibal/GoodPrivacy.pm view on Meta::CPAN
input: a hash or hash pointer
return: plaintext or '' on error
%hash = (
Data => $data,
ExeFile => '/usr/local/bin/gpg',
KeyPath => './',
Password => 'sometext',
UserID => '',
Version => '',
);
Data: data to decrypt
ExeFile: location of executable
i.e. /usr/local/bin/pgp
/usr/local/bin/gpg
WARNING: use appropriate default
keyring names.
KeyPath: directory for keyrings
lib/Mail/SpamCannibal/GoodPrivacy.pm view on Meta::CPAN
i.e. 'test' or
E56C91B9 as displayed by
pgp -kv ./keyrings/secring.pgp
or
ENVGPGHOME=./keyrings gpg --list-secret-keys
Version: Version compliance (gpg only)
(none) for standard gpg,
2.6x and 6.x for pgp support
=cut
## test the input array
lib/Mail/SpamCannibal/GoodPrivacy.pm view on Meta::CPAN
if ($pgpcmd =~ m|/pgp[^/]*$|) {
$pgpcmd .= ' -f +batchmode +force 2>/dev/null';
$ENV{PGPPATH} = $me->{KeyPath};
$ENV{PGPPASS} = $me->{Password};
}
elsif( $pgpcmd =~ m|/gpg[^/]*$|) {
$data .= $me->{Password}."\n";
$pgpcmd .= ' --pgp2' if $me->{Version} =~ /^2\./;
$pgpcmd .= ' --pgp6' if $me->{Version} =~ /^6\./;
$pgpcmd .= ' --decrypt --batch --passphrase-fd 0 2>/dev/null';
$ENV{GNUPGHOME} = $me->{KeyPath};
}
else {
die "could not find pgp or gpg executable\n";
}
$data .= $me->{Data};
my $rv = '';
lib/Mail/SpamCannibal/GoodPrivacy.pm view on Meta::CPAN
=item NOTE: in all cases the default key file required.
PGP 2.6.x pubring.pgp, secring.pgp
PGP 6.5.8 pubring.pkr, secring.skr
GnuPG pubring.gpg, secring.gpg
=back
=head1 EXPORT_OK
view all matches for this distribution
view release on metacpan or search on metacpan
bin/install_deps.pl view on Meta::CPAN
'cache_metadata' => q[1],
'cpan_home' => qq[$ENV{HOME}/.cpan],
'ftp' => $ftp,
'ftp_proxy' => q[],
'getcwd' => q[cwd],
'gpg' => q[],
'gzip' => $gzip,
'histfile' => qq[$ENV{HOME}/.cpan/histfile],
'histsize' => q[100],
'http_proxy' => q[],
'inactivity_timeout' => q[5],
view all matches for this distribution
view release on metacpan or search on metacpan
SHA1 3f74c39bb9c8b903b962282f1fccc06daa89d877 t/05-trans.t
SHA1 7f5b34ec98977e2eae7ab0cd530a16f726fc33a2 t/06_digit_dot.t
SHA1 19e797985fada8c25f13ce5f0fb873999c3cbe44 t/99_podcoverage.t
SHA1 fa45d6e6ab1cd421349dea4ef527bfd5cdc8a09e t/author-critic.t
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
iF0EARECAB0WIQSty9sFtA6yoqVVVGKCu8wEt++UdgUCWTjgQAAKCRCCu8wEt++U
dvQ7AJ9RNWjwwDc3W6AcEjd4czwCvYKKeQCcCCYaV9O4XnQR/RCYmebPHBbU4O4=
=4ZyA
-----END PGP SIGNATURE-----
view all matches for this distribution
view release on metacpan or search on metacpan
SHA256 334ef06155ec886e4592639219b0227e330d969019a9ac25e0c633e4be1b38f3 xt/release/unused-vars.t
SHA256 79e228dfe3193c0f2b5f9afaa6677062ef33ac9c9578e0e6c5a627696c319982 xt/release/version.t
-----BEGIN PGP SIGNATURE-----
iQEzBAEBAwAdFiEETKm/EiRoNYMVDAUYZyY+XZ+vXroFAmfjvIQACgkQZyY+XZ+v
XrrQjQgAzRFAlfzI2Bprrqy1kJ5urXgpgQNDztML4+tv7Vg3GvEblEBDURB/qPyb
rAS0wDtc9HGwq3Mmkpu88jnD02ei9WaWH7Ra0gzjeFQVRkwF7PQlC+dPeh1WXO6h
wK36oG4OnebVwsU+SjiGCpnd9spnJwAJ5PY4wfYMwTzzuzyk+bzFa1y82OWCaFix
Y8KtCqI8fMjXawQQMXYytfIDUzTRmMXURDFz/r/OWWPtdGL/nkeYLGDSPb3Vo/vi
4E+MZKR2UuMa2w2SyOvsoETChsUTyNX/DWWBa1/iY0FnFUdtSDzVM/c7XzjL+3Pt
/vTiwLz+O/Fg8Ad2itVFNLKLpNDJOA==
view all matches for this distribution
view release on metacpan or search on metacpan
xtools/my-kwalitee.sh view on Meta::CPAN
if test -z "$DISTVNAME"; then
echo "DISTVNAME not found"
exit 1
fi
if [ -e ~/bin/my-gpg-agent-daemon ]; then
eval `my-gpg-agent-daemon`
echo "gpg-agent $GPG_AGENT_INFO"
fi
TGZ="$DISTVNAME.tar.gz"
make "$TGZ"
view all matches for this distribution
view release on metacpan or search on metacpan
xtools/my-kwalitee.sh view on Meta::CPAN
if test -z "$DISTVNAME"; then
echo "DISTVNAME not found"
exit 1
fi
if [ -e ~/bin/my-gpg-agent-daemon ]; then
eval `my-gpg-agent-daemon`
echo "gpg-agent $GPG_AGENT_INFO"
fi
TGZ="$DISTVNAME.tar.gz"
make "$TGZ"
view all matches for this distribution
view release on metacpan or search on metacpan
xtools/my-kwalitee.sh view on Meta::CPAN
if test -z "$DISTVNAME"; then
echo "DISTVNAME not found"
exit 1
fi
if [ -e ~/bin/my-gpg-agent-daemon ]; then
eval `my-gpg-agent-daemon`
echo "gpg-agent $GPG_AGENT_INFO"
fi
TGZ="$DISTVNAME.tar.gz"
make "$TGZ"
view all matches for this distribution
view release on metacpan or search on metacpan
t/output.images/imshow.multiple.svg view on Meta::CPAN
z
" style="fill: #ffffff"/>
</g>
<g clip-path="url(#pfd7f11e238)">
<image xlink:href="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAA48AAANKCAYAAAAqTHsIAAEAAElEQVR4nOy92brkqM4FKPbJB+kH7ot+4T/VF0bS0gTYEXvIrFR9ldsBmsA2YlkYj//n//t/mf7RP/pH/+gf/aN/9I/+0T/6R//oH/2jBf2i8d0u/KP/NP17dJHpX5/8o2+gQfTv2vtHJfG/ecI/+g76d91l+tcn/+gH0K9/QeGifxOnb6JB//r9HyX6dz9+E/3r838UaR...
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_1">
<defs>
t/output.images/imshow.multiple.svg view on Meta::CPAN
z
" style="fill: #ffffff"/>
</g>
<g clip-path="url(#p2f8affbbdf)">
<image xlink:href="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAA48AAANKCAYAAAAqTHsIAAEAAElEQVR4nOy92brkqM4FKPbJB+kH7ot+4T/VF0bS0gTYEXvIrFR9ldsBmsA2YlkYj//n//t/mf7RP/pH/+gf/aN/9I/+0T/6R//oH/2jBf2i8d0u/KP/NP17dJHpX5/8o2+gQfTv2vtHJfG/ecI/+g76d91l+tcn/+gH0K9/QeGifxOnb6JB//r9HyX6dz9+E/3r838UaR...
</g>
<g id="matplotlib.axis_3">
<g id="xtick_9">
<g id="line2d_17">
<g>
t/output.images/imshow.multiple.svg view on Meta::CPAN
z
" style="fill: #ffffff"/>
</g>
<g clip-path="url(#pf43a3efc33)">
<image xlink:href="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAA48AAANKCAYAAAAqTHsIAAEAAElEQVR4nOy92brkqM4FKPbJB+kH7ot+4T/VF0bS0gTYEXvIrFR9ldsBmsA2YlkYj//n//t/mf7RP/pH/+gf/aN/9I/+0T/6R//oH/2jBf2i8d0u/KP/NP17dJHpX5/8o2+gQfTv2vtHJfG/ecI/+g76d91l+tcn/+gH0K9/QeGifxOnb6JB//r9HyX6dz9+E/3r838UaR...
</g>
<g id="matplotlib.axis_5">
<g id="xtick_17">
<g id="line2d_33">
<g>
t/output.images/imshow.multiple.svg view on Meta::CPAN
z
" style="fill: #ffffff"/>
</g>
<g clip-path="url(#p6e2be4edaa)">
<image xlink:href="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAA48AAANKCAYAAAAqTHsIAAEAAElEQVR4nOy92brkqM4FKPbJB+kH7ot+4T/VF0bS0gTYEXvIrFR9ldsBmsA2YlkYj//n//t/mf7RP/pH/+gf/aN/9I/+0T/6R//oH/2jBf2i8d0u/KP/NP17dJHpX5/8o2+gQfTv2vtHJfG/ecI/+g76d91l+tcn/+gH0K9/QeGifxOnb6JB//r9HyX6dz9+E/3r838UaR...
</g>
<g id="matplotlib.axis_7">
<g id="xtick_25">
<g id="line2d_49">
<g>
view all matches for this distribution
view release on metacpan or search on metacpan
=item *
Get my key from http://bloodgate.com/tels.asc, import it into
GnuPG with:
gpg --import tels.asc
You may also let the C<cpansign> utility fetch it automatically
from a keyserver, if that works for you.
=item *
view all matches for this distribution
view release on metacpan or search on metacpan
Meta/Baseline/base_aegi_backup.pl view on Meta::CPAN
}
Meta::Utils::Output::verbose($verb,"finished tarring\n");
$scod=$tar->write($dirf."/".$tarf);
if($enc) {
# my($author)=Meta::Info::Author->new_modu($author_file);
# my($enc_file)=$dirf."/".$tarf.".gpg";
# my($gpg)=GnuPG->new();
# Meta::Utils::Output::verbose($verb,"started encrypting\n");
# $gpg->encrypt(
# plaintext=>$dirf."/".$tarf,
# output=>$enc_file,
# recipient=>$author->get_default_email(),
# armor=>$armor,
# sign=>$sign,
Meta/Baseline/base_aegi_backup.pl view on Meta::CPAN
# Meta::Utils::Output::verbose($verb,"finished encrypting\n");
# if($send) {
# Meta::Utils::Output::verbose($verb,"started sending\n");
# my($user)=$author->get_sourceforge_user();
# my($host)=$author->get_sourceforge_ssh();
# my($addr)=$user."@".$host.":".$remote_dir."/".$tarf.".gpg";
# Meta::Utils::Output::verbose($verb,"addr is [".$addr."]\n");
# my($scp)=Net::SCP->new($host,$user);
# my($res)=$scp->scp($enc_file,$addr);
# Meta::Utils::Output::verbose($verb,"res is [".$res."]\n");
# if(!$res) {
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Metabrik/Crypto/Gpg.pm view on Meta::CPAN
#
# $Id$
#
# crypto::gpg Brik
#
package Metabrik::Crypto::Gpg;
use strict;
use warnings;
lib/Metabrik/Crypto/Gpg.pm view on Meta::CPAN
revision => '$Revision$',
tags => [ qw(unstable pgp gnupg) ],
author => 'GomoR <GomoR[at]metabrik.org>',
license => 'http://opensource.org/licenses/BSD-3-Clause',
attributes => {
public_keyring => [ qw(file.gpg) ],
secret_keyring => [ qw(file.gpg) ],
passphrase => [ qw(passphrase) ],
type_key => [ qw(RSA|DSA) ],
type_subkey => [ qw(RSA|ELG-E) ],
length_key => [ qw(1024|2048|3072|4096) ],
length_subkey => [ qw(1024|2048|3072|4096) ],
expire_key => [ qw(count_y|0) ],
_gnupg => [ qw(INTERNAL) ],
},
attributes_default => {
public_keyring => $ENV{HOME}."/.gnupg/pubring.gpg",
secret_keyring => $ENV{HOME}."/.gnupg/secring.gpg",
type_key => 'DSA',
type_subkey => 'ELG-E',
length_key => 2048,
length_subkey => 3072,
expire_key => '5y',
lib/Metabrik/Crypto/Gpg.pm view on Meta::CPAN
__END__
=head1 NAME
Metabrik::Crypto::Gpg - crypto::gpg Brik
=head1 COPYRIGHT AND LICENSE
Copyright (c) 2014-2022, Patrice E<lt>GomoRE<gt> Auffret
view all matches for this distribution
view release on metacpan or search on metacpan
SHA1 d8a904a35375aca0e02c9150fb1945c53bdeb7e0 t/release-kwalitee.t
SHA1 5cf386f49901e8ccaad5ab271036754d67114081 t/release-pod-coverage.t
SHA1 dc3eefcab3399f9a70861c332bb4a81ddcbb45e4 t/release-pod-syntax.t
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: GPGTools - http://gpgtools.org
iQIcBAEBAgAGBQJVONtWAAoJEHwWRyBU62lqGfsQAIiFHRdp/kKapmMAIGRjkDiZ
6pj1e2QKwLwadE0oypPVDr74bhC+/oWPfv6r72gUm79syHSoF/Uosoqmy7bO3Fy5
FS1GdBqJTV+hOpaGkTjobHpcUAf09+MNMf/G6JW06sHBAPcmlOoeQVBBTo/Mwf2k
POLjWsaPWypFYizZW0h011IBJKNxsrcLwOZpAWt5T4FjeR35i2UbA/5ziRmONh+T
view all matches for this distribution
view release on metacpan or search on metacpan
* Remove spurious error for modifiers in roles [github #36]
20110923.1726 Fri Sep 23 17:27:47 PDT 2011
Distribution Fixes
* 20110923 had a bad signature file because gpg is broken on my laptop.
Releasing without a signature. 1 aM n0t A hax0r!!!1!1!
20110923 Fri Sep 23 16:13:46 PDT 2011 [It Takes All Types]
Incompatible Changes
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Module/Release/VerifyGPGSignature.pm view on Meta::CPAN
use warnings;
no warnings;
use Exporter qw(import);
our @EXPORT = qw(check_all_gpg_signatures check_gpg_signature);
our $VERSION = '0.002';
=encoding utf8
lib/Module/Release/VerifyGPGSignature.pm view on Meta::CPAN
=head1 DESCRIPTION
Configure in F<.releaserc> as a list of pairs:
gpg_signatures \
file.txt file.txt.gpg \
file2.txt file2.txt.gpg
=over 4
=cut
lib/Module/Release/VerifyGPGSignature.pm view on Meta::CPAN
push @pairs, [ @$args ] if @$args;
\@pairs
}
sub _key ( $self ) { 'gpg_signatures' }
=item * check_all_gpg_signatures
Go through all files and signature files listed in the C<gpg_signatures>
and verify that the signatures match.
=cut
sub check_all_gpg_signatures ( $self ) {
my $pairs = $self->_get_file_pairs;
foreach my $pair ( $pairs->@* ) {
$self->check_gpg_signature( $pair->@* )
}
return 1;
}
=item * check_gpg_signature( FILE, SIGNATURE_FILE )
Checks the PGP signature in SIGNATURE_FILE matches for FILE.
=cut
sub check_gpg_signature ( $self, $file, $signature_file ) {
$self->_print( "Checking GPG signature of <$file>...\n" );
$self->_die( "\nERROR: Could not verify signature of <$file>: file does not exist\n" )
unless -e $file;
$self->_die( "\nERROR: Could not verify signature of <$file> with <$signature_file>: signature file does not exist\n" )
unless -e $signature_file;
my $result = $self->run( qq(gpg --verify "$signature_file" "$file" 2>&1) );
$result =~ s/^/ /mg;
$self->_print( "$result" );
unless( $result =~ /\bGood signature from\b/ ) {
$self->_die( "\nERROR: signature verification failed" );
lib/Module/Release/VerifyGPGSignature.pm view on Meta::CPAN
=head1 SOURCE AVAILABILITY
This source is in Github:
http://github.com/briandfoy/module-release-verifygpgsignature
=head1 AUTHOR
brian d foy, C<< <brian d foy> >>
view all matches for this distribution
view release on metacpan or search on metacpan
script/release view on Meta::CPAN
If there are modified files, added files, or extra files so that
source control complains, fail.
=item Check that any GPG signatures are correct
If C<gpg_signatures> is present in the config, load
L<Module::Release::VerifyGPGSignature> and verify the configured
signatures.
=item Upload to PAUSE
script/release view on Meta::CPAN
$release->_debug( "dist version is <$Version>\n" );
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# check anything signed by GPG
if( $release->config->gpg_signatures ) {
$release->_print("============ Checking GPG signatures\n");
$release->load_mixin('Module::Release::VerifyGPGSignature');
$release->check_all_gpg_signatures;
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# test with a bunch of perls
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Module/Signature.pm view on Meta::CPAN
$sock->shutdown(2) if $sock;
}
$AutoKeyRetrieve = $CanKeyRetrieve;
}
if (my $version = _has_gpg()) {
return _verify_gpg($sigtext, $plaintext, $version);
}
elsif (eval {require Crypt::OpenPGP; 1}) {
return _verify_crypt_openpgp($sigtext, $plaintext);
}
else {
warn "Cannot use GnuPG or Crypt::OpenPGP, please install either one first!\n";
return _compare($sigtext, $plaintext, CANNOT_VERIFY);
}
}
sub _has_gpg {
my $gpg = _which_gpg() or return;
`$gpg --version` =~ /GnuPG.*?(\S+)\s*$/m or return;
return $1;
}
sub _fullcheck {
my $skip = shift;
lib/Module/Signature.pm view on Meta::CPAN
or /^_build\// or /^Build$/ or /^pmfiles\.dat/
or /^MYMETA\./
or /~$/ or /\.old$/ or /\#$/ or /^\.#/;
}
my $which_gpg;
sub _which_gpg {
# Cache it so we don't need to keep checking.
return $which_gpg if $which_gpg;
for my $gpg_bin ('gpg', 'gpg2', 'gnupg', 'gnupg2') {
my $version = `$gpg_bin --version 2>&1`;
if( $version && $version =~ /GnuPG/ ) {
$which_gpg = $gpg_bin;
return $which_gpg;
}
}
}
sub _verify_gpg {
my ($sigtext, $plaintext, $version) = @_;
local $SIGNATURE = Win32::GetShortPathName($SIGNATURE)
if defined &Win32::GetShortPathName and $SIGNATURE =~ /[^-\w.:~\\\/]/;
lib/Module/Signature.pm view on Meta::CPAN
require File::Temp;
my $fh = File::Temp->new();
print $fh $sigtext || _read_sigfile($SIGNATURE);
close $fh;
my $gpg = _which_gpg();
my @quiet = $Verbose ? () : qw(-q --logger-fd=1);
my @cmd = (
$gpg, qw(--verify --batch --no-tty), @quiet, ($KeyServer ? (
"--keyserver=$keyserver",
($AutoKeyRetrieve and $version ge '1.0.7')
? '--keyserver-options=auto-key-retrieve'
: ()
) : ()), $fh->filename
lib/Module/Signature.pm view on Meta::CPAN
local $/ = "\n";
print "$SIGNATURE already exists; overwrite [y/N]? ";
return unless <STDIN> =~ /[Yy]/;
}
if (my $version = _has_gpg()) {
_sign_gpg($SIGNATURE, $plaintext, $version);
}
elsif (eval {require Crypt::OpenPGP; 1}) {
_sign_crypt_openpgp($SIGNATURE, $plaintext);
}
else {
lib/Module/Signature.pm view on Meta::CPAN
warn "==> SIGNATURE file created successfully. <==\n";
return SIGNATURE_OK;
}
sub _sign_gpg {
my ($sigfile, $plaintext, $version) = @_;
die "Could not write to $sigfile"
if -e $sigfile and (-d $sigfile or not -w $sigfile);
my $gpg = _which_gpg();
my $gpg_fh;
my $set_key = '';
$set_key = qq{--default-key "$AUTHOR"} if($AUTHOR);
open ($gpg_fh, '|-', "$gpg $set_key --clearsign --openpgp --personal-digest-preferences RIPEMD160 >> $sigfile.tmp")
or die "Could not call $gpg: $!";
print $gpg_fh $plaintext;
close $gpg_fh;
(-e "$sigfile.tmp" and -s "$sigfile.tmp") or do {
unlink "$sigfile.tmp";
die "Cannot find $sigfile.tmp, signing aborted.\n";
};
lib/Module/Signature.pm view on Meta::CPAN
unlink("$sigfile.tmp");
my $key_id;
my $key_name;
my @verify = `$gpg --batch --logger-fd 1 --verify $SIGNATURE`;
foreach (@verify) {
if (/key(?: ID)? ([0-9A-F]+)$/) {
$key_id = $1;
} elsif (/signature from "(.+)"(?: \[[a-z]+\])?$/) {
$key_name = $1;
lib/Module/Signature.pm view on Meta::CPAN
}
my $found_name;
my $found_key;
if (defined $key_id && defined $key_name) {
my $keyserver = _keyserver($version);
foreach (`$gpg --output - --keyserver=$keyserver --recv-key '$key_id' 2>&1`) {
if (/^\(\d+\)/) {
$found_name = 0;
} elsif ($key_id) {
my $short_key_id = substr($key_id, (length($key_id) - 16));
if (/key \Q$short_key_id\E/) {
lib/Module/Signature.pm view on Meta::CPAN
=over 4
=item $Verbose
If true, Module::Signature will give information during processing including
gpg output. If false, Module::Signature will be as quiet as possible as
long as everything is working ok. Defaults to false.
=item $SIGNATURE
The filename for a distribution's signature file. Defaults to
C<SIGNATURE>.
=item $AUTHOR
The key ID used for signature. If empty/null/0, C<gpg>'s configured default ID,
or the most recently added key within the secret keyring for C<Crypt::OpenPGP>,
will be used for the signature.
=item $KeyServer
The OpenPGP key server for fetching the author's public key
(currently only implemented on C<gpg>, not C<Crypt::OpenPGP>).
May be set to a false value to prevent this module from
fetching public keys.
=item $KeyServerPort
view all matches for this distribution
view release on metacpan or search on metacpan
docker-image/Dockerfile view on Meta::CPAN
MAINTAINER sjdy521 <sjdy521@163.com>
WORKDIR /root
USER root
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN yum -y --nogpgcheck install \
make \
unzip \
wget \
tar \
perl \
view all matches for this distribution
view release on metacpan or search on metacpan
docker-image/Dockerfile view on Meta::CPAN
MAINTAINER sjdy521 <sjdy521@163.com>
WORKDIR /root
USER root
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN yum -y --nogpgcheck install \
gcc \
make \
unzip \
wget \
tar \
view all matches for this distribution
view release on metacpan or search on metacpan
t/command.t view on Meta::CPAN
@@ about.html.ep
<h1>About</h1>
<a href="/">Back to home</a>
@@ logo-white-2x.png (base64)
iVBORw0KGgoAAAANSUhEUgAAAUIAAABMCAYAAAAY0L5YAAABG2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSRE...
view all matches for this distribution