Public bug reported:

The dpkg-sig script is unable to verify a signature of a Debian package
when GNU ar is used to assemble the package. This also renders dpkg-sig
not capable of adding new signature when one already exists.

The problem lies in the difference of how GNU ar will terminate a file
name to indicate where it ends - it will add a trailing slash "/"
(forward slash) on the contrary to BSD ar which does not follow such
practice[1].

For example:

* File content:

krzysztof@b1:~$ ar vt zookeeper-cli_1.4.1-1_all.deb
rw-rw-r-- 0/0      4 Mar 18 21:16 2013 debian-binary
rw-rw-r-- 0/0    636 Mar 18 21:16 2013 control.tar.gz
rw-rw-r-- 0/0 9108275 Mar 18 21:16 2013 data.tar.gz

krzysztof@b1:~$ egrep -a 'debian-binary' zookeeper-cli_1.4.1-1_all.deb | tr -dc 
'[:alnum:][:space:][:punct:]'
debian-binary/  1363641418  0     0     100664  4         `

A trailing slash is visible in the example above.

* Signing:

krzysztof@v1:~$ dpkg-sig -k 83F709E3 --sign builder 
zookeeper-cli_1.4.1-1_all.deb
Processing zookeeper-cli_1.4.1-1_all.deb...
Signed deb zookeeper-cli_1.4.1-1_all.deb

* Verifying:

krzysztof@b1:~$ dpkg-sig -k 83F709E3 --verify zookeeper-cli_1.4.1-1_all.deb
Processing zookeeper-cli_1.4.1-1_all.deb...
BADSIG _gpgbuilder

* Actual signature (as per the content of added _gpgbuilder file):

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Version: 4
Signer: Ooyala, Inc.
Date: Tue Mar 19 04:58:02 2013
Role: builder
Files:
  3cf918272ffa5de195752d73f3da3e5e 7959c969e092f2a5a8604e2287807ac5b1b384ad 4 
debian-binary/
  3a15c94b05829d12483b84fab6c499bd 6b25fa2067a801fefb64e499a258e0489c837127 636 
control.tar.gz/
  f97656d8cbd740867628d219363ac06c 51b960d4f77d980e44594337b88508e1e6890ef0 
9108275 data.tar.gz/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBAgAGBQJRR/BaAAoJEBqJzH+D9wnjrVoP/21Qk6OZlxYBUs2A5TUG6lXo
E0RXJAsLF+uQNNh3BlOBZFUAG8CuRWz4z/FmqroP6DQci/2QOsklTssrkEw5Vd6i
ierusxre/rKhJ6KJ8BFbeq08GKoOUhffbjlIR/mztACkyYznS+JgfMcTmn17oGq6
UzkniGgGI/LL3b/excVxBgqETlb2nSp5i3xPoa2f6FiRYVn45c3AZ531tR3mwaap
UN3CsP5l/RRzR1B++QT13T74EWkWkOeWZPws9sTJICVVqkyADYE8kinRI+I1avaQ
AKh7HbSszAklzMxo96SD/eO4whA1PBon1pcMC0VMGmqDnlvkoDYt+DpKuAEyTG98
t0z3dEzeLDuyxJL62/QUXorSC6fRtc4xlScF/Rw1AkBDhr9G9sBJ25RJmOtX+miS
DYo6qLgQVkWX2tNS80Istrnz+rGRv+T+xiKKNrvTJp3RdfPYnK8pXG8XJmG92nAL
bStwZxn4f2twfhJn2qdjuw1G+BDloGotpnK8IHPKd9ojHCdC3eE5d8TOIMuuz2d1
5XORkYCrtiJKxHlzLa75y1622dztPot0aIWkxiA7ju80w2LDqU9R+FlEUpF7fEcd
Dq4jl2eKGSutrbPbT3mRpJ4F1hMmAm+vh0ywJK7l/JzbjlY6nfIdYlBNM0zF2yFC
0/LEeVqodFWPKg//X1RS
=5/mm
-----END PGP SIGNATURE-----

Please note the trailing slash in the lines where checksums were added.

As per the "deb" file format guide a trailing slash is valid and Debian
package may contain it[2].

This can be reproduced on both Lucid and Precise, and current Debian -
pretty much every version of the "dpkg-sig" package is affected. It his
particular case it was the following:

krzysztof@b1:~$ apt-cache show dpkg-sig
Package: dpkg-sig
Priority: optional
Section: universe/devel
Installed-Size: 236
Maintainer: Ubuntu MOTU Developers <ubuntu-m...@lists.ubuntu.com>
Original-Maintainer: Marc 'HE' Brockschmidt <h...@debian.org>
Architecture: all
Version: 0.13.1
Depends: perl, gnupg, libdigest-md5-perl, libconfig-file-perl
Suggests: ssh, libterm-readkey-perl
Filename: pool/universe/d/dpkg-sig/dpkg-sig_0.13.1_all.deb
Size: 37714
MD5sum: 72677be8cfd4f8d8cc3d2722ddcf5ee2
SHA1: a23950a4b29f36cd4c2b3a88f618926ca772852d
SHA256: 10911f3ae268d2e5bffc7d4ed5e043a5c0c8bf1151918ed4cab15c0d4c0db310
Description-en: create and verify signatures on .deb-files
 dpkg-sig is a low-level tool for creation and verification of
 signature on Debian binary packages (.deb-files).
 .
 The created signed packages are strict compatible with dpkg and the
 apt-utils.
 .
 Website is http://dpkg-sig.turmzimmer.net/
Description-md5: af8f9217fe0119840369e775a3c5bc7c
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu

Installed on the following release:

krzysztof@b1:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.1 LTS
Release:        12.04
Codename:       precise

There is an existing bug open against it with Debian:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=356509

I am attaching a small (and probably incorrect) patch that was used by
me to fix the issue with GPG verification and creation. I use automated
package building facility (comprised of both FPM and dpkg-buildpackage
et al) and was relying on the "dpkg-sig" script when it goes to adding
and verifying files.

1. http://en.wikipedia.org/wiki/Ar_%28Unix%29#BSD_variant
2. http://manpages.ubuntu.com/manpages/lucid/man5/deb.5.html

** Affects: dpkg-sig (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: packaging

** Patch added: "Possible solution to the dpkg-sig issue."
   
https://bugs.launchpad.net/bugs/1156988/+attachment/3582593/+files/dpkg-dig.diff

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1156988

Title:
  Fails to verify GPG signature of a package

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dpkg-sig/+bug/1156988/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to