tests: Use 'gpg-agent --allow-loopback-pinentry' if applicable.
authorJustus Winter <justus@g10code.com>
Mon, 20 Mar 2017 15:36:27 +0000 (16:36 +0100)
committerJustus Winter <justus@g10code.com>
Mon, 20 Mar 2017 15:41:43 +0000 (16:41 +0100)
* lang/python/tests/Makefile.am (gpg-agent.conf): Do not hard-code the
option.  This breaks gpg-agent from GnuPG 2.0.
* tests/start-stop-agent: Rather, check if the option is supported and
add it to the configuration if it is.

GnuPG-bug-id: 3008
Fixes-commit: bbf19124bbec9eb6298cef2914baae7ac74382fe
Signed-off-by: Justus Winter <justus@g10code.com>
lang/python/tests/Makefile.am
tests/start-stop-agent

index 7251cd3..a935222 100644 (file)
@@ -117,4 +117,3 @@ clean-local:
 ./gpg-agent.conf:
 # This is required for gpg2, which does not support command fd.
        echo pinentry-program $(abs_top_srcdir)/tests/gpg/pinentry >$@
-       echo allow-loopback-pinentry >>$@
index e843ce5..457f70d 100755 (executable)
@@ -38,6 +38,14 @@ fi
 
 echo "starting gpg-agent.." >&2
 
+# GnuPG prior to 2.1.12 needs --allow-loopback-pinentry for the
+# loopback entry to work.  Old versions do not understand this though,
+# so we need to be careful.
+if "$GPG_AGENT" --gpgconf-test --allow-loopback-pinentry &&
+   ! grep -q allow-loopback-pinentry "$GNUPGHOME/gpg-agent.conf"; then
+    echo allow-loopback-pinentry >> "$GNUPGHOME/gpg-agent.conf"
+fi
+
 gpg-connect-agent --agent-program="${GPG_AGENT}|--debug-quick-random" putval\ $token\ set /bye
 if [ $? -ne 0 -o "$(gpg-connect-agent getval\ $token /bye 2>/dev/null | head -1)" \
       != "D set" ]; then