X-Git-Url: https://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fmml1991.el;fp=lisp%2Fmml1991.el;h=1777a6603198be7f69e71f5baf546f29c1d8edb9;hp=ad9f95796fe9472b01a4935f2916cb77413347c5;hb=ad0f048aaf5f8cac4312c55117171719d511ca13;hpb=8a021aefde6f386bf1a5d108798f7a93829aee85 diff --git a/lisp/mml1991.el b/lisp/mml1991.el index ad9f95796..1777a6603 100644 --- a/lisp/mml1991.el +++ b/lisp/mml1991.el @@ -282,13 +282,16 @@ Whether the passphrase is cached at all is controlled by (catch 'found (while keys (let ((pointer (epg-key-sub-key-list (car keys)))) - (while pointer - (if (and (memq usage (epg-sub-key-capability (car pointer))) - (not (memq 'disabled (epg-sub-key-capability (car pointer)))) - (not (memq (epg-sub-key-validity (car pointer)) - '(revoked expired)))) - (throw 'found (car keys))) - (setq pointer (cdr pointer)))) + ;; The primary key will be marked as disabled, when the entire + ;; key is disabled (see 12 Field, Format of colon listings, in + ;; gnupg/doc/DETAILS) + (unless (memq 'disabled (epg-sub-key-capability (car pointer))) + (while pointer + (if (and (memq usage (epg-sub-key-capability (car pointer))) + (not (memq (epg-sub-key-validity (car pointer)) + '(revoked expired)))) + (throw 'found (car keys))) + (setq pointer (cdr pointer))))) (setq keys (cdr keys))))) ;; XXX: since gpg --list-secret-keys does not return validity of each