when i have a set of OpenPGP signatures bundled together which have
different validities, it looks like gpg behaves differently depending on
if --batch is set or not.

In particular, an invalid signature seems to terminate the entire
--verify process (skipping later valid signatures) when --batch is set,
but it does not terminate the verification process otherwise.

Attached are two files: one is a simple shell script to demonstrate the
problem (with embedded data and signature material), and a fake key used
in the demonstrations.

When i run it, i get the following output (AB means the good sig from
the fake key occurs first, BA means the bad sig from my own key
(D21739E9) happens first:

> 0 d...@pip:~/src/gmimetest/gmimetest$ ./demonstrate-flip
> Testing without --batch:
>  ==AB== 
> [GNUPG:] SIG_ID 8Dv9B4/7/rdjgFrLYlRGhj31b3o 2010-11-21 1290318596
> [GNUPG:] GOODSIG FAF286F977F50B3B fake user <f...@example.org>
> [GNUPG:] VALIDSIG FCD3E0AFA74EE527C61E0D34FAF286F977F50B3B 2010-11-21 
> 1290318596 0 4 0 1 10 01 FCD3E0AFA74EE527C61E0D34FAF286F977F50B3B
> [GNUPG:] TRUST_UNDEFINED
> [GNUPG:] BADSIG CCD2ED94D21739E9 Daniel Kahn Gillmor <d...@fifthhorseman.net>
>  ==BA== 
> [GNUPG:] BADSIG CCD2ED94D21739E9 Daniel Kahn Gillmor <d...@fifthhorseman.net>
> [GNUPG:] SIG_ID 8Dv9B4/7/rdjgFrLYlRGhj31b3o 2010-11-21 1290318596
> [GNUPG:] GOODSIG FAF286F977F50B3B fake user <f...@example.org>
> [GNUPG:] VALIDSIG FCD3E0AFA74EE527C61E0D34FAF286F977F50B3B 2010-11-21 
> 1290318596 0 4 0 1 10 01 FCD3E0AFA74EE527C61E0D34FAF286F977F50B3B
> [GNUPG:] TRUST_UNDEFINED
> Testing with --batch:
>  ==AB== 
> [GNUPG:] SIG_ID 8Dv9B4/7/rdjgFrLYlRGhj31b3o 2010-11-21 1290318596
> [GNUPG:] GOODSIG FAF286F977F50B3B fake user <f...@example.org>
> [GNUPG:] VALIDSIG FCD3E0AFA74EE527C61E0D34FAF286F977F50B3B 2010-11-21 
> 1290318596 0 4 0 1 10 01 FCD3E0AFA74EE527C61E0D34FAF286F977F50B3B
> [GNUPG:] TRUST_UNDEFINED
> [GNUPG:] BADSIG CCD2ED94D21739E9 Daniel Kahn Gillmor <d...@fifthhorseman.net>
>  ==BA== 
> [GNUPG:] BADSIG CCD2ED94D21739E9 Daniel Kahn Gillmor <d...@fifthhorseman.net>
> 0 d...@pip:~/src/gmimetest/gmimetest$ 


And if i use a test user that doesn't actually have a copy of D21739E9
in its keyring, then i get feedback from both signatures even in order
BA with --batch (i suppose because the keyring can't tell that the
signature for D21739E9 is bad).

I see no good reason for --batch to cause gpg to terminate on the  first
badsig it sees, and no documentation justifying this behavior, so it
seems like a bug to me.

I tested this with gpg 1.4.11 and 2.0.14 on i386 GNU/Linux systems
running the current debian testing (gpg itself from debian's
experimental archive)

Regards,

        --dkg
#!/bin/bash


ab=$(mktemp signature.ab.XXXXXXX)
if [ $? != 0 ]; then
   exit 1
fi
ba=$(mktemp signature.ba.XXXXXXX)
if [ $? != 0 ]; then
   exit 1
fi
data=$(mktemp data.XXXXXXX)
if [ $? != 0 ]; then
   exit 1
fi

cat >>"$data" <<EOF
Content-Type: text/plain

this is a test
EOF

cat >>"$ab" <<EOF
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iJwEAQEKAAYFAkzoswQACgkQ+vKG+Xf1CzsYYwP8CkBYHc3lX4HUAPdSa4Zkrg8KbZkaLxabNbfW
X7HSx530T6/ItiJLS9kjVcF/gD9U01BsiSSuVGq0ye7a4K4BNpxN2fmbmC1SfABDNaZxh9cW/FDu
B+X8VXCXYwpcGgnxDQKxvRtEEOS6jeyXySaVEKhxpia/hL7VMAOJE7OVzteJAhwEAQEKAAYFAkzo
swQACgkQzNLtlNIXOekYYw/7BqdF1Re5r/XIEuLtI6M2CHX65Pkf6qomkfq/sfX3gCMCwCWnTBxQ
Tv0ywFgeCOI+zNBLgL1VNh/rUcgKFQxAwFh26c28mqMr48eLBAmYbatCPjfwT4Er/yizwPGRKXQ+
903c9wTowNCS0Bk/95LDsMx4c0JuyTUZDXTT0Qf/qcsfhL9OPD0CdPBmA9czDivNPXevCr4RGYoT
xGQVmrlZI2wzCzNYW/SraDtvTVjRUwzCFDNHzZ8u1duO7Qm+08SrNmODHaTjAmzkMJ4S7gDlC151
fKWLUZ3vjWoAlvahPlQbnyzqiah4AY45BjS+GcdAj6GL8dpisWSrwrS943LbNFCnQRncwMDzky9p
h2Jsd9ziurfC0z9YBRKELXx21DGNSP6W5x1DqXSpzcTcM/gL+yvPc0dkkx4DVKg0++Y0/cDo/2/g
Gn4s4AM5iS5gYkj0LFFbCvV44OPEcjfdzgzk5jRQ91yCt9uDDQk2v9pHCvWQG7Dsa0o4k8QLjqb1
G7UBBoFdLIH0ouFgmxOfoynveoO83bVtF3kzFP9VMpzneA021/myT9bva3SMD5UWQLm8bSBHOqen
VSt6ra7IcSdA+5KCOSNHJdkSq+1S2ctr7hsPxciTasMvA6GpMmgSKwUF+exsEMkhonuYU0nBBiey
D1gByBUg+kvSCkxoBlXGi8s=
-----END PGP SIGNATURE-----
EOF

cat >>"$ba" <<EOF
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBCgAGBQJM6LMEAAoJEMzS7ZTSFznpGGMP+wanRdUXua/1yBLi7SOjNgh1+uT5H+qqJpH6
v7H194AjAsAlp0wcUE79MsBYHgjiPszQS4C9VTYf61HIChUMQMBYdunNvJqjK+PHiwQJmG2rQj43
8E+BK/8os8DxkSl0PvdN3PcE6MDQktAZP/eSw7DMeHNCbsk1GQ1009EH/6nLH4S/Tjw9AnTwZgPX
Mw4rzT13rwq+ERmKE8RkFZq5WSNsMwszWFv0q2g7b01Y0VMMwhQzR82fLtXbju0JvtPEqzZjgx2k
4wJs5DCeEu4A5QtedXyli1Gd741qAJb2oT5UG58s6omoeAGOOQY0vhnHQI+hi/HaYrFkq8K0veNy
2zRQp0EZ3MDA85MvaYdibHfc4rq3wtM/WAUShC18dtQxjUj+lucdQ6l0qc3E3DP4C/srz3NHZJMe
A1SoNPvmNP3A6P9v4Bp+LOADOYkuYGJI9CxRWwr1eODjxHI33c4M5OY0UPdcgrfbgw0JNr/aRwr1
kBuw7GtKOJPEC46m9Ru1AQaBXSyB9KLhYJsTn6Mp73qDvN21bRd5MxT/VTKc53gNNtf5sk/W72t0
jA+VFkC5vG0gRzqnp1Ureq2uyHEnQPuSgjkjRyXZEqvtUtnLa+4bD8XIk2rDLwOhqTJoEisFBfns
bBDJIaJ7mFNJwQYnsg9YAcgVIPpL0gpMaAZVxovLiJwEAQEKAAYFAkzoswQACgkQ+vKG+Xf1CzsY
YwP8CkBYHc3lX4HUAPdSa4Zkrg8KbZkaLxabNbfWX7HSx530T6/ItiJLS9kjVcF/gD9U01BsiSSu
VGq0ye7a4K4BNpxN2fmbmC1SfABDNaZxh9cW/FDuB+X8VXCXYwpcGgnxDQKxvRtEEOS6jeyXySaV
EKhxpia/hL7VMAOJE7OVztc=
-----END PGP SIGNATURE-----
EOF

echo "Testing without --batch:"

echo " ==AB== "
gpg --status-fd 1 --quiet --no-tty --verify "$ab" "$data" 2>/dev/null
echo " ==BA== "
gpg --status-fd 1 --quiet --no-tty --verify "$ba" "$data" 2>/dev/null

echo "Testing with --batch:"

echo " ==AB== "
gpg --batch --status-fd 1 --quiet --no-tty --verify "$ab" "$data" 2>/dev/null
echo " ==BA== "
gpg --batch --status-fd 1 --quiet --no-tty --verify "$ba" "$data" 2>/dev/null



rm -f "$data"
rm -f "$ab"
rm -f "$ba"
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

mI0ETOiY+QEEAKSVytin0iJzcrUH99CBhUGfp0OHaYhLADFGRrEtIwxLkicjnuOf
co/cU3NVEdH/w7iZWzHL79dupbBvvOzvG+/h1xXsiBm0wjq5pdS3tH3zn8eRyjHt
8FprjvIAdHjz0kM49FCe3LHB1uktCW9UgwE1/29A5qyLBmcO+ARW74PfABEBAAG0
HGZha2UgdXNlciA8ZmFrZUBleGFtcGxlLm9yZz6IvQQTAQoAJwUCTOiY+QIbAwUJ
AAk6gAULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRD68ob5d/ULOz9BBACdYgGu
76x0BU1njWipxuZnIPIN8SlJbNo6p9YZnK0Y2bEa84DF5zSH1IV7D1vwWYuJWJvB
pQBvoyXK0Xdn8g1EKhLYojr6JHcODmMGbB0QOBB8W2ofyYkix33ZeqCWLC+tvzot
KGGPZahTusrAw4hnvcZjh34DCYIgQLXuDeeCCw==
=Uy4v
-----END PGP PUBLIC KEY BLOCK-----

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Gnupg-users mailing list
Gnupg-users@gnupg.org
http://lists.gnupg.org/mailman/listinfo/gnupg-users

Reply via email to