Commit | Line | Data |
6aaee015 |
1 | package CPANPLUS::Module::Signature; |
2 | |
3 | use strict; |
4 | |
5 | |
6 | use Cwd; |
7 | use CPANPLUS::Error; |
8 | use Params::Check qw[check]; |
9 | use Module::Load::Conditional qw[can_load]; |
10 | |
11 | |
12 | ### detached sig, not actually used afaik --kane ### |
13 | #sub get_signature { |
14 | # my $self = shift; |
15 | # |
16 | # my $clone = $self->clone; |
17 | # $clone->package( $self->package . '.sig' ); |
18 | # |
19 | # return $clone->fetch; |
20 | #} |
21 | |
22 | sub check_signature { |
23 | my $self = shift; |
24 | my $cb = $self->parent; |
25 | my $conf = $cb->configure_object; |
26 | my %hash = @_; |
27 | |
28 | my $verbose; |
29 | my $tmpl = { |
30 | verbose => {default => $conf->get_conf('verbose'), store => \$verbose}, |
31 | }; |
32 | |
33 | check( $tmpl, \%hash ) or return; |
34 | |
35 | my $dir = $self->status->extract or ( |
36 | error( loc( "Do not know what dir '%1' was extracted to; ". |
37 | "Cannot check signature", $self->module ) ), |
38 | return ); |
39 | |
40 | my $cwd = cwd(); |
41 | unless( $cb->_chdir( dir => $dir ) ) { |
42 | error(loc( "Could not chdir to '%1', cannot verify distribution '%2'", |
43 | $dir, $self->module )); |
44 | return; |
45 | } |
46 | |
47 | |
48 | ### check prerequisites |
49 | my $flag; |
50 | my $use_list = { 'Module::Signature' => '0.06' }; |
51 | if( can_load( modules => $use_list, verbose => 1 ) ) { |
52 | my $rv = Module::Signature::verify(); |
53 | |
54 | unless ($rv eq Module::Signature::SIGNATURE_OK() or |
55 | $rv eq Module::Signature::SIGNATURE_MISSING() |
56 | ) { |
57 | $flag++; # whoops, bad sig |
58 | } |
59 | } |
60 | |
61 | $cb->_chdir( dir => $cwd ); |
62 | return $flag ? 0 : 1; |
63 | } |
64 | |
65 | 1; |