config_host.mk.in | 2 ++ config_host/config_gpgme.h.in | 3 +++ configure.ac | 23 +++++++++++++++++++++++ xmlsecurity/CppunitTest_xmlsecurity_signing.mk | 14 +++++++++++++- xmlsecurity/qa/unit/signing/signing.cxx | 8 ++++++++ 5 files changed, 49 insertions(+), 1 deletion(-)
New commits: commit 74d438f716d9cef165c78f950d4c53a46c37503c Author: Rene Engelhard <[email protected]> Date: Sun Mar 18 22:25:36 2018 +0100 gpg4libre: fix failing gpg test due to over-long filenames This squashes the following commits: From f68929ac611fdda19c1ee413effc59d33aa5ef97 Mon Sep 17 00:00:00 2001 From: Thorsten Behrens <[email protected]> Date: Fri, 9 Mar 2018 01:38:26 +0100 Subject: gpg4libre: fix failing gpg test due to over-long filenames With long workdir path, gpg sometimes fails with 'gpg: can't connect to the agent: File name too long' error. WK recommends to create preferred socket dir under /run/user, needs prepping though via gpgconf. See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=84720 From d7ecf4a4e37a9eeffa2b40f9fe5a2e6a8f90c876 Mon Sep 17 00:00:00 2001 From: Rene Engelhard <[email protected]> Date: Sun, 18 Mar 2018 11:25:41 +0100 Subject: properly check for gpgconf (and --create-socketdir) working From d6ed1d415d36809d784af780231258ea0ee1024f Mon Sep 17 00:00:00 2001 From: Rene Engelhard <[email protected]> Date: Sun, 18 Mar 2018 19:06:58 +0100 Subject: actually add GPGCONF to config_host.mk.in From 7a95ee8d0badb2cbbd137a6e18af1bada35ae933 Mon Sep 17 00:00:00 2001 From: Rene Engelhard <[email protected]> Date: Sun, 18 Mar 2018 19:26:45 +0100 Subject: actually add HAVE_GPGCONF_SOCKETDIR to config_host.mk.in... From 5204a5145d8232ea0650144fb4756c38303ef06e Mon Sep 17 00:00:00 2001 From: Rene Engelhard <[email protected]> Date: Sun, 18 Mar 2018 19:28:55 +0100 Subject: revert accidentially comitted local changes :( From bc358d39ac985914160e8aaa23b29469470c032b Mon Sep 17 00:00:00 2001 From: Rene Engelhard <[email protected]> Date: Sun, 18 Mar 2018 20:36:45 +0100 Subject: this is sh, not make... Change-Id: I7880fd7eee57cedc19b72348b45f0c1389409fe6 Reviewed-on: https://gerrit.libreoffice.org/51521 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/config_host.mk.in b/config_host.mk.in index 7d793455901b..8cbbc5fee1d5 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -198,6 +198,7 @@ export EPOXY_LIBS=$(gb_SPACE)@EPOXY_LIBS@ export GLM_CFLAGS=$(gb_SPACE)@GLM_CFLAGS@ export GPG_ERROR_CFLAGS=$(gb_SPACE)@GPG_ERROR_CFLAGS@ export GPG_ERROR_LIBS=$(gb_SPACE)@GPG_ERROR_LIBS@ +export GPGCONF=@GPGCONF@ export GPGMEPP_CFLAGS=$(gb_SPACE)@GPGMEPP_CFLAGS@ export GPGMEPP_LIBS=$(gb_SPACE)@GPGMEPP_LIBS@ export GNUTLS_CFLAGS=$(gb_SPACE)@GNUTLS_CFLAGS@ @@ -241,6 +242,7 @@ export HAVE_GCC_FNO_INLINE=@HAVE_GCC_FNO_INLINE@ export HAVE_GCC_FNO_SIZED_DEALLOCATION=@HAVE_GCC_FNO_SIZED_DEALLOCATION@ export HAVE_GCC_GGDB2=@HAVE_GCC_GGDB2@ export HAVE_GNUMAKE_FILE_FUNC=@HAVE_GNUMAKE_FILE_FUNC@ +export HAVE_GPGCONF_SOCKETDIR=@HAVE_GPGCONF_SOCKETDIR@ export HAVE_LD_BSYMBOLIC_FUNCTIONS=@HAVE_LD_BSYMBOLIC_FUNCTIONS@ export HAVE_LD_HASH_STYLE=@HAVE_LD_HASH_STYLE@ export HAVE_POSIX_FALLOCATE=@HAVE_POSIX_FALLOCATE@ diff --git a/config_host/config_gpgme.h.in b/config_host/config_gpgme.h.in index 7e46f3703ec3..4a2f24a2de61 100644 --- a/config_host/config_gpgme.h.in +++ b/config_host/config_gpgme.h.in @@ -19,6 +19,9 @@ // Defined if gpg and gpgme signature verification is available #define HAVE_FEATURE_GPGVERIFY 0 +// Defined if gpgconf --create-socketdir works +#define HAVE_GPGCONF_SOCKETDIR 0 + #if HAVE_FEATURE_GPGME # include "config_lgpl.h" #endif diff --git a/configure.ac b/configure.ac index 24eb7d846985..6ab7bc51f4bc 100644 --- a/configure.ac +++ b/configure.ac @@ -10164,6 +10164,27 @@ elif test "$_os" = "Linux" -o "$_os" = "Darwin" \ # gpg installation to run OpenPGP signature verification AC_DEFINE([HAVE_FEATURE_GPGVERIFY]) fi + if test "$_os" = "Linux"; then + uid=`id -u` + AC_MSG_CHECKING([for /run/user/$uid]) + if test -d /run/user/$uid; then + AC_MSG_RESULT([yes]) + AC_PATH_PROG(GPGCONF, gpgconf) + AC_MSG_CHECKING([for gpgconf --create-socketdir... ]) + if $GPGCONF --dump-options > /dev/null ; then + if $GPGCONF --dump-options | grep -q create-socketdir ; then + AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_GPGCONF_SOCKETDIR]) + else + AC_MSG_RESULT([no]) + fi + else + AC_MSG_RESULT([no. missing or broken gpgconf?]) + fi + else + AC_MSG_RESULT([no]) + fi + fi fi AC_SUBST(ENABLE_GPGMEPP) AC_SUBST(SYSTEM_GPGMEPP) @@ -10173,6 +10194,8 @@ AC_SUBST(LIBASSUAN_CFLAGS) AC_SUBST(LIBASSUAN_LIBS) AC_SUBST(GPGMEPP_CFLAGS) AC_SUBST(GPGMEPP_LIBS) +AC_SUBST(GPGCONF) +AC_SUBST(HAVE_GPGCONF_SOCKETDIR) AC_MSG_CHECKING([whether to build the Wiki Publisher extension]) if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then diff --git a/xmlsecurity/CppunitTest_xmlsecurity_signing.mk b/xmlsecurity/CppunitTest_xmlsecurity_signing.mk index c382e3b09e75..2f3ed41e2dfb 100644 --- a/xmlsecurity/CppunitTest_xmlsecurity_signing.mk +++ b/xmlsecurity/CppunitTest_xmlsecurity_signing.mk @@ -52,11 +52,23 @@ ifeq ($(ENABLE_PDFIMPORT),TRUE) $(eval $(call gb_CppunitTest_use_executable,xmlsecurity_signing,xpdfimport)) endif -# reset the LD_LIBRARY_PATH for spawned GPG processes +# various hacks to make unit test work on Linux more often ifeq ($(OS),LINUX) +# reset the LD_LIBRARY_PATH for spawned GPG processes $(call gb_CppunitTest_get_target,xmlsecurity_signing): \ EXTRA_ENV_VARS := \ LIBO_LD_PATH=$$LD_LIBRARY_PATH + +ifneq (,$(HAVE_GPGCONF_SOCKETDIR)) +# create socket dir below /run/user/ instead of in workdir +.PHONY : gb_CppunitTest_run_gpgconf +gb_CppunitTest_run_gpgconf: + GNUPGHOME=$(WORKDIR)/CppunitTest/xmlsecurity_signing.test.user \ + $(GPGCONF) --create-socketdir + +$(call gb_CppunitTest_get_target,xmlsecurity_signing): \ + gb_CppunitTest_run_gpgconf +endif endif # vim: set noet sw=4 ts=4: diff --git a/xmlsecurity/qa/unit/signing/signing.cxx b/xmlsecurity/qa/unit/signing/signing.cxx index 39a6d0ca6299..b7cc077d2097 100644 --- a/xmlsecurity/qa/unit/signing/signing.cxx +++ b/xmlsecurity/qa/unit/signing/signing.cxx @@ -113,9 +113,11 @@ public: void testODFBrokenStreamGPG(); /// Test a typical broken ODF signature where the XML dsig hash is corrupted. void testODFBrokenDsigGPG(); +#if HAVE_GPGCONF_SOCKETDIR /// Test loading an encrypted ODF document void testODFEncryptedGPG(); #endif +#endif CPPUNIT_TEST_SUITE(SigningTest); CPPUNIT_TEST(testDescription); CPPUNIT_TEST(testODFGood); @@ -143,8 +145,10 @@ public: CPPUNIT_TEST(testODFUntrustedGoodGPG); CPPUNIT_TEST(testODFBrokenStreamGPG); CPPUNIT_TEST(testODFBrokenDsigGPG); +#if HAVE_GPGCONF_SOCKETDIR CPPUNIT_TEST(testODFEncryptedGPG); #endif +#endif CPPUNIT_TEST_SUITE_END(); private: @@ -743,6 +747,8 @@ void SigningTest::testODFBrokenDsigGPG() CPPUNIT_ASSERT_EQUAL(static_cast<int>(SignatureState::BROKEN), static_cast<int>(pObjectShell->GetDocumentSignatureState())); } +#if HAVE_GPGCONF_SOCKETDIR + void SigningTest::testODFEncryptedGPG() { createDoc(m_directories.getURLFromSrc(DATA_DIRECTORY) + "encryptedGPG.odt"); @@ -754,6 +760,8 @@ void SigningTest::testODFEncryptedGPG() #endif +#endif + void SigningTest::registerNamespaces(xmlXPathContextPtr& pXmlXpathCtx) { xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("odfds"), BAD_CAST("urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0")); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
