GNU bug report logs - #23619
Some epg tests fail

Previous Next

Package: emacs;

Reported by: Glenn Morris <rgm <at> gnu.org>

Date: Wed, 25 May 2016 17:02:01 UTC

Severity: minor

Found in version 25.1.50

Fixed in version 26.1

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #6 received at 23619 <at> debbugs.gnu.org (full text, mbox):

From: npostavs <at> users.sourceforge.net
To: Glenn Morris <rgm <at> gnu.org>
Cc: 23619 <at> debbugs.gnu.org, ueno <at> gnu.org
Subject: Re: bug#23619: Some epg tests fail
Date: Sun, 19 Feb 2017 10:58:08 -0500
[Message part 1 (text/plain, inline)]
tags 23619 patch
quit

Glenn Morris <rgm <at> gnu.org> writes:

> Two epg tests fail for me on RHEL 7.2 with current master (and have done
> since they stopped being skipped).
>
> gpg --version
> gpg (GnuPG) 2.0.22
> libgcrypt 1.5.3

> 2 unexpected results:
>    FAILED  epg-decrypt-1
>    FAILED  epg-roundtrip-1

I have

    gpg --version
    gpg (GnuPG) 2.1.18
    libgcrypt 1.7.6

These tests popup a dialog box to enter a passphrase before failing.
The following patch which sets pinentry mode to 'loopback' fixes it for
me (I have not tested with other gpg versions though):

[v1-0001-Fix-passphrase-callback-with-gpg-2.x-Bug-23619.patch (text/x-diff, inline)]
From 1414b5b5f7c52215c0b7b5aaac2b657b69802ee4 Mon Sep 17 00:00:00 2001
From: Noam Postavsky <npostavs <at> gmail.com>
Date: Sun, 19 Feb 2017 10:34:50 -0500
Subject: [PATCH v1] Fix passphrase callback with gpg 2.x (Bug#23619)

* lisp/epg.el (epg-context-set-passphrase-callback): Set CONTEXT's
pinentry mode to `loopback'.
---
 lisp/epg.el | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/lisp/epg.el b/lisp/epg.el
index 587271b000..6b4accf1fe 100644
--- a/lisp/epg.el
+++ b/lisp/epg.el
@@ -246,16 +246,15 @@ epg-context-set-passphrase-callback
 The function gets three arguments: the context, the key-id in
 question, and the callback data (if any).
 
-The callback may not be called if you use GnuPG 2.x, which relies
-on the external program called `gpg-agent' for passphrase query.
-If you really want to intercept passphrase query, consider
-installing GnuPG 1.x _along with_ GnuPG 2.x, which does passphrase
-query by itself and Emacs can intercept them."
+Also set CONTEXT's pinentry mode to `loopback' (when using GnuPG
+2.x, the callback would not be called otherwise)."
   ;; (declare (obsolete setf "25.1"))
   (setf (epg-context-passphrase-callback context)
         (if (functionp passphrase-callback)
 	    (list passphrase-callback)
-	  passphrase-callback)))
+	  passphrase-callback))
+  (when passphrase-callback
+    (setf (epg-context-pinentry-mode context) 'loopback)))
 
 (defun epg-context-set-progress-callback (context
 					  progress-callback)
-- 
2.11.1


This bug report was last modified 8 years and 7 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.