]> git.saurik.com Git - apt.git/commitdiff
add the gpg-classic variant to the gpgv/gnupg or-group
authorDavid Kalnischkies <david@kalnischkies.de>
Tue, 16 Aug 2016 13:46:19 +0000 (15:46 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Wed, 17 Aug 2016 07:52:32 +0000 (09:52 +0200)
We need to support partial upgrades anyhow, so we have to deal with the
different versions and your tests try to ensure that we do, so we
shouldn't make any explicit higher requirements.

cmdline/apt-key.in
debian/control
debian/tests/control
prepare-release
test/integration/framework
test/integration/test-apt-key
test/integration/test-apt-key-net-update
test/integration/test-releasefile-verification

index 0f9118492197e144fc18fd4e7e723bc71973ba73..aff75c300bab3abca166b86da0a72433e3f6783a 100644 (file)
@@ -530,9 +530,11 @@ EOF
        GPG_EXE="gpg"
     elif command_available 'gpg2'; then
        GPG_EXE="gpg2"
+    elif command_available 'gpg1'; then
+       GPG_EXE="gpg1"
     else
-       echo >&2 "Error: gnupg or gnupg2 do not seem to be installed,"
-       echo >&2 "Error: but apt-key requires gnupg or gnupg2 for this operation."
+       echo >&2 "Error: gnupg, gnupg2 and gnupg1 do not seem to be installed,"
+       echo >&2 "Error: but apt-key requires gnupg, gnupg2 or gnupg1 for this operation."
        echo >&2
        exit 255
     fi
@@ -639,8 +641,9 @@ case "$command" in
        if [ -n "$GPGV" ] && command_available "$GPGV"; then true;
        elif command_available 'gpgv'; then GPGV='gpgv';
        elif command_available 'gpgv2'; then GPGV='gpgv2';
+       elif command_available 'gpgv1'; then GPGV='gpgv1';
        else
-          echo >&2 'ERROR: gpgv or gpgv2 required for verification'
+          echo >&2 'ERROR: gpgv, gpgv2 or gpgv1 required for verification'
           exit 29
        fi
        # for a forced keyid we need gpg --export, so full wrapping required
index c84e53927be0e500fd4d2e09efa98b4939749396..c383e2fc1350b3547b8b935a1683bbde93efbe0e 100644 (file)
@@ -19,10 +19,10 @@ Testsuite: autopkgtest
 
 Package: apt
 Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, ${apt:keyring}, gpgv | gpgv2, adduser
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${apt:keyring}, gpgv | gpgv2 | gpgv1, adduser
 Replaces: manpages-pl (<< 20060617-3~), manpages-it (<< 2.80-4~), sun-java6-jdk (>> 0), sun-java5-jdk (>> 0), openjdk-6-jdk (<< 6b24-1.11-0ubuntu1~), bash-completion (<< 1:2.1-4.2+fakesync1), apt-utils (<< 1.3~exp2~)
 Breaks: manpages-pl (<< 20060617-3~), manpages-it (<< 2.80-4~), sun-java6-jdk (>> 0), sun-java5-jdk (>> 0), openjdk-6-jdk (<< 6b24-1.11-0ubuntu1~), apt-utils (<< 1.3~exp2~)
-Recommends: gnupg | gnupg2
+Recommends: gnupg | gnupg2 | gnupg1
 Suggests: aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), apt-doc, python-apt, powermgmt-base
 Description: commandline package manager
  This package provides commandline tools for searching and
index 406679d371f2c51af86dbd2a45303a96917fc4e2..b7555dc2eee99e1c4ff9b606a81d1343996c529d 100644 (file)
@@ -1,4 +1,5 @@
 Tests: run-tests
 Restrictions: allow-stderr
-Depends: @, @builddeps@, fakeroot, wget, stunnel4, lsof, db-util, gnupg, gnupg2,
+Depends: @, @builddeps@, fakeroot, wget, stunnel4, lsof, db-util,
+         gnupg, gnupg1, gpgv, gpgv1,
          libfile-fcntllock-perl, python3-apt
index df1b0a2cf0b5259046f980527e7679e34c1fedad..1e434a3050cac24cf196bfa3cf143bede93d5672 100755 (executable)
@@ -158,8 +158,9 @@ elif [ "$1" = 'buildlog' ]; then
                shift
        done
 elif [ "$1" = 'travis-ci' ]; then
-       apt-get install -qy --no-install-recommends $(sed -n -e '/^Build-Depends: /,/^Build-Depends-Indep: / {p}' debian/control | sed -e 's#([^)]*)##g' -e 's#^Build-Depends\(-Indep\)\?: ##' -e 's#<.*>##g' | tr -d ',')
-       apt-get install -qy --no-install-recommends $(sed -n 's#^Depends: .*@, \(.*\)$#\1#p' debian/tests/control | tr -d ',')
+       apt-get install -qy --no-install-recommends dctrl-tools
+       apt-get install -qy --no-install-recommends $(grep-dctrl -S -s Build-Depends,Build-Depends-Indep,Build-Depends-Arch apt ./debian/control | sed -e 's#([^)]*)##g' -e 's#^Build-Depends\(-Indep\|-Arch\)\?: ##'     -e 's#<.*>##g' | tr -s '\n,' ' ')
+       apt-get install -qy --no-install-recommends $(grep-dctrl -F Tests -s Depends run-tests ./debian/tests/control | tr -s '\n,' ' ' | cut -d'@' -f 4- | sed -e 's#gnupg1#gnupg2#' -e 's#gpgv1#gpgv2#')
 elif [ "$1" = 'coverage' ]; then
        DIR="${2:-./coverage}"
        git clean -dfX # remove ignored build artefacts for a clean start
index 8d124858be3daab8a29b5c347eebf4730888063f..1e356ffaf3e4e0a79ead9fd75e40dc3e2625b48d 100644 (file)
@@ -1856,49 +1856,24 @@ testwebserverlaststatuscode() {
        msggroup
 }
 
-createlistofkeys() {
-       local OUTPUT="$1"
-       shift
+mapkeynametokeyid() {
        while [ -n "$1" ]; do
-               # gpg 2.1.something starts printing [SC] at some point
-               if grep -q ' rsa2048/' "$OUTPUT" && grep -qF '[SC]' "$OUTPUT"; then
-                       case "$1" in
-                               *Joe*|*Sixpack*) echo 'pub   rsa2048/DBAC8DAE 2010-08-18 [SC]';;
-                               *Rex*|*Expired*) echo 'pub   rsa2048/27CE74F9 2013-07-12 [SC] [expired: 2013-07-13]';;
-                               *Marvin*|*Paranoid*) echo 'pub   rsa2048/528144E2 2011-01-16 [SC]';;
-                               oldarchive) echo 'pub   rsa1024/F68C85A3 2013-12-19 [SC]';;
-                               newarchive) echo 'pub   rsa2048/DBAC8DAE 2010-08-18 [SC]';;
-                               *) echo 'UNKNOWN KEY';;
-                       esac
-               # gpg 2.1 has a slightly different output format
-               elif grep -q ' rsa2048/' "$OUTPUT"; then
-                       case "$1" in
-                               *Joe*|*Sixpack*) echo 'pub   rsa2048/DBAC8DAE 2010-08-18';;
-                               *Rex*|*Expired*) echo 'pub   rsa2048/27CE74F9 2013-07-12 [expired: 2013-07-13]';;
-                               *Marvin*|*Paranoid*) echo 'pub   rsa2048/528144E2 2011-01-16';;
-                               oldarchive) echo 'pub   rsa1024/F68C85A3 2013-12-19';;
-                               newarchive) echo 'pub   rsa2048/DBAC8DAE 2010-08-18';;
-                               *) echo 'UNKNOWN KEY';;
-                       esac
-               else
-                       case "$1" in
-                               *Joe*|*Sixpack*) echo 'pub   2048R/DBAC8DAE 2010-08-18';;
-                               *Rex*|*Expired*) echo 'pub   2048R/27CE74F9 2013-07-12 [expired: 2013-07-13]';;
-                               *Marvin*|*Paranoid*) echo 'pub   2048R/528144E2 2011-01-16';;
-                               oldarchive) echo 'pub   1024R/F68C85A3 2013-12-19';;
-                               newarchive) echo 'pub   2048R/DBAC8DAE 2010-08-18';;
-                               *) echo 'UNKNOWN KEY';;
-                       esac
-               fi
+               case "$1" in
+                       *Joe*|*Sixpack*|newarchive) echo '5A90D141DBAC8DAE';;
+                       *Rex*|*Expired*) echo '4BC0A39C27CE74F9';;
+                       *Marvin*|*Paranoid*) echo 'E8525D47528144E2';;
+                       oldarchive) echo 'FDD2DB85F68C85A3';;
+                       *) echo 'UNKNOWN KEY';;
+               esac
                shift
        done
 }
 testaptkeys() {
        local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/aptkeylist.output"
-       if ! aptkey list | grep '^pub' > "$OUTPUT"; then
+       if ! aptkey list --with-colon | grep '^pub' | cut -d':' -f 5 > "$OUTPUT"; then
                echo -n > "$OUTPUT"
        fi
-       testfileequal "$OUTPUT" "$(createlistofkeys "$OUTPUT" "$@")"
+       testfileequal "$OUTPUT" "$(mapkeynametokeyid "$@")"
 }
 
 pause() {
index e777de1a44535750f76281d59e21d4b998ccdd18..eb5f998cf55386ddc28413e077209b0b970b4c2c 100755 (executable)
@@ -41,7 +41,9 @@ APT::Key::RemovedKeys \"${KEYDIR}/rexexpired.pub\";" > "${ROOTDIR}/etc/apt/apt.c
        msgtest 'Check that paths in finger output are not' 'double-slashed'
        testfailure --nomsg grep '//' "${ROOTDIR}/tmp/testsuccess.output"
 
-       testsuccessequal 'gpg: key DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) <joe@example.org>" not changed
+       testequalor2 'gpg: key DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) <joe@example.org>" not changed
+gpg: Total number processed: 1
+gpg:              unchanged: 1' 'gpg: key 5A90D141DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) <joe@example.org>" not changed
 gpg: Total number processed: 1
 gpg:              unchanged: 1' aptkey --fakeroot update
 
@@ -185,8 +187,9 @@ gpg:              unchanged: 1' aptkey --fakeroot update
        msgtest 'Test verify a file' 'with no sig'
        testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/testcase-multikey.pub" verify "${SIGNATURE}" "${SIGNATURE}2"
 
-       for GPGV in '' 'gpgv' 'gpgv2'; do
+       for GPGV in '' 'gpgv' 'gpgv1' 'gpgv2'; do
                echo "APT::Key::GPGVCommand \"$GPGV\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+               if [ -n "$GPGV" ] && ! command dpkg -l gnupg1 2>&1 | grep -q '^ii'; then continue; fi
 
                msgtest 'Test verify a file' 'with all keys'
                testsuccess --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}"
@@ -229,8 +232,9 @@ gpg:              unchanged: 1' aptkey --fakeroot update
                adv --batch --yes -u 'Marvin' -u 'Joe' --armor --detach-sign --sign --output "${SIGNATURE}.gpg" "${SIGNATURE}"
        testsuccess test -s "${SIGNATURE}.gpg" -a -s "${SIGNATURE}"
 
-       for GPGV in '' 'gpgv' 'gpgv2'; do
+       for GPGV in '' 'gpgv' 'gpgv1' 'gpgv2'; do
                echo "APT::Key::GPGVCommand \"$GPGV\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+               if [ -n "$GPGV" ] && ! command dpkg -l gnupg1 2>&1 | grep -q '^ii'; then continue; fi
 
                msgtest 'Test verify a doublesigned file' 'with all keys'
                testsuccess --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}"
@@ -265,11 +269,25 @@ gpg:              unchanged: 1' aptkey --fakeroot update
 }
 
 setupgpgcommand() {
-       echo "APT::Key::GPGCommand \"$1\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgcmd"
-       msgmsg 'Force tests to be run with' "$1"
+       local GPGEXE;
+       if command dpkg -l gnupg1 2>&1 | grep -q '^ii'; then
+               if [ "$1" = '1' ]; then
+                       GPGEXE='gpg1'
+               else
+                       GPGEXE='gpg'
+               fi
+       else
+               if [ "$1" = '1' ]; then
+                       GPGEXE='gpg'
+               else
+                       GPGEXE='gpg2'
+               fi
+       fi
+       msgmsg 'Force tests to be run with' "$GPGEXE"
+       echo "APT::Key::GPGCommand \"$GPGEXE\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgcmd"
        testsuccess aptkey --readonly adv --version
        cp "${ROOTDIR}/tmp/testsuccess.output" "${TMPWORKINGDIRECTORY}/aptkey.version"
-       testsuccess grep "^gpg (GnuPG) $2\." "${TMPWORKINGDIRECTORY}/aptkey.version"
+       testsuccess grep "^gpg (GnuPG) $1\." "${TMPWORKINGDIRECTORY}/aptkey.version"
 }
 
 # run with default (whatever this is) in current CWD with relative paths
@@ -285,7 +303,7 @@ cd inaccessible
 chmod 600 ../inaccessible
 testfilestats "${TMPWORKINGDIRECTORY}/inaccessible" '%a' '=' '600'
 
-setupgpgcommand 'gpg' '1'
+setupgpgcommand '1'
 testrun
-setupgpgcommand 'gpg2' '2'
+setupgpgcommand '2'
 testrun
index 990fb5ad213b007b6509adbd9c9285067b3685e5..b9f716e10e4f20ef060eb2f6141756842c0b9722 100755 (executable)
@@ -24,14 +24,7 @@ echo 'APT::Key::Net-Update-Enabled "1";' >> ./aptconfig.conf
 
 # test against the "real" webserver
 testsuccess aptkey --fakeroot net-update
-testequalor2 'Checking for new archive signing keys now
-gpg: key F68C85A3: public key "Test Automatic Archive Signing Key <ftpmaster@example.com>" imported
-gpg: Total number processed: 1
-gpg:               imported: 1  (RSA: 1)' 'Checking for new archive signing keys now
-gpg: key F68C85A3: public key "Test Automatic Archive Signing Key <ftpmaster@example.com>" imported
-gpg: Total number processed: 1
-gpg:               imported: 1' cat rootdir/tmp/testsuccess.output
-
+testfailure grep 'not added' rootdir/tmp/testsuccess.output
 testaptkeys 'oldarchive' 'newarchive'
 
 # now try a different one
index fec7b1302cd859be629b013102075a13605e99ce..20ca613da6467117e13eb084683d159f013a4713 100755 (executable)
@@ -237,7 +237,7 @@ runtest() {
        updatewithwarnings '^W: .* NO_PUBKEY'
        sed -i "s#^\(deb\(-src\)\?\) \[signed-by=$MARVIN\] #\1 #" rootdir/etc/apt/sources.list.d/*
 
-       local MARVIN="$(aptkey --keyring $MARVIN finger | grep 'Key fingerprint' | cut -d'=' -f 2 | tr -d ' ')"
+       local MARVIN="$(aptkey --keyring $MARVIN finger --with-colons | grep '^fpr' | cut -d':' -f 10)"
        msgmsg 'Cold archive signed by bad keyid' 'Joe Sixpack'
        rm -rf rootdir/var/lib/apt/lists
        signreleasefiles 'Joe Sixpack'
@@ -261,7 +261,7 @@ runtest() {
 " aptcache show apt
        installaptold
 
-       local SIXPACK="$(aptkey --keyring keys/joesixpack.pub finger | grep 'Key fingerprint' | cut -d'=' -f 2 | tr -d ' ')"
+       local SIXPACK="$(aptkey --keyring keys/joesixpack.pub finger --with-colons | grep '^fpr' | cut -d':' -f 10)"
        msgmsg 'Cold archive signed by good keyids' 'Joe Sixpack'
        rm -rf rootdir/var/lib/apt/lists
        signreleasefiles 'Joe Sixpack'
@@ -271,7 +271,6 @@ runtest() {
 " aptcache show apt
        installaptold
 
-       local SIXPACK="$(aptkey --keyring keys/joesixpack.pub finger | grep 'Key fingerprint' | cut -d'=' -f 2 | tr -d ' ')"
        msgmsg 'Cold archive signed by good keyids' 'Joe Sixpack'
        rm -rf rootdir/var/lib/apt/lists
        sed -i "s#^\(deb\(-src\)\?\) \[signed-by=${SIXPACK},${MARVIN}\] #\1 [signed-by=${MARVIN},${SIXPACK}] #" rootdir/etc/apt/sources.list.d/*