diff --git a/tests/gpgsm/Makefile.am b/tests/gpgsm/Makefile.am index c73faeaf..a5667a85 100644 --- a/tests/gpgsm/Makefile.am +++ b/tests/gpgsm/Makefile.am @@ -1,80 +1,81 @@ # Copyright (C) 2000 Werner Koch (dd9jn) # Copyright (C) 2001 g10 Code GmbH # # This file is part of GPGME. # # GPGME is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 2.1 of the # License, or (at your option) any later version. # # GPGME is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General # Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ## Process this file with automake to produce Makefile.in GPGSM = gpgsm TESTS_ENVIRONMENT = GNUPGHOME=$(abs_builddir) LC_ALL=C GPG_AGENT_INFO= \ top_srcdir=$(top_srcdir) noinst_HEADERS = t-support.h c_tests = t-import t-keylist t-encrypt t-verify t-decrypt t-sign t-export TESTS = initial.test $(c_tests) final.test EXTRA_DIST = cert_dfn_pca01.der cert_dfn_pca15.der cert_g10code_test1.der \ $(key_id) initial.test final.test AM_CPPFLAGS = -I$(top_builddir)/src @GPG_ERROR_CFLAGS@ AM_LDFLAGS = -no-install LDADD = ../../src/libgpgme.la # We don't run t-genkey in the test suite, because it takes too long # and needs a working pinentry. noinst_PROGRAMS = $(c_tests) t-genkey cms-keylist cms-decrypt key_id = 32100C27173EF6E9C4E9A25D3D69F86D37A4F939 CLEANFILES = pubring-stamp pubring.kbx pubring.kbx~ gpgsm.conf trustlist.txt \ random_seed S.gpg-agent clean-local: -$(top_srcdir)/tests/start-stop-agent --stop -rm -fR private-keys-v1.d export GNUPGHOME := $(abs_builddir) export GPG_AGENT_INFO := BUILT_SOURCES = gpgsm.conf trustlist.txt pubring-stamp \ private-keys-v1.d/gpg-sample.stamp ./pubring-stamp: $(srcdir)/cert_g10code_test1.der ./private-keys-v1.d/gpg-sample.stamp $(GPGSM) --import $(srcdir)/cert_g10code_test1.der touch pubring-stamp ./gpgsm.conf: echo disable-crl-checks > ./gpgsm.conf echo faked-system-time 1008241200 >> ./gpgsm.conf + echo "agent-program `which $(GPG_AGENT)`|--debug-quick-random" >> ./gpg.conf ./private-keys-v1.d/gpg-sample.stamp: $(srcdir)/$(key_id) -gpgconf --kill all $(MKDIR_P) ./private-keys-v1.d cp $(srcdir)/$(key_id) private-keys-v1.d/$(key_id).key echo x > ./private-keys-v1.d/gpg-sample.stamp ./trustlist.txt: echo $(key_id) > ./trustlist.txt echo >> ./trustlist.txt echo "# CN=test cert 1,OU=Aegypten Project,O=g10 Code GmbH,L=Düsseldorf,C=DE" >> ./trustlist.txt echo "3CF405464F66ED4A7DF45BBDD1E4282E33BDB76E S" >> ./trustlist.txt diff --git a/tests/start-stop-agent b/tests/start-stop-agent index 3ce6f22a..9514e0a1 100755 --- a/tests/start-stop-agent +++ b/tests/start-stop-agent @@ -1,56 +1,68 @@ #!/bin/sh # Copyright (C) 2013 g10 Code GmbH # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. This file is # distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY, to the extent permitted by law; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. if [ -z "$(command -v gpg-connect-agent)" ]; then echo "gpg-agent not installed and thus not started" >&2 exit 0; fi GPG_AGENT_INFO= export GPG_AGENT_INFO GPG_AGENT=$(which gpg-agent) token=$(echo "gpgme-$(pwd)" | tr ' ' '_') if [ "$1" = "--stop" ]; then if [ "$(gpg-connect-agent --no-autostart getval\ $token /bye 2>/dev/null | head -1)" \ != "D set" ]; then echo "gpg-agent not running" >&2 exit 0 fi echo "stopping gpg-agent " >&2 gpg-connect-agent KILLAGENT /bye >/dev/null 2>&1 exit 0 fi +# Update 'agent-program' in the configuration files to make sure we +# will always start exactly this agent again if we ever need to. +for F in gpg.conf gpgsm.conf +do + if test -f "$GNUPGHOME/$F" + then + mv "$GNUPGHOME/$F" "$GNUPGHOME/$F~" + sed -e "s#^agent-program.*#agent-program ${GPG_AGENT}|--debug-quick-random#" \ + >"$GNUPGHOME/$F" <"$GNUPGHOME/$F~" + fi +done + if [ "$(gpg-connect-agent --no-autostart getval\ $token /bye 2>/dev/null | head -1)" \ = "D set" ]; then echo "gpg-agent already running" >&2 exit 0 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 && test -f "$GNUPGHOME/gpg-agent.conf" && ! 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 echo "error starting gpg-agent" >&2 exit 1 fi exit 0