]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/packages.el: Add `all` to package-check-signature
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 12 May 2019 17:03:24 +0000 (13:03 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 12 May 2019 17:03:24 +0000 (13:03 -0400)
(package-check-signature): Add `all` option.
(package--check-signature-content): Adjust accordingly.

etc/NEWS
lisp/emacs-lisp/package.el

index d10a5532447015853b8d4a39f6f4f6fd1e459328..43ad8be1cc1b9a4552fb703ff58574cd4d6675bb 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -718,6 +718,12 @@ it can't find the config file.
 
 ** Package
 
+*** Change of 'package-check-signature' for packages with multiple sigs
+In previous Emacsen, 't' checked that all signatures are valid.
+Now 't' only checks that at least one signature is valid and the new 'all'
+value needs to be used if you want to enforce that all signatures
+are valid.  This only affects packages with multiple signatures.
+
 *** New function 'package-get-version' lets packages query their own version.
 Example use in auctex.el: '(defconst auctex-version (package-get-version))'
 
index 61cf690697169e75ef3fd756a97b6fca68375919..949ad711ae34c9aea40519bd82d6d56d1d7c1cdd 100644 (file)
@@ -334,16 +334,22 @@ default directory."
            (epg-find-configuration 'OpenPGP))
       'allow-unsigned)
   "Non-nil means to check package signatures when installing.
-The value `allow-unsigned' means to still install a package even if
-it is unsigned.
+More specifically the value can be:
+- nil: package signatures are ignored.
+- `allow-unsigned': install a package even if it is unsigned,
+  but if it is signed and we have the key for it, verify the signature.
+- t: accept a package only if it comes with at least one verified signature.
+- `all': same as t, except when the package has several signatures,
+  in which case we verify all the signatures.
 
 This also applies to the \"archive-contents\" file that lists the
 contents of the archive."
   :type '(choice (const nil :tag "Never")
                  (const allow-unsigned :tag "Allow unsigned")
-                 (const t :tag "Check always"))
+                 (const t :tag "Check always")
+                 (const all :tag "Check all signatures"))
   :risky t
-  :version "24.4")
+  :version "27.1")
 
 (defcustom package-unsigned-archives nil
   "List of archives where we do not check for package signatures."
@@ -1257,7 +1263,9 @@ errors."
           (unless (and (eq package-check-signature 'allow-unsigned)
                        (eq (epg-signature-status sig) 'no-pubkey))
             (setq had-fatal-error t))))
-      (when (or (null good-signatures) had-fatal-error)
+      (when (or (null good-signatures)
+                (and (eq package-check-signature 'all)
+                     had-fatal-error))
         (package--display-verify-error context sig-file)
         (signal 'bad-signature (list sig-file)))
       good-signatures)))