This is an automated email from the git hooks/post-receive script.

guillem pushed a commit to branch main
in repository dpkg.

View the commit online:
https://git.dpkg.org/cgit/dpkg/dpkg.git/commit/?id=9ab885d538ade4b161ed1f1467f3cac3d8941b80

commit 9ab885d538ade4b161ed1f1467f3cac3d8941b80
Author: Guillem Jover <[email protected]>
AuthorDate: Sat Jul 30 20:10:36 2022 +0200

    Dpkg::OpenPGP: Split verify_signature() into verify() and inline_verify()
    
    This maps more closely to the SOP API.
---
 scripts/Dpkg/OpenPGP.pm        | 34 ++++++++++++++++++++++++++--------
 scripts/Dpkg/Source/Package.pm | 11 ++++-------
 2 files changed, 30 insertions(+), 15 deletions(-)

diff --git a/scripts/Dpkg/OpenPGP.pm b/scripts/Dpkg/OpenPGP.pm
index 018793565..93fa2d6b0 100644
--- a/scripts/Dpkg/OpenPGP.pm
+++ b/scripts/Dpkg/OpenPGP.pm
@@ -162,30 +162,48 @@ sub import_key {
 }
 
 sub _gpg_verify {
-    my ($opts, $sig) = @_;
+    my ($opts, $data, $sig, @certs) = @_;
 
     my $gpghome = File::Temp->newdir('dpkg-gpg-verify.XXXXXXXX', TMPDIR => 1);
 
     my @exec = qw(gpgv);
     push @exec, _gpg_options_weak_digests();
     push @exec, '--homedir', $gpghome;
-    foreach my $keyring (@{$opts->{keyrings}}) {
+    foreach my $keyring (@certs) {
         push @exec, '--keyring', $keyring;
     }
-    push @exec, $sig;
-    push @exec, $opts->{datafile} if exists $opts->{datafile};
+    push @exec, $sig if defined $sig;
+    push @exec, $data;
 
-    my $errmsg = sprintf g_('cannot verify signature %s'), $sig;
+    my $errmsg = sprintf g_('cannot verify signature for %s'), $data;
     _exec_openpgp($opts, \@exec, $errmsg);
 }
 
-sub verify_signature {
-    my ($opts, $sig) = @_;
+sub inline_verify {
+    my ($opts, $data, @certs) = @_;
 
     $opts->{require_valid_signature} //= 1;
 
     if (find_command('gpgv')) {
-        _gpg_verify($opts, $sig);
+        _gpg_verify($opts, $data, undef, @certs);
+    } elsif ($opts->{require_valid_signature}) {
+        error(g_('cannot verify inline signature on %s since GnuPG is not 
installed'),
+              $data);
+    } else {
+        warning(g_('cannot verify inline signature on %s since GnuPG is not 
installed'),
+                $data);
+    }
+
+    return;
+}
+
+sub verify {
+    my ($opts, $data, $sig, @certs) = @_;
+
+    $opts->{require_valid_signature} //= 1;
+
+    if (find_command('gpgv')) {
+        _gpg_verify($opts, $data, $sig, @certs);
     } elsif ($opts->{require_valid_signature}) {
         error(g_('cannot verify signature on %s since GnuPG is not installed'),
               $sig);
diff --git a/scripts/Dpkg/Source/Package.pm b/scripts/Dpkg/Source/Package.pm
index fdd05d6cf..e2540f8dd 100644
--- a/scripts/Dpkg/Source/Package.pm
+++ b/scripts/Dpkg/Source/Package.pm
@@ -445,12 +445,10 @@ sub check_original_tarball_signature {
     }, $upstream_key);
 
     foreach my $asc (@asc) {
+        my $datafile = $asc =~ s/\.asc$//r;
+
         info(g_('verifying %s'), $asc);
-        Dpkg::OpenPGP::verify_signature({
-            %{$opts},
-            keyrings => [ $keyring ],
-            datafile => $asc =~ s/\.asc$//r,
-        }, $asc);
+        Dpkg::OpenPGP::verify($opts, $datafile, $asc, $keyring);
     }
 }
 
@@ -491,10 +489,9 @@ sub check_signature {
     }
 
     my $opts = {
-        keyrings => \@keyrings,
         require_valid_signature => $self->{options}{require_valid_signature},
     };
-    Dpkg::OpenPGP::verify_signature($opts, $dsc);
+    Dpkg::OpenPGP::inline_verify($opts, $dsc, @keyrings);
 }
 
 sub describe_cmdline_options {

-- 
Dpkg.Org's dpkg

Reply via email to