Crypt-OpenPGP
view release on metacpan or search on metacpan
lib/Crypt/OpenPGP/KeyServer.pm view on Meta::CPAN
}
sub find_keyblock_by_uid {
my $server = shift;
my($address) = @_;
my $ua = LWP::UserAgent->new;
$ua->agent('Crypt::OpenPGP/' . Crypt::OpenPGP->VERSION);
my $url = $server->{keyserver} . '?op=index&search=' .
uri_escape($address);
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);
return $server->error("HTTP error: " . $res->status_line)
unless $res->is_success;
my $page = $res->content;
my @kb;
while ($page =~ m!(pub.*?>)!gs) {
my $line = $1;
next if index($line, "*** KEY REVOKED ***") != -1 &&
!$server->{include_revoked};
my($key_id) = $line =~ m!<a.*?>(.{8})</a>!g;
lib/Crypt/OpenPGP/KeyServer.pm view on Meta::CPAN
}
sub find_keyblock_by_keyid {
my $server = shift;
my($key_id) = @_;
$key_id = unpack 'H*', $key_id;
my $ua = LWP::UserAgent->new;
$ua->agent('Crypt::OpenPGP/' . Crypt::OpenPGP->VERSION);
$key_id = substr($key_id, -8, 8);
my $url = $server->{keyserver} . '?op=get&search=0x' . $key_id;
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);
return $server->error("HTTP error: " . $res->status_line)
unless $res->is_success;
my $page = $res->content;
my($key) = $page =~ /(-----BEGIN PGP PUBLIC KEY BLOCK-----.*?-----END PGP PUBLIC KEY BLOCK-----)/s;
return $server->error("No matching keys") unless $key;
my $ring = Crypt::OpenPGP::KeyRing->new( Data => $key )
or return Crypt::OpenPGP::KeyRing->errstr;
$ring->find_keyblock_by_index(0);
}
( run in 0.402 second using v1.01-cache-2.11-cpan-de7293f3b23 )