view release on metacpan or search on metacpan
=for gpg
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
=head1 NAME
you make improvements to this software, I ask that you please send me
a copy of your changes. Thanks.
=cut
=begin gpg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQE+hmOuY96i4h5M0egRAtFvAJ94wqEA6stWYPYxOEGGXbFzAKOnrwCgqPNS
MuQPZv8XxmFFeAa7OvAF4mk=
=ltgt
-----END PGP SIGNATURE-----
=end gpg
view all matches for this distribution
view release on metacpan or search on metacpan
htmlgen/FunctionalPerl/Htmlgen/Sourcelang.pm view on Meta::CPAN
$perl += 1 if $str =~ /\}\s*elsif\s*\{/;
$perl += 1 if $str =~ /\bexists\s*\$\w+\s*\{/;
$perl += 1 if $str =~ /\bcons\s*\$/;
$sh += 2
if $str =~ m{(?:^|\n)\s*(?:[#\$]\s*)?(?:git |gpg |ls |chmod |cd |\./)};
# Want repl sessions to be non highlighted? Do I ?
$sh += 10 if $str =~ m{(?:^|\n) *main> };
($perl >= 1 and $perl > $sh) ? "Perl" : "shell"
view all matches for this distribution
view release on metacpan or search on metacpan
resources/esx-4.1.0-1/RetrieveProperties.soap view on Meta::CPAN
<soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<RetrievePropertiesResponse xmlns="urn:vim25"><returnval><obj type="HostSystem">ha-host</obj><propSet><name>availableField</name><val xsi:type="ArrayOfCustomFieldDef"></val></propSet><propSet><name>capability</name><val xsi:type="HostCapability"><rec...
</soapenv:Body>
</soapenv:Envelope>
view all matches for this distribution
view release on metacpan or search on metacpan
t/corpus/gdpr_subset.txt view on Meta::CPAN
CP9_GsAQOT54AAHABBENBgFsAP_gAEPgAAAAKANH_D7fbWtr8X53YfsUcY0P5dj55uQxBgbBA-IFDJKQsJwWhmA5JAzgNKAKGBIAMmZBIQNlGIFQSUAAYIgBKQHMKAyQJBAIIiAAiAIBAwJICAgrCoggMQAIgWJEEFUAmAgBQFJoWNgAhgBChSCRIAABAICBAwCoAFEgRAEYAQAIQCxAAwIAqAwAAEsAABkoEQABAAACIoACAAACBRAAQA...
CP9hcQAQJx3YAAHABBENBSFsAP_gAEPgAAiQKqNX_H__bW9r8X73aft0eY1P9_j77sQxBhfJE-4FzLvW_JwXx2ExNA36tqIKmRIEu3bBIQNlHJDUTVigaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993dx2D-t_dv83dzyz41Hn3a5_2e0WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-ct8__XW_9_fff_...
CP9HEwAQLlOMAAHABBENBZFsAP_gAEPgAAAAKANH_D7fbWtr8X53YfsUcY0P5dj55sQxBgbBA-IFDJKQsJwWhmAxJAzgNKAKGBIAMmZBIQNlGIBQSUAAYIgBKQDMKAyQIBAIIiAAiAIBAwJICAgrCgggMQAIgGJEEFUAmAgBQFJoGNgAhgBChSCRIAAAAICBAwCoAFEgRAEYAQAIQCxAAwIAqAwAAEsAABkoEQABAAACIoACAAACBRAAQA...
CP9HEwAQPpmQAAHABBENBkFsAP_gAAAAAAAAK_tX_H__bX9r8X736ft0eY1f99j77sQxBhfJk-4FzLvW_JwX32E7NA36tqYKmRIEu3bBIQNlHJDUTVigaogVrzDMak2coTtKJ6BkiFMRe2dYCF5vm4tj-QKY5vr993d52R-9_dv83dzyz41nv3a9_-e1WJCdA5-tDfv_bROb-9IP9_58v4v8_N_rE2_eT1l_tevp7D9-ft___X3_9_fff_...
CP9kvMAQLlOMAAHABBENBZFsAP_gAEPgAAAAKANH_D7fbWtr8X53YfsUcY0P5dj55sQxBgbBA-IFDJKQsJwWhmAxJAzgNKAKGBIAMmZBIQNlGIBQSUAAYIgBKQDMKAyQIBAIIiAAiAIBAwJICAgrCgggMQAIgGJEEFUAmAgBQFJoGNgAhgBChSCRIAAAAICBAwCoAFEgRAEYAQAIQCxAAwIAqAwAAEsAABkoEQABAAACIoACAAACBRAAQA...
CP9kvMAQO4KMAAHABBENBiFsAP_gAEPgAAAAK8tX_G__bWlr8X73aftkeY1P9_h77sQxBhfJE-4FzLvW_JwXx2E5NA36tqIKmRIAu3TBIQNlHJDURVCgaogVryDMaEyUoTNKJ6BkiFMRM2dYCFxvm4tj-QCY5vr991cx2B-t7dr83dzyy4xHn3a5_2S1WJCdA5-tDfv9bROb-9IOd_x8v4v4_F_pE2_eT1l_tWvp7D9-cts__X299_fff_...
CP9NqoAQMGLkAAHABBENBaFsAP_gAEPgAAiQKxtX_H__bW9r8X73aft0eY1P9_j77sQxBhfJE-4FzLvW_JwXx2E5NA36tqIKmRIEu3bBIQNlHJDUTVigaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993dx2D-t_dv83dzyz41Hn3a5_2e0WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-ct8__XW_9_fff_...
CP9NqoAQNpDsAAHABBENBeFsAP_gAEPgAAAAK3tX_H__bW9r8X73aft0eY1P99j77sQxBhfJE-4FzLvW_JwXx2E5NA36tqIKmRIEu3bBIQNlHJDUTVigaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993dx2D-t_dv83dzyz41Hn3a5_2e1WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-ct8__XW_9_fff_...
CP9oCIAQNb38AAHABBENBeFsAP_gAAAAAAAAK3tX_H__bX9r8X736ft0eY1f9_j77sQxBhfJk-4FzLvW_JwX32E7NA36tqYKmRIEu3bBIQNlHJDUTVigaogVrzDMak2coTtKJ6BkiFMRe2dYCF5vm4tj-QKY5vr993d52T-9_dv83dzyz41nv3a9_-e1WJCdA5-tDfv_bROb-9IP9_58v4v8_N_rE2_eT1l_tevp7D9-ct___XX_9_fff_...
CP9oCIAQNLZQAAHABBENBdFsAP_gAAAAAAAAK1tX_H__bX9r8X736ft0eY1f9_j77sQxBhfJk-4FzLvW_JwX32E7NA36tqYKmRIEu3bBIQNlHJDUTVigaogVrzDMak2coTtKJ6BkiFMRe2dYCF5vm4tj-QKY5vr993d52T-9_dv83dzyz41nv3a9_-e1WJCdA5-tDfv_bROb-9IP9_58v4v8_N_rE2_eT1l_tevp7D9-ct___XX_9_fff_...
CP9Q9kAQJ4dQAAHABBENBSFsAP_gAEPgAAiQKqNX_H__bW9r8X73aft0eY1P9_j77sQxBhfJE-4FzLvW_JwXx2ExNA36tqIKmRIEu3bBIQNlHJDUTVigaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993dx2D-t_dv83dzyz41Hn3a5_2e0WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-ct8__XW_9_fff_...
t/corpus/gdpr_subset.txt view on Meta::CPAN
CP_h-0AQLvHAAAHABBENBZFsAP_gAEPgAAAAKANH_D7fbWlr8X53YfsEcY0P5dj55sQxBgbBA-IFDJKQsJwWhmAxJAzgNKAKGBIAMmZBIQNlGIBQSUAAYIgBKQDMKAyQIBAIIiAAiAIBAwJICAgrCgggMQAIgGJEEFUAmAgBQFJoGNgAhgBChSCRIAAAAICBAwCoAFEgRAEYAQAIQCxAAwIAqAwAAEsAABkoEQABAAACIoACAAACBRAAQA...
CP_HnUAQJ1KUAAHABBENBSFsAP_gAEPgAAiQKqNX_G__bWlr8X73aftkeY1P9_h77sQxBhfJE-4FzLvW_JwXx2ExNA36tqIKmRIEu3bBIQNlHJDUTVCgaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993dx2B-t_dv83dzyz41Hn3a5_2e0WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-cts__XW_9_fff_...
CP_HnUAQJ4dQAAHABBENBSFsAP_gAEPgAAiQKqNX_H__bW1r8X73aftkeY1P9_j77sQxBhfJE-4FzLvW_JwXx2ExNA36tqIKmRIEu3bBIQNlHJDUTVCgaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993dx2D-t_dv83dzyz41Hn3a5_2e0WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-cts__XW_9_fff_...
CP_HnUAQPwMIAAHABBENBkFsAP_gAAAAAAAAK_tX_G__bXlr8X736ftkeY1f99h77sQxBgbJk-4FzLvW_JwX32E7NAz6tqYKmRIAu3bBIQNlHJDURVCgaogVrTDMaEyUoTtKJ6BkiFMRY2dYCFxvm4tjeQCY5vr991d52R-t7dr83dzyy4hnv3a9_-S1WJCdAYetDfv8bROb-9IO9_x8v4v4_N7pE2_eS1l_tWvp7D9-Ytv_9X3_9_bbff...
CP-I_gAQJx3YAAHABBENBSFsAP_gAEPgAAiQKqNX_H__bW1r8X73aft0eY1P9_j77sQxBhfJE-4FzLvW_JwXx2ExNA36tqIKmRIEu3bBIQNlHJDUTVCgaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993dx2D-t_dv83dzyz41Hn3a5_2e0WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-ct8__XW_9_fff_...
CP-jXAAQO03QAAHABBENBiFsAP_gAEPgAAiQK8tX_H__bW1r8X73aftkeY1P9_j77sQxBhfJE-4FzLvW_JwXx2E5NA36tqIKmRIEu3bBIQNlHJDUTVCgaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993cx2B-t_dv83dzyz41Hn3a5_2e1WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-cts__X2_9_fff_...
CP-jXAAQPs5MAAHABBENBkFsAP_gAEPAAAAAK_tX_G__bXlr8X736ftkeY1f9_h77sQxBhfJk-4FzLvW_JwX32E7NA36tqYKmRIAu3bBIQNlHJDUTVCgaogVrzDMak2coTtKJ6BkiFMRe2dYCF5vm4tj-QKY5vr993d52R-9_dr83dzyz41nv3a9_-a1WJCdA5-tDfv_bROb-9IO9_58v4v8_N_rE2_eT1l_tevp7D9-ctv__X3_9_fff_...
CP_K6QAQPFV8AAHABBENBiFsAP_gAAAAAAAAK8tX_H__bX1r8X736ft0eY1f9_j77sQxBhfJk-4FzLvW_JwX32E7NA36tqYKmRIEu3bBIQNlHJDUTVCgaogVrzDMak2coTtKJ6BkiFMRe2dYCF5vm4tj-QKY5vr993d52R-9_dv83dzyz41nv3a9_-e1WJCdA5-tDfv_bROb-9IP9_58v4v8_N_rE2_eT1l_tevp7D9-ct___X3_9_fff_...
CP_lRwAQJ1KUAAHABBENBSFsAP_gAEPgAAiQKqNX_H__bW1r8X73aftkeY1P9_j77sQxBhfJE-4FzLvW_JwXx2ExNA36tqIKmRIEu3bBIQNlHJDUTVCgaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993dx2D-t_dv83dzyz41Hn3a5_2e0WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-cts__XW_9_fff_...
CP_lRwAQMC4oAAHABBENBaFsAP_gAEPgAAAAKANH_D7fbWlr8X53YfsEcY0P5dj55sQxBgbBA-IFDJKQsJwWhmA5JAzgNKAKGBIAMmZBIQNlGIBQSUAAYIgBKQDMKAyQIBAIIiAAiAIBAwJICAgrCgggMQAIgGJEEFUAmAgBQFJoGNgAhgBChSCRIAAAAICBAwCoAFEgRAEYAQAIQCxAAwIAqAwAAEsAABkoEQABAAACIoACAAACBRAAQA...
CP_lRwAQNVSEAAHABBENBeFsAP_gAEPgAAAAK3tX_H__bW1r8X73aftkeY1P9_j77sQxBhfJE-4FzLvW_JwXx2E5NA36tqIKmRIEu3bBIQNlHJDUTVCgaogVryDMak2coTNKJ6BkiFMRO2dYCF5vm4tj-QKY5vr993dx2D-t_dv83dzyz41Hn3a5_2e1WJCdA5-tDfv9bROb-9IPd_58v4v8_F_rE2_eT1l_tevp7D9-cts__XW_9_fff_...
t/corpus/gdpr_subset.txt view on Meta::CPAN
CQa7ZkAQa7ZkAEsACBPTCFFoAP_gAEPgAB6YJwJB7C7FbSFCyLZzaLsAcQhHxsAAYsQAAASBA2ABQAKQIAQCgkAYFASABAACABAAICRBIQIECAAQAUAAAAAAIAAEIAAAAAAIIAAAgAEBAAAIAAACAIAAEAAIAAAAEAAAmAgAAIIICBAAgAAAAAAAAAAAABAAAACAAAAAAAAAAAAAAAAAAQAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQTgS...
CQa7ZkAQa7ZkAEsACBPTCFFsAP_gAEPgAB6YKytB7C7NbSFD-LZ3aLsEeYhP19BAYsQgAASBg2ABSBLQKJQCwmAYNAzABCACABAAIHRBIQNECABQAUAAIAAAoAAMIACQAAAKICAEgEERAiAYCAArAYFAGAAYACJAVgAAmAgE4YIISBQAgAgAABCAAAABABAQAACAAEgAAAAQAAAAAFhAkQBAGACAAAEIABAYAAAIIAAAAAAAAAAQgAAAAQ...
CQa7ZkAQa7ZkAEsACBTRCFFoAP_gAEPgACaIKApB7C7FbWFDyLZ3aLsEcIxHRtAAQsQAAASBA2ABQBKQoIQWgmAYFASABAACAAAAoGRBIQIECAAABUAAAAAAIACMAACAAABIICBAgAMBAAAIAAADEIIAEAAIQAAEEAQAmAgAiYIICEAAgAAAAAAAAAAAQAAAAACIAAkAABCAAAAAEAgAAQJAAAAAAAgICBAIAAAAAgAAAAAAAAAAAAAAAA...
CQa7ZkAQa7ZkAFgAGAITCEFsAP_gAAAAABCYLutR_G__bXlr-bb36ftkeYxf9_hr7sQxBgbJk24FzLvW7JwX32E7NAzatqYKmRIAu3TBIQNlHJDURVCgKIgVrzDMaEyUoTtKJ6BkiFMRY2NYCFxvm4tjWQCY5vr99ld9mR-N7dr82dzyy6hnv3a9_-S1WJCdIYetDfv8ZBKT-9IE9_x8v4v4_N7pE2-eS1n_tGvp6j9-YvP_dBnxt-bSff...
CQa7ZkAQa7ZkAFzACBFRCEFsAP_gAAAAAAqII7NB7G_fSSFjcTZ3YPtkaYxfx1Bi4sAhBgIBgywBiBqQoIwWkmAqIAjAAqAKGBIAImRBIQBtGAjABAAAAIABISCEAECAARAAJqBAAEARAgFACAhJGQEAEAAQgEDUAhUAgAIEQFooQNxAAgAgLQAAIAAhAIAFAAAIACAAQAAAAAAAQmAAAAAAAAAAAAAAABAIEEdgARDQqIICwIAAgEDCCB...
CQa7ZkAQa7ZkAG2ABBDECHFgAP_gAEPgAAAAKSlB_G5MRSFhICJHAYNkYAgF05BqYkQhAgLJAQIBiJPQIIQFhEEgAAjAECAAGRAAOCDAIAEBDIBAAACAKIgBKCAIAAQQAABIBAAAiBMBAmAACEhACwphEQAQAgpgAAcggAEBiBIAWNwAAAAAAACgEGAAQAABAQEgACnAYACAMAAAAygAAAAAkAAAACIaABFIAAkhIAIEAgADJAAAAEAAYA...
CQa7ZkAQa7ZkAGEABAFRCFFsAP_gAEPgAAqILvtR_G__bXlr-bb36ftkeYxf9_hr7sQxBgbJk24FzLvW7JwX32E7NEzatqYKmRIAu3TBIQNlHJjURVChKIgVrzDsaEyUoTtKJ6BkiFMRY2NYCFxvm4tjWQCZ5vr_91d9mT-N7dr-2dzyy7hnv3a9_-S1WJidKYetDfv8ZBKT-_IU9_x-v4v4_N7pE2-eS1n_tGvp4z9-YvP_dpnxt-7yff...
CQa7ZkAQa7ZkAGEABAITCFFsAP_gAEPgABCYLvtR_G__bXlr-bb36ftkeYxf9_hr7sQxBgbJk24FzLvW7JwX32E7NEzatqYKmRIAu3TBIQNlHJjURVChKIgVrzDsaEyUoTtKJ6BkiFMRY2NYCFxvm4tjWQCZ5vr_91d9mT-N7dr-2dzyy7hnv3a9_-S1WJidKYetDfv8ZBKT-_IU9_x-v4v4_N7pE2-eS1n_tGvp4z9-YvP_dpnxt-7yff...
CQa7ZkAQa-sgAAHABBENCEFsAP_gAACAAAiQKANR_G__bXlr-bb36ftkeYxf9_hr7sQxBgbJk24FzLvW7JwX32E7NAzatqYKmRIAu3TBIQNlHJDURVCgKIgVrzDMaEyUoTNKJ6BkiFMRY2NYCFxvm4tjWQCY5vr99ld5mR-N7dr82dzyy6hnv3a9_-S1WJCdIYetDev8ZBKT-9IE9_x8v4v4_N7pE2-eS1n_tGvp6j9-YvP_dBgAAAAAAA...
CQa7ZkAQb2ucAAHABBENCHFsAP_gAAAAAAAALytR_G__bXlr-bb36ftkeYxf9_hr7sQxBgbJk24FzLvW7JwX32E7NAzatqYKmRIAu3TBIQNlHJDURVCgKIgFrzDMaEyUoTtKJ6BkiFMRY2NYCFxvm4tjWQCY5vr99ld9mR-N7dr82dzyy6hnv3a9_-S1WJCdIYetDfv8ZBKT-9IE9_x8v4v4_N7pE2-eS1n_tGvp4j9-YvP_dBmxt-bSff...
CQa7ZkAQb2ucAAHABBENCHFsAP_gAAAAAAiQLytR_G__bXlr-bb36ftkeYxf9_hr7sQxBgbJk24FzLvW7JwX32E7NAzatqYKmRIAu3TBIQNlHJDURVCgKIgFrzDMaEyUoTtKJ6BkiFMRY2NYCFxvm4tjWQCY5vr99ld9mR-N7dr82dzyy6hnv3a9_-S1WJCdIYetDfv8ZBKT-9IE9_x8v4v4_N7pE2-eS1n_tGvp4j9-YvP_dBmxt-bSff...
view all matches for this distribution
view release on metacpan or search on metacpan
$self->{'homedir'} = $params{'homedir'} || $ENV{'HOME'}.'/.gnupg';
$self->{'config'} = $params{'config'} || '';
$self->{'armor'} = $params{'armor'} || '1'; # Default IS armored !
$self->{'debug'} = $params{'debug'} || '';
$self->{'COMMAND'} = "$self->{'gnupg_path'}/gpg";
$self->{'COMMAND'} .= " -a" if $self->{'armor'};
$self->{'COMMAND'} .= " --config $self->{'config'}" if $self->{'config'};
$self->{'COMMAND'} .= " --homedir $self->{'homedir'}" if $self->{'homedir'};
$self->{'COMMAND'} .= " --batch";
$self->{'COMMAND'} .= " --no-comment";
? $this->{'warning'} .= "\n$string"
: $this->{'warning'} = "$string"
: return $this->{'warning'} || '';
}
sub start_gpg { my ($this,$command,$input) = @_;
my ($stdin,$stdout,$stderr) = (IO::Handle->new(),IO::Handle->new(),IO::Handle->new());
my $pid = open3($stdin,$stdout,$stderr, $command);
if (!$pid) {
$this->error("Cannot fork [COMMAND: '$command'].");
return (0);
$script .= "Passphrase: $passphrase\n";
$script .= "\%pubring $pubring\n";
$script .= "\%secring $secring\n";
$script .= "\%commit\n";
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.' --gen-key', $script);
return if !$pid;
# output of "gen_key" comes on stderr, we cannot stop here...
#$this->error($error) and return if $error;
### list_packets ################################################
sub list_packets { my ($this,$string) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.' --list-packets', $string);
return if !$pid;
return [] if $output !~ /^\s*\:\S+ key packet\:/; # no key found.
$output =~ s/^\s*\:\S+ key packet\:\s*//;
return $ret;
}
# import is a Perl reserved keyword, sorry...
sub import_keys { my ($this,$import) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.' --import', $import);
return if !$pid;
my $res = read_import_key_result($error);
#$this->error($error) and return if !$res;
return $res;
}
sub fast_import { my ($this,$import) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.' --fast-import', $import);
return if !$pid;
my $res = read_import_key_result($error);
#$this->error($error) and return if !$res;
return $res;
}
sub update_trustdb { my ($this) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.' --update-trustdb', '');
return if !$pid;
$error =~ s/^gpg: (\d+) keys processed\s*//;
my $number_processed = $1 || '0';
$this->error($error) and return if $error;
return $number_processed;
}
### fingerprint ############################################
sub fingerprint { my ($this,$key_id) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--fingerprint $key_id", "");
return if !$pid;
$this->error($error) and return if $error;
my $fingerprint = [];
### sign_key ###############################################
sub sign_key { my ($this,$key_id,$passphrase,$key_to_sign) = @_;
return "gpg: can't do that in batchmode (thanks gnupg...)";
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--passphrase-fd 0 --default-key $key_id --sign-key $key_to_sign","$passphrase");
return if !$pid;
$this->error($error) and return if $error;
return $output;
}
sub lsign_key { my ($this,$key_id) = @_;
return "gpg: can't do that in batchmode (thanks gnupg...)";
}
### export_key #############################################
sub export_key { my ($this,$key_id) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--export-all $key_id", "");
return if !$pid;
$this->error($error) and return if $error;
return $output;
}
sub export_secret_key { my ($this,$key_id) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--export-secret-key $key_id", "");
return if !$pid;
$this->error($error) and return if $error;
return $output;
### clearsign ##############################################
sub clearsign { my ($this,$key_id,$passphrase,$text) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--passphrase-fd 0 --default-key $key_id --clearsign", "$passphrase\n$text");
return if !$pid;
$this->error($error) and return if $error;
return $output;
### detach_sign ############################################
sub detach_sign { my ($this,$key_id,$passphrase,$text) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--passphrase-fd 0 --default-key $key_id --detach-sign", "$passphrase\n$text");
return if !$pid;
$this->error($error) and return if $error;
return $output;
return $verify;
}
sub verify { my ($this,$string) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--verify", "$string");
return if !$pid;
return check_verify_result($error);
}
### verify_files ###########################################
sub verify_files { my ($this,$string) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--verify", "$string");
return if !$pid;
return check_verify_result($error);
}
### encrypt ################################################
sub encrypt { my ($this,$text,@dest) = @_;
my $dest = '-r '.join(' -r ',@dest);
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"$dest --encrypt", "$text");
return if !$pid;
$this->error($error) and return if $error;
return $output;
### decrypt ################################################
sub decrypt { my ($this,$passphrase,$text) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--passphrase-fd 0 --decrypt", "$passphrase\n$text");
return if !$pid;
$this->error($error) and return if $error;
return $output;
### sign_encrypt ###########################################
sub sign_encrypt { my ($this,$key_id,$passphrase,$text,@dest) = @_;
my $dest = '-r '.join(' -r ',@dest);
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--passphrase-fd 0 $dest --default-key $key_id -se", "$passphrase\n$text");
return if !$pid;
$this->error($error) and return if $error;
return $output;
### decrypt_verify #########################################
sub decrypt_verify { my ($this,$passphrase,$text) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--passphrase-fd 0", "$passphrase\n$text");
return if !$pid;
my $verify = {};
$verify->{'ok'} = $error =~ /\sGood signature from \"/m ? 1 : 0;
}
return $list;
}
sub list_keys { my ($this) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--with-colons --list-keys", "");
return if !$pid;
$this->error($error) and return if $error;
return build_list_keys($output);
### list_sig ##############################################
sub list_sig { my ($this) = @_;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--with-colons --list-sig", "");
return if !$pid;
$this->error($error) and return if $error;
return build_list_keys($output);
}
### PROTOTYPE ##############################################
sub prototype { my ($this) = @_;
return; # XXX 'prototype' : only as example if you would add new function
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--passphrase-fd 0", "passphrase here...");
return if !$pid;
$this->error($error) and return if $error;
return $output;
### delete_key #############################################
sub delete_key { my ($this,$key_id) = @_;
CORE::warn "Not yet implemented - read the doc please." and return;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--delete-key $key_id", "y\n");
return if !$pid;
$this->error($error) and return if $error;
}
### delete_secret_key ######################################
sub delete_secret_key { my ($this,$key_id) = @_;
CORE::warn "Not yet implemented - read the doc please." and return;
my ($pid,$output,$error) = start_gpg($this,$this->{'COMMAND'}.
"--delete-secret-key $key_id", "y\n");
return if !$pid;
$this->error($error) and return if $error;
}
use GPG;
my ($passphrase,$key_id) = ("1234567890123456",'');
my $gpg = new GPG(homedir => './test'); # Creation
die $gpg->error() if $gpg->error(); # Error handling
my ($pubring,$secring) = $gpg->gen_key(key_size => "512",
real_name => "Joe Test",
email => 'nobody@yahoo.com',
comment => "",
passphrase => $passphrase);
my $pubkey = $gpg->list_packets($pubring);
my $seckey = $gpg->list_packets($secring);
$key_id = $pubkey->[0]{'key_id'};
$gpg->import_keys($secring);
$gpg->import_keys($pubring);
my $signed = $gpg->clearsign($key_id,$passphrase,"TEST_TEXT");
my $verify = $gpg->verify($signed);
my $TEST_TEXT = $gpg->encrypt("TEST_TEXT",$key_id);
$TEST_TEXT = $gpg->decrypt($passphrase,$TEST_TEXT);
$TEST_TEXT = $gpg->sign_encrypt($key_id,$passphrase,$TEST_TEXT,$key_id);
my $decrypt_verify = $gpg->decrypt_verify($passphrase,$TEST_TEXT);
my $keys = $gpg->list_keys();
my $sigd = $gpg->list_sig();
=head1 INSTALLATION
% perl Makefile.PL
% make test
% make install
Tips :
- if you want secure memory, do not forget :
% chown root /usr/local/bin/gpg ; chmod 4755 /usr/local/bin/gpg
=head1 METHODS
Look at the "test.pl" and "quick_test.pl" for examples and futher explanations.
=over 4
=item I<new %params>
Parameters are :
- gnupg_path (most of time, 'gpg' stand inside /usr/local/bin)
- homedir (gnupg homedir, default is $HOME/.gnupg)
- config (gnupg config file)
- armor (armored if 1, DEFAULT IS *1* !)
- debug (1 for debugging, default is 0)
=back
=head1 FAQ
Q: How does it work ?
A: it uses IPC::Open3 to connect the 'gpg' program.
IPC::Open3 is executing the fork and managing the filehandles for you.
Q: How secure is GPG ?
A: As secure as you want... Be carefull. First, GPG is no
more securer than 'gpg'.
Second, all passphrases are stored in non-secure memory, unless
you "chown root" and "chmod 4755" your script first. Third, your
script probably store passpharses somewhere on the disk, and
this is *not* secure.
Currently known bugs are caused by gnupg (www.gnupg.org) and *not* by GPG.pm :
- the methods "delete_key" and "delete_secret_key" do not work,
Not because of a bug but because gnupg cannot do that in batch mode.
- sign_key() and lsign_key() : "gpg: can't do that in batchmode"
- verify() and verify_files() output only the wrong file, even only one has
a wrong signature. Other files are ignored.
I hope a later version of gnupg will correct this issues...
CPAN : ${CPAN}/authors/id/M/MI/MILES/
sourceforge : https://sourceforge.net/project/filelist.php?group_id=8630
developpers info at https://sourceforge.net/projects/gpg
doc and home-page at http://gpg.sourceforge.net/ (this document)
=head1 DEVELOPPEMENT
CVS access :
look at http://acity.sourceforge.net/devel.html
... and replace "agora" or "acity" by "gpg".
=head1 SEE ALSO
GnuPG - http://www.gnupg.org
GnuPG.pm - input/output only through file_names
GnuPG::Interface - input/output only through file_handles
see http://GnuPG-Interface.sourceforge.net/ or CPAN
IPC::Open3 - communication with 'gpg', see "perldoc perlipc"
=head1 AUTHOR
miles@_REMOVE_THIS_users.sourceforge.net, pf@_REMOVE_THIS_spin.ch
extra thanks to tpo_at_spin
view all matches for this distribution
view release on metacpan or search on metacpan
t/fake-babel.pl view on Meta::CPAN
option\tnima\tprefer_shortnames\tUse shortname instead of description\tboolean\t\t\t
option\tnima\tdatum\tGPS datum (def. WGS 84)\tstring\t\t\t
file\trwrw--\tnmea\t\tNMEA 0183 sentences\tnmea
option\tnmea\tsnlen\tMax length of waypoint name to write\tinteger\t6\t1\t64
option\tnmea\tgprmc\tRead/write GPRMC sentences\tboolean\t1\t\t
option\tnmea\tgpgga\tRead/write GPGGA sentences\tboolean\t1\t\t
option\tnmea\tgpvtg\tRead/write GPVTG sentences\tboolean\t1\t\t
option\tnmea\tgpgsa\tRead/write GPGSA sentences\tboolean\t1\t\t
option\tnmea\tdate\tComplete date-free tracks with given date (YYYYMMDD).\tinteger\t\t\t
option\tnmea\tget_posn\tReturn current position as a waypoint\tboolean\t\t\t
option\tnmea\tpause\tDecimal seconds to pause between groups of strings\tinteger\t\t\t
option\tnmea\tbaud\tSpeed in bits per second of serial port (baud=4800)\tinteger\t\t\t
file\trwrwrw\tozi\t\tOziExplorer\tozi
t/fake-babel.pl view on Meta::CPAN
\thttp://www.gpsbabel.org/htmldoc-development/fmt_nmea.html
option\tnmea\tsnlen\tMax length of waypoint name to write\tinteger\t6\t1\t64\thttp://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_snlen
option\tnmea\tgprmc\tRead/write GPRMC sentences\tboolean\t1\t\t\thttp://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_gprmc
option\tnmea\tgpgga\tRead/write GPGGA sentences\tboolean\t1\t\t\thttp://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_gpgga
option\tnmea\tgpvtg\tRead/write GPVTG sentences\tboolean\t1\t\t\thttp://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_gpvtg
option\tnmea\tgpgsa\tRead/write GPGSA sentences\tboolean\t1\t\t\thttp://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_gpgsa
option\tnmea\tdate\tComplete date-free tracks with given date (YYYYMMDD).\tinteger\t\t\t\thttp://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_date
option\tnmea\tget_posn\tReturn current position as a waypoint\tboolean\t\t\t\thttp://www.gpsbabel.org/htmldoc-development/fmt_nmea.html#fmt_nmea_o_get_posn
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Game/HexDescribe.pm view on Meta::CPAN
Here's another example. I wanted to provide different tables for
âwhite mountainâ and âlight grey mountainâ. Just look at the example:
<p>
<img alt="A screenshot of the map" style="width: 100%"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABZEAAANpCAYAAAB6pneIAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gMMFToXJrnvZAAAIABJREFUeNrsnXlYlNe9xz8ywzbMMCMgm6yCKEZwiAtKRDHGJU3dYmLaxkS8t0mXEIX0tmmuNmKXm8XbiE3ubRrbqza7WVySmKi...
<p>
The mountains in the bottom left corner at (01.09) and (01.10) just feel
different. I guess you could say that the two swamps in (05.07) and (06.08) also
feel different. In that case you might opt to provide different tables for âgrey
view all matches for this distribution
view release on metacpan or search on metacpan
nsis/axmud_install.nsi view on Meta::CPAN
# C:\foobar\msys64\usr\bin\find
# C:\foobar\msys64\usr\bin\findfs
# C:\foobar\msys64\usr\bin\gawk*
# C:\foobar\msys64\usr\bin\getent
# C:\foobar\msys64\usr\bin\gettext*
# C:\foobar\msys64\usr\bin\gpg*
# C:\foobar\msys64\usr\bin\grep
# C:\foobar\msys64\usr\bin\hostid
# C:\foobar\msys64\usr\bin\hostname
# C:\foobar\msys64\usr\bin\iconv
# C:\foobar\msys64\usr\bin\id
nsis/axmud_install.nsi view on Meta::CPAN
# C:\foobar\msys64\usr\bin\msys-bz2-1.dll
# C:\foobar\msys64\usr\bin\msys-gcc_s-seh-1.dll
# C:\foobar\msys64\usr\bin\msys-gcrypt-20.dll
# C:\foobar\msys64\usr\bin\msys-gdbm*
# C:\foobar\msys64\usr\bin\msys-gmp-10.dll
# C:\foobar\msys64\usr\bin\msys-gpg-error-0.dll
# C:\foobar\msys64\usr\bin\msys-gpgme-11.dll
# C:\foobar\msys64\usr\bin\msys-gpgmepp-6.dll
# C:\foobar\msys64\usr\bin\msys-iconv-2.dll
# C:\foobar\msys64\usr\bin\msys-intl-8.dll
# C:\foobar\msys64\usr\bin\msys-mpfr-6.dll
# C:\foobar\msys64\usr\bin\msys-ncurses++w6.dll
# C:\foobar\msys64\usr\bin\msys-ncursesw6.dll
view all matches for this distribution
view release on metacpan or search on metacpan
perl Makefile.PL # create a new makefile
gmake # copy the library to ./blib/lib...
gmake distcheck # check for new or removed files
gmake manifest # if this steps adds or deletes incorrectly, please fix MANIFEST.SKIP ; MANIFEST is auto-generated
gmake disttest # optional, if you want to verify that make test will work for the CPAN audience
set MODULE_SIGNATURE_AUTHOR=XXXXXXXX # choose the correct gpg signing key
set MM_SIGN_DIST=1 # enable signatures for build
set TEST_SIGNATURE=1 # verify signatures during `disttest`
perl Makefile.PL && gmake distauthtest # recreate Makefile and re-run distribution test with signing & test-signature turned on
set TEST_SIGNATURE= # clear signature verification during `disttest`
gmake dist # actually make the tarball
view all matches for this distribution
view release on metacpan or search on metacpan
t/sandbox/usr/portage/net-dns/pdns/pdns-2.9.12-r1.ebuild view on Meta::CPAN
use static && myconf="$myconf --enable-static-binaries"
use postgres && myconf="$myconf --with-pgsql-includes=/usr/include"
use mysql && modules="gmysql $modules"
use postgres && modules="gpgsql $modules"
use ldap && modules="ldap $modules"
econf --with-modules="$modules" \
$myconf || die "Configuration failed"
view all matches for this distribution
view release on metacpan or search on metacpan
t/25gml300.t
t/26gml301.t
t/27gml310.t
t/28gml311.t
t/29gml321.t
t/40gpgml3.t
t/41gpgml2.t
xt/99pod.t
META.yml Module YAML meta-data (added by MakeMaker)
META.json Module JSON meta-data (added by MakeMaker)
view all matches for this distribution
view release on metacpan or search on metacpan
deps/libgit2/include/git2/commit.h view on Meta::CPAN
* @param signed_data signed data; this is the commit contents minus the signature block;
* existing content will be overwritten
* @param repo the repository in which the commit exists
* @param commit_id the commit from which to extract the data
* @param field the name of the header field containing the signature
* block; pass `NULL` to extract the default 'gpgsig'
* @return 0 on success, GIT_ENOTFOUND if the id is not for a commit
* or the commit does not have a signature.
*/
GIT_EXTERN(int) git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field);
deps/libgit2/include/git2/commit.h view on Meta::CPAN
* @param repo the repository to create the commit in.
* @param commit_content the content of the unsigned commit object
* @param signature the signature to add to the commit. Leave `NULL`
* to create a commit without adding a signature field.
* @param signature_field which header field should contain this
* signature. Leave `NULL` for the default of "gpgsig"
* @return 0 or an error code
*/
GIT_EXTERN(int) git_commit_create_with_signature(
git_oid *out,
git_repository *repo,
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Git/Repository/Log.pm view on Meta::CPAN
author author_name author_email
committer committer_name committer_email
author_localtime author_tz author_gmtime
committer_localtime committer_tz committer_gmtime
raw_message message subject body
gpgsig
extra
)
)
{
no strict 'refs';
lib/Git/Repository/Log.pm view on Meta::CPAN
=item message
The log message (including the 4-space indent normally output by B<git log>).
=item gpgsig
The commit signature.
=item mergetag
lib/Git/Repository/Log.pm view on Meta::CPAN
=head2 Signature-related information
=over 4
=item gpgsig
=item mergetag
=back
view all matches for this distribution
view release on metacpan or search on metacpan
1.302 2013-03-01 BOOK
[ENHANCEMENTS]
- Git::Repository::Plugin::Log is now able to parse commits
with completely empty log messages
- Git::Repository::Plugin::Log is now able to parse commits
containing multiline headers (like gpgsig and mergetag)
1.301 2013-01-21 BOOK
[DEPRECATION]
- the following Git::Repository methods are obsolete,
and will die when called: create, wc_path, repo_path
view all matches for this distribution
view release on metacpan or search on metacpan
No changes since last development release.
0.047_090 2018-03-19 21:19:22-07:00 America/Los_Angeles (TRIAL RELEASE)
update t/path_class.t to remove tilde; fixes [#41] (Jean-Damien.Durand)
Unset (possible) global gpgsign [#91] (Sergey Romanov)
remove timing bug in basic.t (Christian Walde)
POD typo fix (СеÑгей Романов)
Include dist.ini in distribution (Karen Etheridge)
0.047 2016-09-18 15:30:58-07:00 America/Los_Angeles
view all matches for this distribution
view release on metacpan or search on metacpan
t/author-pod-spell.t view on Meta::CPAN
__DATA__
AFAICT
ABEND
RSRCHBOY
RSRCHBOY's
gpg
ini
metaclass
metaclasses
parameterized
parameterization
view all matches for this distribution
view release on metacpan or search on metacpan
lib/GitLab/API/v4.pm view on Meta::CPAN
$options->{decode} = 0;
$self->_call_rest_client( 'DELETE', 'users/:user_id/keys/:key_id', [@_], $options );
return;
}
=item current_user_gpg_keys
my $keys = $api->current_user_gpg_keys(
\%params,
);
Sends a C<GET> request to C<user/gpg_keys> and returns the decoded response content.
=cut
sub current_user_gpg_keys {
my $self = shift;
croak 'current_user_gpg_keys must be called with 0 to 1 arguments' if @_ < 0 or @_ > 1;
croak 'The last argument (\%params) to current_user_gpg_keys must be a hash ref' if defined($_[0]) and ref($_[0]) ne 'HASH';
my $params = (@_ == 1) ? pop() : undef;
my $options = {};
$options->{query} = $params if defined $params;
return $self->_call_rest_client( 'GET', 'user/gpg_keys', [@_], $options );
}
=item current_user_gpg_key
my $key = $api->current_user_gpg_key(
$key_id,
);
Sends a C<GET> request to C<user/gpg_keys/:key_id> and returns the decoded response content.
=cut
sub current_user_gpg_key {
my $self = shift;
croak 'current_user_gpg_key must be called with 1 arguments' if @_ != 1;
croak 'The #1 argument ($key_id) to current_user_gpg_key must be a scalar' if ref($_[0]) or (!defined $_[0]);
my $options = {};
return $self->_call_rest_client( 'GET', 'user/gpg_keys/:key_id', [@_], $options );
}
=item create_current_user_gpg_key
$api->create_current_user_gpg_key(
\%params,
);
Sends a C<POST> request to C<user/gpg_keys>.
=cut
sub create_current_user_gpg_key {
my $self = shift;
croak 'create_current_user_gpg_key must be called with 0 to 1 arguments' if @_ < 0 or @_ > 1;
croak 'The last argument (\%params) to create_current_user_gpg_key must be a hash ref' if defined($_[0]) and ref($_[0]) ne 'HASH';
my $params = (@_ == 1) ? pop() : undef;
my $options = {};
$options->{decode} = 0;
$options->{content} = $params if defined $params;
$self->_call_rest_client( 'POST', 'user/gpg_keys', [@_], $options );
return;
}
=item delete_current_user_gpg_key
$api->delete_current_user_gpg_key(
$key_id,
);
Sends a C<DELETE> request to C<user/gpg_keys/:key_id>.
=cut
sub delete_current_user_gpg_key {
my $self = shift;
croak 'delete_current_user_gpg_key must be called with 1 arguments' if @_ != 1;
croak 'The #1 argument ($key_id) to delete_current_user_gpg_key must be a scalar' if ref($_[0]) or (!defined $_[0]);
my $options = {};
$options->{decode} = 0;
$self->_call_rest_client( 'DELETE', 'user/gpg_keys/:key_id', [@_], $options );
return;
}
=item user_gpg_keys
my $keys = $api->user_gpg_keys(
$user_id,
\%params,
);
Sends a C<GET> request to C<users/:user_id/gpg_keys> and returns the decoded response content.
=cut
sub user_gpg_keys {
my $self = shift;
croak 'user_gpg_keys must be called with 1 to 2 arguments' if @_ < 1 or @_ > 2;
croak 'The #1 argument ($user_id) to user_gpg_keys must be a scalar' if ref($_[0]) or (!defined $_[0]);
croak 'The last argument (\%params) to user_gpg_keys must be a hash ref' if defined($_[1]) and ref($_[1]) ne 'HASH';
my $params = (@_ == 2) ? pop() : undef;
my $options = {};
$options->{query} = $params if defined $params;
return $self->_call_rest_client( 'GET', 'users/:user_id/gpg_keys', [@_], $options );
}
=item user_gpg_key
my $key = $api->user_gpg_key(
$user_id,
$key_id,
);
Sends a C<GET> request to C<users/:user_id/gpg_keys/:key_id> and returns the decoded response content.
=cut
sub user_gpg_key {
my $self = shift;
croak 'user_gpg_key must be called with 2 arguments' if @_ != 2;
croak 'The #1 argument ($user_id) to user_gpg_key must be a scalar' if ref($_[0]) or (!defined $_[0]);
croak 'The #2 argument ($key_id) to user_gpg_key must be a scalar' if ref($_[1]) or (!defined $_[1]);
my $options = {};
return $self->_call_rest_client( 'GET', 'users/:user_id/gpg_keys/:key_id', [@_], $options );
}
=item create_user_gpg_key
my $keys = $api->create_user_gpg_key(
$user_id,
\%params,
);
Sends a C<POST> request to C<users/:user_id/gpg_keys> and returns the decoded response content.
=cut
sub create_user_gpg_key {
my $self = shift;
croak 'create_user_gpg_key must be called with 1 to 2 arguments' if @_ < 1 or @_ > 2;
croak 'The #1 argument ($user_id) to create_user_gpg_key must be a scalar' if ref($_[0]) or (!defined $_[0]);
croak 'The last argument (\%params) to create_user_gpg_key must be a hash ref' if defined($_[1]) and ref($_[1]) ne 'HASH';
my $params = (@_ == 2) ? pop() : undef;
my $options = {};
$options->{content} = $params if defined $params;
return $self->_call_rest_client( 'POST', 'users/:user_id/gpg_keys', [@_], $options );
}
=item delete_user_gpg_key
$api->delete_user_gpg_key(
$user_id,
$key_id,
);
Sends a C<DELETE> request to C<users/:user_id/gpg_keys/:key_id>.
=cut
sub delete_user_gpg_key {
my $self = shift;
croak 'delete_user_gpg_key must be called with 2 arguments' if @_ != 2;
croak 'The #1 argument ($user_id) to delete_user_gpg_key must be a scalar' if ref($_[0]) or (!defined $_[0]);
croak 'The #2 argument ($key_id) to delete_user_gpg_key must be a scalar' if ref($_[1]) or (!defined $_[1]);
my $options = {};
$options->{decode} = 0;
$self->_call_rest_client( 'DELETE', 'users/:user_id/gpg_keys/:key_id', [@_], $options );
return;
}
=item current_user_emails
view all matches for this distribution
view release on metacpan or search on metacpan
# I downloaded on Oct 1st 1999
# 'my_gnome_libs' => '19991001', # I have the gnome.org CVS Use gnome-libs version no
# version of 'gnome-libs' that
# I downloaded on Oct 1st 1999
'xml' => {
'site' => '__NOFILE', # Site options file name /etc/gpgrc.xml
'user' => '__NOFILE', # User options file name ~/.gpgrc.xml
'project' => '__NOFILE',
# 'project' => $project_options_file,
# Project-specific options Don't read file
},
},
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
.travis.yml view on Meta::CPAN
# - "5.26"
before_install:
- sudo sh -c 'echo "deb http://ppa.launchpad.net/gluster/glusterfs-3.8/ubuntu trusty main" >> /etc/apt/sources.list'
- sudo sh -c 'echo "deb-src http://ppa.launchpad.net/gluster/glusterfs-3.8/ubuntu trusty main" >> /etc/apt/sources.list'
- chmod 0600 ~/.gnupg/gpg.conf
- chmod 0700 ~/.gnupg
- gpg --keyserver pgpkeys.mit.edu --recv-key 13E01B7B3FE869A9
- gpg -a --export 13E01B7B3FE869A9 | sudo apt-key add -
- sudo apt-get update
- sudo apt-get install -y glusterfs-server glusterfs-client libacl1 attr
- sudo dpkg-query -L glusterfs-server
- sudo dpkg-query -L glusterfs-client
- sudo update-rc.d glusterfs-server defaults
view all matches for this distribution
view release on metacpan or search on metacpan
lib/GnuPG/Crypticle.pm view on Meta::CPAN
use File::Copy qw//;
use File::stat;
use File::Path qw/make_path/;
use File::Spec qw//;
use IO::Handle;
has 'gpg_bin' => (
is => 'ro',
isa => 'Str',
default => '/usr/bin/gpg',
documentation => 'path to gpg binary',
);
has 'gpg_home' => (
is => 'ro',
isa => 'Str',
required => 1,
lazy => 1,
default => sub { return "$ENV{HOME}/.gnupg"; },
documentation => 'Home directory for GnuPG files (pubring, secring, trustdb)',
);
has 'gpg_pass_file' => (
is => 'ro',
isa => 'Str|FileHandle',
required => 0,
predicate => 'has_gpg_pass_file',
documentation => 'passphrase file for decrypting secret keys',
);
has 'gpg_temp_home' => (
is => 'ro',
isa => 'Str',
required => 0,
predicate => 'has_gpg_temp_home',
documentation => 'path to temp home',
);
has '_passphrase_fh' => (
is => 'ro',
lib/GnuPG/Crypticle.pm view on Meta::CPAN
documentation => 'filehandle to /dev/null',
);
sub BUILD {
my $self = shift;
if ($self->has_gpg_temp_home) {
my $homedir = $self->gpg_home;
my $gpgdir = $self->gpg_temp_home;
my $cumask = umask(0077);
my $mkpatherr;
unless (
(-d $gpgdir and -w $gpgdir) or
File::Path::make_path($gpgdir, {error=>\$mkpatherr}) or
(-d $gpgdir and -w $gpgdir)
) {
umask($cumask);
if ($mkpatherr) {
# ugly but necessary, perldoc File::Path for info
my $k = (keys %{$mkpatherr->[0]})[0];
lib/GnuPG/Crypticle.pm view on Meta::CPAN
}
else {
$mkpatherr = "$!";
}
umask($cumask);
die "Unable to create gpg_temp_home '$gpgdir': $mkpatherr";
}
for my $f (qw/secring.gpg trustdb.gpg pubring.gpg/) {
my $file = File::Spec->catfile($homedir, $f);
unless (File::Copy::cp($file, $gpgdir)) {
umask($cumask);
die "Failed to copy '$file' to '$gpgdir': $!";
}
}
File::Copy::cp(File::Spec->catfile($homedir, 'gpg.conf'), $gpgdir);
umask($cumask);
}
}
sub decrypt {
my ($self, %opts) = @_;
$opts{gpg_args} ||= [];
push(@{$opts{gpg_args}}, '-d');
return $self->call_gpg(%opts);
}
sub encrypt {
my ($self, %opts) = @_;
$opts{gpg_args} ||= [];
my $rcpt = delete $opts{rcpt};
push(@{$opts{gpg_args}}, '-r', $rcpt, '-e');
return $self->call_gpg(%opts);
}
sub detect_encryption {
my ($self, %opts) = @_;
my $fh;
lib/GnuPG/Crypticle.pm view on Meta::CPAN
}
}
return 0;
}
sub call_gpg {
my ($self, %opts) = @_;
my $dest = delete $opts{dst};
my $error = delete $opts{err};
my $source = delete $opts{src};
my ($close_dest, $close_error, $close_source);
lib/GnuPG/Crypticle.pm view on Meta::CPAN
}
unless (open(STDIN, "<&", $source)) {
die "Failed to dup over STDIN: $!";
}
}
if ($self->has_gpg_pass_file) {
unshift(@{$opts{gpg_args}}, '--passphrase-fd', fileno($self->_passphrase_fh));
}
else {
unshift(@{$opts{gpg_args}}, '--passphrase-fd', fileno($self->_null_fh));
}
my $homedir;
if ($self->has_gpg_temp_home) {
unshift(@{$opts{gpg_args}}, '--homedir', $self->gpg_temp_home);
}
else {
unshift(@{$opts{gpg_args}}, '--homedir', $self->gpg_home);
}
my $gpg_fail;
unless (system($self->gpg_bin, '--batch', '--no-tty', @{$opts{gpg_args}}) == 0) {
if ($! == 0) {
$gpg_fail = "Failed to execute gpg: $?";
}
else {
$gpg_fail = "gpg call failed: $?";
}
}
if ($self->has_gpg_pass_file) {
seek($self->_passphrase_fh, 0, 0);
}
if ($stdin) {
unless (open(STDIN, "<&", $stdin)) {
die "Failed to restore STDIN";
lib/GnuPG/Crypticle.pm view on Meta::CPAN
unless (open(STDOUT, ">&", $stdout)) {
die "Failed to restore STDOUT";
}
}
close($dest) if $close_dest;
die $gpg_fail if $gpg_fail;
return 1;
}
sub _open_passphrase_file {
my $self = shift;
if (my $file = $self->gpg_pass_file) {
if (ref($file)) {
my $flags;
unless ($flags = fcntl($file, Fcntl::F_GETFD, 0)) {
die "fcntl F_GETFD failed: $!";
}
lib/GnuPG/Crypticle.pm view on Meta::CPAN
Stop reading here, and go use L<GnuPG::Interface> instead.
use GnuPG::Crypticle;
my $crypticle = GnuPG::Crypticle->new(gpg_home => /home/me/.gnupg);
$crypticle->encrypt(src => '/tmp/sourcefile.txt', dst => '/tmp/destfile.gpg', rcpt => 'ABCD0123');
...
=head1 DEPRECATION
This module should be considered deprecated and unmaintained. It was a stop-gap
-- albeit not a very good one -- when the author had no better option to use
gpg2 (L<GnuPG> only works with gpg1). L<GnuPG::Interface> is a much better
option. Please use that module instead!
=head1 ATTRIBUTES
=head2 gpg_bin
full path to gpg binary
=head2 gpg_home
location of the .gnupg directory gpg should use
=head2 gpg_pass_file
plaintext file containing the passphrase used with any secret keys
=head2 gpg_temp_home
path to use as temporary home
=head1 METHODS
lib/GnuPG/Crypticle.pm view on Meta::CPAN
subroutine(key1 => val1, key2 => val2);
=head2 BUILD
During object initialization, copies of master gpg keyrings are made in a
temporary directory to prevent locking and corruption problems. A restart of
the application is necessary if there are key ring changes. Dies on failure.
=head2 decrypt
lib/GnuPG/Crypticle.pm view on Meta::CPAN
=item dst
file name or handle to which encrypted output is sent
=item gpg_args
arguments passed directly to gpg execution
=back
returns:
lib/GnuPG/Crypticle.pm view on Meta::CPAN
=back
=head2 detect_encryption
Dies on failure. Detects pgp or gpg decryption the same as mime magic does.
This is nowhere near complete or reliable. For best results, just try to
decrypt.
parameters:
lib/GnuPG/Crypticle.pm view on Meta::CPAN
file name or handle from which to detect encryption
=back
=head2 call_gpg
(private) calls gpg command with necessary options
=head2 _open_passphrase_file
(private) Opens the passphrase file.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/GnuPG/Interface.pm view on Meta::CPAN
#
# There are now three supported versions of GnuPG: legacy 1.4, 2.2, and 2.4.
# They are detected and each behave slightly differently.
#
# When using features specific to branches, check that the system's
# version of gpg corresponds to the branch.
#
# legacy: 1.4
# stable: >= 2.2
#
# You can find examples of version comparison in the tests.
lib/GnuPG/Interface.pm view on Meta::CPAN
# deprecated!
sub gnupg_call { shift->call(@_); }
sub BUILD {
my ( $self, $args ) = @_;
$self->hash_init( call => 'gpg', %$args );
}
struct(
fh_setup => {
parent_end => '$', child_end => '$',
lib/GnuPG/Interface.pm view on Meta::CPAN
}
);
# Update version if "call" is updated
sub _trigger_call {
my ( $self, $gpg ) = @_;
$self->_set_version( $self->_version() );
}
#################################################################
# real worker functions
lib/GnuPG/Interface.pm view on Meta::CPAN
# Don't use loopback pintentry for legacy (1.4) GPG
#
# Check that $version is populated before running cmp_version. If
# we are invoked as part of BUILD to populate $version, then any
# methods that depend on $version will fail. We don't care about
# loopback when we're called just to check gpg version.
$use_loopback_pinentry = 1
if ($handles->passphrase() && $self->version && $self->cmp_version($self->version, '2.2') > 0 );
# deprecation support
$args{commands} ||= $args{gnupg_commands};
lib/GnuPG/Interface.pm view on Meta::CPAN
);
# On Unix, PATH is by default '.' and Perl >= v5.38 rejects '.'
# being in the path when in taint mode. Set a path, if running
# in taint mode whomever is calling us should be providing the
# path to the gpg program to use.
local $ENV{PATH} = '/usr/bin' if tainted $ENV{PATH};
exec @command or die "exec() error: $ERRNO";
}
# parent
lib/GnuPG/Interface.pm view on Meta::CPAN
versions of GnuPG: 1.4.x, 2.2.x, and 2.4.x. The
L<GnuPG download page|https://gnupg.org/download/index.html> has
updated information on the currently supported versions.
GnuPG released 2.0 and 2.1 versions in the past and some packaging
systems may still provide these if you install the default C<gpg>,
C<gnupg>, C<gnupg2>, etc. packages. 2.0 and 2.1 versions are not
supported, so you may need to find additional package repositories
or build from source to get the updated version.
=head1 OBJECT METHODS
lib/GnuPG/Interface.pm view on Meta::CPAN
=item send_keys( % )
=item search_keys( % )
These methods each correspond directly to or are very similar
to a GnuPG command described in L<gpg>. Each of these methods
takes a hash, which currently must contain a key of B<handles>
which has the value of a GnuPG::Handles object.
Another optional key is B<command_args> which should have the value of an
array reference; these arguments will be passed to GnuPG as command arguments.
These command arguments are used for such things as determining the keys to
list in the B<export_keys> method. I<Please note that GnuPG command arguments
are not the same as GnuPG options>. To understand what are options and
what are command arguments please read L<gpg/"COMMANDS"> and L<gpg/"OPTIONS">.
Each of these calls returns the PID for the resulting GnuPG process.
One can use this PID in a C<waitpid> call instead of a C<wait> call
if more precise process reaping is needed.
lib/GnuPG/Interface.pm view on Meta::CPAN
it simply 'pass-through' to GnuPG via a handle.
If neither the B<passphrase> data member of the GnuPG::Interface nor
the B<passphrase> data member of the B<handles> object is defined,
then GnuPG::Interface assumes that access and control over the secret
key will be handled by the running gpg-agent process. This represents
the simplest mode of operation with the GnuPG "stable" suite (version
2.2 and later). It is also the preferred mode for tools intended to
be user-facing, since the user will be prompted directly by gpg-agent
for use of the secret key material. Note that for programmatic use,
this mode requires the gpg-agent and pinentry to already be correctly
configured.
=back
=head2 Other Methods
lib/GnuPG/Interface.pm view on Meta::CPAN
=over 4
=item call
This defines the call made to invoke GnuPG. Defaults to 'gpg'; this
should be changed if 'gpg' is not in your path, or there is a different
name for the binary on your system.
=item passphrase
In order to lessen the burden of using handles by the user of this package,
lib/GnuPG/Interface.pm view on Meta::CPAN
);
# this time we'll also demonstrate decrypting
# a file written to disk
# Make sure you "use IO::File" if you use this module!
my $cipher_file = IO::File->new( 'encrypted.gpg' );
# this sets up the communication
my $pid = $gnupg->decrypt( handles => $handles );
# This passes in the passphrase
lib/GnuPG/Interface.pm view on Meta::CPAN
L<GnuPG::Options>,
L<GnuPG::Handles>,
L<GnuPG::PublicKey>,
L<GnuPG::SecretKey>,
L<gpg>,
L<perlipc/"Bidirectional Communication with Another Process">
=head1 LICENSE
This module is free software; you can redistribute it and/or modify it
view all matches for this distribution
view release on metacpan or search on metacpan
close $self->{command_fd}
or croak "error while closing pipe: $!\n";
waitpid $self->{gnupg_pid}, 0
or croak "error while waiting for gpg: $!\n";
for ( qw(protocol gnupg_pid command options args status_fd command_fd
input output next_status ) )
{
or die "can't redirect stdout to proper output fd: $!\n";
} elsif ( $self->{output} && -t STDOUT ) {
open ( STDOUT, ">".$self->{output} )
or die "can't open $self->{output} for output: $!\n";
} elsif ( $self->{output} ) {
my $gpg = shift(@{$cmdline});
unshift(@{$cmdline}, '--output', $self->{output});
unshift(@{$cmdline}, $gpg);
} # Defaults to stdout
# Close all open file descriptors except STDIN, STDOUT, STDERR
# and the status filedescriptor.
#
croak ( "Invalid options file: $args{options}\n")
unless -r $args{options};
$self->{options} = $args{options};
}
if ( $args{gnupg_path} ) {
croak ( "Invalid gpg path: $args{gnupg_path}\n")
unless -x $args{gnupg_path};
$self->{gnupg_path} = $args{gnupg_path};
} else {
my ($path) = grep { -x "$_/gpg" } split /:/, $ENV{PATH};
croak ( "Couldn't find gpg in PATH ($ENV{PATH})\n" )
unless $path;
$self->{gnupg_path} = "$path/gpg";
}
$self->{trace} = $args{trace} ? 1 : 0;
bless $self, $class;
}
=head1 SYNOPSIS
use GnuPG qw( :algo );
my $gpg = new GnuPG();
$gpg->encrypt( plaintext => "file.txt", output => "file.gpg",
armor => 1, sign => 1,
passphrase => $secret );
$gpg->decrypt( ciphertext => "file.gpg", output => "file.txt" );
$gpg->clearsign( plaintext => "file.txt", output => "file.txt.asc",
passphrase => $secret, armor => 1,
);
$gpg->verify( signature => "file.txt.asc", file => "file.txt" );
$gpg->gen_key( name => "Joe Blow", comment => "My GnuPG key",
passphrase => $secret,
);
=head1 DESCRIPTION
GnuPG is a perl interface to the GNU Privacy Guard. It uses the
shared memory coprocess interface that gpg provides for its
wrappers. It tries its best to map the interactive interface of
the gpg to a more programmatic model.
=head1 API OVERVIEW
The API is accessed through methods on a GnuPG object which is
a wrapper around the B<gpg> program. All methods takes their
argument using named parameters, and errors are returned by
throwing an exception (using croak). If you wan't to catch
errors you will have to use eval.
When handed in a file handle for input or output parameters
=head1 CONSTRUCTOR
=head2 new ( [params] )
You create a new GnuPG wrapper object by invoking its new method.
(How original !). The module will try to finds the B<gpg> program
in your path and will croak if it can't find it. Here are the
parameters that it accepts :
=over
=item gnupg_path
Path to the B<gpg> program.
=item options
Path to the options file for B<gpg>. If not specified, it will use
the default one (usually F<~/.gnupg/options>).
=item homedir
Path to the B<gpg> home directory. This is the directory that contains
the default F<options> file, the public and private key rings as well
as the trust database.
=item trace
If this variable is set to true, B<gpg> debugging output will be sent
to stderr.
=back
Example: my $gpg = new GnuPG();
=head1 METHODS
=head2 gen_key( [params] )
This methods is used to create a new gpg key pair. The methods croaks
if there is an error. It is a good idea to press random keys on the
keyboard while running this methods because it consumes a lot of
entropy from the computer. Here are the parameters it accepts :
=over
The passphrase that will be used to encrypt the private key. Optional
but strongly recommended.
=back
Example: $gpg->gen_key( algo => DSA_ELGAMAL, size => 1024,
name => "My name" );
=head2 import_keys( [params] )
Import keys into the GnuPG private or public keyring. The method
reference to an array containing a list of files that will be
imported.
=back
Example: $gpg->import_keys( keys => [ qw( key.pub key.sec ) ] );
=head2 export_keys( [params] )
Exports keys from the GnuPG keyrings. The method croaks if it
encounters an error. Parameters :
Set this parameter to true, if you want the exported keys to be ASCII
armored.
=back
Example: $gpg->export_keys( armor => 1, output => "keyring.pub" );
=head2 encrypt( [params] )
This method is used to encrypt a message, either using assymetric
algorithm or the passphrase that should be used to decrypt the private
key.
=back
Example: $gpg->encrypt( plaintext => file.txt, output => "file.gpg",
sign => 1, passphrase => $secret
);
=head2 sign( [params] )
If set to true, a digest of the data will be signed rather than
the whole file.
=back
Example: $gpg->sign( plaintext => "file.txt", output => "file.txt.asc",
armor => 1,
);
=head2 clearsign( [params] )
can be imported in your namespace with the :trust tag. They are
(TRUST_UNDEFINED, TRUST_NEVER, TRUST_MARGINAL, TRUST_FULLY, TRUST_ULTIMATE).
=back
Example : my $sig = $gpg->verify( signature => "file.txt.asc",
file => "file.txt" );
=head2 decrypt( [params] )
This method decrypts an encrypted message. It croaks, if there is an
will unlock the private key that should be used to decrypt the
message.
=back
Example: $gpg->decrypt( ciphertext => "file.gpg", output => "file.txt"
passphrase => $secret );
=head1 BUGS AND LIMITATIONS
This module doesn't work (yet) with the v2 branch of GnuPG.
L<GnuPG::Tie>
Alternative module: L<GnuPG::Interface>
gpg(1)
=cut
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
HV *hv = newHV();
SV *sv;
PACK_IV(psv_rdfree); /* rate: pages freed by daemon */
PACK_IV(psv_rintr); /* device interrupts */
PACK_IV(psv_rpgpgin); /* pages paged in */
PACK_IV(psv_rpgpgout); /* pages paged out */
PACK_IV(psv_rpgrec); /* total page reclaims */
PACK_IV(psv_rpgtlb); /* tlb flushes - 800 only */
PACK_IV(psv_rscan); /* scans in pageout daemon */
PACK_IV(psv_rswtch); /* context switches */
PACK_IV(psv_rsyscall); /* calls to syscall() */
PACK_IV(psv_snexfod); /* number of exfod's created */
PACK_IV(psv_snzfod); /* number of zero filled on demand */
PACK_IV(psv_spgfrec); /* page reclaims from free list */
PACK_IV(psv_spgin); /* pageins */
PACK_IV(psv_spgout); /* pageouts */
PACK_IV(psv_spgpgin); /* pages paged in */
PACK_IV(psv_spgpgout); /* pages paged out */
PACK_IV(psv_spswpin); /* pages swapped in */
PACK_IV(psv_spswpout); /* pages swapped out */
PACK_IV(psv_srev); /* revolutions of the hand */
PACK_IV(psv_sseqfree); /* pages taken from sequential programs */
PACK_IV(psv_sswtch); /* context switches */
view all matches for this distribution
view release on metacpan or search on metacpan
t/author-pod-spell.t view on Meta::CPAN
__DATA__
AFAICT
ABEND
RSRCHBOY
RSRCHBOY's
gpg
ini
metaclass
metaclasses
parameterized
parameterization
view all matches for this distribution