]> git.saurik.com Git - apt.git/commitdiff
methods/gpgv: Correctly handle weak signatures with multiple keys
authorJulian Andres Klode <jak@debian.org>
Tue, 15 Mar 2016 09:56:05 +0000 (10:56 +0100)
committerJulian Andres Klode <jak@debian.org>
Tue, 15 Mar 2016 11:33:21 +0000 (12:33 +0100)
We added weak signatures to BadSigners, meaning that a Release file
signed by both a weak signature and a strong signature would be
rejected; preventing people from migrating from DSA to RSA keys
in a sane way.

Instead of using BadSigners, treat weak signatures like expired
keys: They are no good signatures, and they are worthless.

Gbp-Dch: ignore

methods/gpgv.cc

index 06e1612e61998cbb2b24bca17052fb17dc38f10e..de9dfea1eb943150f89923444cac34ce78e5e523 100644 (file)
@@ -159,7 +159,12 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
             std::clog << "Got VALIDSIG, key ID: " << sig << std::endl;
          // Reject weak digest algorithms
          if (std::find(WeakDigests.begin(), WeakDigests.end(), tokens[7]) != WeakDigests.end())
-            BadSigners.push_back(string(sig));
+         {
+            // Treat them like an expired key: For that a message about expiry
+            // is emitted, a VALIDSIG, but no GOODSIG.
+            WorthlessSigners.push_back("WEAKDIGEST " + string(sig));
+            GoodSigners.erase(std::remove(GoodSigners.begin(), GoodSigners.end(), string(sig)));
+         }
 
          ValidSigners.push_back(string(sig));
       }