[poppler] Branch 'signatureHandling' - CMakeLists.txt config.h.cmake configure.ac poppler/Form.cc poppler/Makefile.am utils/CMakeLists.txt utils/Makefile.am

Albert Astals Cid aacid at kemper.freedesktop.org
Mon Oct 5 07:51:07 PDT 2015


 CMakeLists.txt       |   19 ++++++++++++++-----
 config.h.cmake       |    3 +++
 configure.ac         |   20 +++++++++++++++++++-
 poppler/Form.cc      |    7 ++++++-
 poppler/Makefile.am  |   28 ++++++++++++++++++++++------
 utils/CMakeLists.txt |   16 +++++++++-------
 utils/Makefile.am    |    5 ++++-
 7 files changed, 77 insertions(+), 21 deletions(-)

New commits:
commit 5570c70a20ae62a9b3341372fafc64e916774adb
Author: André Guerreiro <aguerreiro1985 at gmail.com>
Date:   Mon Oct 5 16:50:30 2015 +0200

    NSS conditional build

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ce16d53..ca71630 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -105,7 +105,7 @@ endif(WITH_FONTCONFIGURATION_FONTCONFIG)
 macro_optional_find_package(JPEG)
 macro_optional_find_package(PNG)
 macro_optional_find_package(TIFF)
-find_package(NSS3 REQUIRED)
+macro_optional_find_package(NSS3)
 if(JPEG_FOUND)
   set(ENABLE_LIBJPEG ${JPEG_FOUND})
 endif(JPEG_FOUND)
@@ -203,8 +203,6 @@ if(ENABLE_LIBCURL)
   set(POPPLER_HAS_CURL_SUPPORT ON)
 endif(ENABLE_LIBCURL)
 
-add_definitions(${NSS3_CFLAGS})
-
 add_definitions(-DHAVE_CONFIG_H=1)
 if(MINGW)
   # Use mingw's ansi stdio extensions
@@ -237,6 +235,11 @@ endif(CMAKE_USE_PTHREADS_INIT)
 if(ENABLE_ZLIB)
   include_directories(${ZLIB_INCLUDE_DIR})
 endif(ENABLE_ZLIB)
+
+if (NSS3_FOUND)
+  add_definitions(${NSS3_CFLAGS})
+  set(ENABLE_NSS3 ON)
+endif(NSS3_FOUND)
 if(JPEG_FOUND)
   include_directories(${JPEG_INCLUDE_DIR})
   set(ENABLE_LIBJPEG ON)
@@ -367,7 +370,6 @@ set(poppler_SRCS
   poppler/ProfileData.cc
   poppler/PreScanOutputDev.cc
   poppler/PSTokenizer.cc
-  poppler/SignatureHandler.cc
   poppler/SignatureInfo.cc
   poppler/Stream.cc
   poppler/StructTreeRoot.cc
@@ -417,7 +419,7 @@ endif(ENABLE_SPLASH)
 if(FONTCONFIG_FOUND)
   set(poppler_LIBS ${poppler_LIBS} ${FONTCONFIG_LIBRARIES})
 endif(FONTCONFIG_FOUND)
-set(poppler_LIBS ${poppler_LIBS} ${NSS3_LIBRARIES})
+
 if(JPEG_FOUND)
   set(poppler_SRCS ${poppler_SRCS}
     poppler/DCTStream.cc
@@ -437,6 +439,12 @@ if(ENABLE_LIBCURL)
   )
   set(poppler_LIBS ${poppler_LIBS} ${CURL_LIBRARIES})
 endif(ENABLE_LIBCURL)
+if (ENABLE_NSS3)
+  set(poppler_SRCS ${poppler_SRCS}
+    poppler/SignatureHandler.cc
+  )
+  set(poppler_LIBS ${poppler_LIBS} ${NSS3_LIBRARIES})
+endif(ENABLE_NSS3)  
 if(LIBOPENJPEG_FOUND)
   set(poppler_SRCS ${poppler_SRCS}
     poppler/JPEG2000Stream.cc
@@ -725,6 +733,7 @@ show_end_message_yesno("use libjpeg" ENABLE_LIBJPEG)
 show_end_message_yesno("use libpng" ENABLE_LIBPNG)
 show_end_message_yesno("use libtiff" ENABLE_LIBTIFF)
 show_end_message_yesno("use zlib" ENABLE_ZLIB)
+show_end_message_yesno("use nss3" ENABLE_NSS3)
 show_end_message_yesno("use curl" ENABLE_LIBCURL)
 show_end_message_yesno("use libopenjpeg" WITH_OPENJPEG)
 if(USE_OPENJPEG1)
diff --git a/config.h.cmake b/config.h.cmake
index 400b16b..b62994f 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -21,6 +21,9 @@
 /* Use zlib instead of builtin zlib decoder. */
 #cmakedefine ENABLE_ZLIB 1
 
+/* Build against libnss3 for digital signature validation */
+#cmakedefine ENABLE_NSS3 1
+
 /* Use cairo for rendering. */
 #cmakedefine HAVE_CAIRO 1
 
diff --git a/configure.ac b/configure.ac
index 741001d..da18b23 100644
--- a/configure.ac
+++ b/configure.ac
@@ -264,12 +264,29 @@ else
   enable_libopenjpeg=no
 fi
 
-PKG_CHECK_MODULES(NSS3, nss, [], [])
+dnl Test for NSS
+AC_ARG_ENABLE(libnss,
+        AC_HELP_STRING([--disable-nss],
+                       [Do not build against libnss3.]),
+              enable_libnss=$enableval,
+              enable_libnss="try")
+
+if test x$enable_libnss != xno; then
+  PKG_CHECK_MODULES(NSS3, nss, [enable_nss="yes"],
+      [enable_nss="no"])
+fi
+
+if test x$enable_nss = xyes; then
+  AC_DEFINE(ENABLE_NSS3, 1, [Build against NSS.])
+fi
 
 AM_CONDITIONAL(BUILD_LIBOPENJPEG, test x$openjpeg1 = xyes || test x$openjpeg2 = xyes)
 AH_TEMPLATE([ENABLE_LIBOPENJPEG],
 	    [Use libopenjpeg instead of builtin jpeg2000 decoder.])
 
+AM_CONDITIONAL(BUILD_NSS, test x$enable_nss = xyes)
+AH_TEMPLATE([ENABLE_NSS3], [Build Poppler against NSS for digital signature support.])
+
 dnl ##### Test for libtiff
 AC_ARG_ENABLE(libtiff,
 		AC_HELP_STRING([--disable-libtiff],
@@ -1007,6 +1024,7 @@ echo "  use libjpeg:        $enable_libjpeg"
 echo "  use libpng:         $enable_libpng"
 echo "  use libtiff:        $enable_libtiff"
 echo "  use zlib:           $enable_zlib"
+echo "  use nss             $enable_nss"
 echo "  use libcurl:        $enable_libcurl"
 echo "  use libopenjpeg:    $enable_libopenjpeg"
 if test x$enable_libopenjpeg = xyes;then
diff --git a/poppler/Form.cc b/poppler/Form.cc
index a2fd0cf..42ef2c1 100644
--- a/poppler/Form.cc
+++ b/poppler/Form.cc
@@ -39,7 +39,10 @@
 #include "Form.h"
 #include "PDFDoc.h"
 #include "DateInfo.h"
+#ifdef ENABLE_NSS3
 #include "SignatureHandler.h"
+#endif
+#include "SignatureInfo.h"
 #include "XRef.h"
 #include "PDFDocEncoding.h"
 #include "Annot.h"
@@ -1380,6 +1383,7 @@ FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& re
   : FormField(docA, dict, ref, parent, usedParents, formSignature)
 {
   signature = NULL;
+
   signature_info = new SignatureInfo();
   parseInfo();
 }
@@ -1433,7 +1437,7 @@ void FormFieldSignature::parseInfo()
 
 SignatureInfo *FormFieldSignature::validateSignature(bool doVerifyCert, bool forceRevalidation)
 {
-
+#ifdef ENABLE_NSS3
   if (!signature_info->isSubfilterSupported()) {
     error(errUnimplemented, 0, "Unable to validate this type of signature");
     return signature_info;
@@ -1498,6 +1502,7 @@ SignatureInfo *FormFieldSignature::validateSignature(bool doVerifyCert, bool for
   cert_val_state = signature_handler.validateCertificate();
   signature_info->setCertificateValStatus(SignatureHandler::NSS_CertTranslate(cert_val_state));
 
+#endif
   return signature_info;
 }
 
diff --git a/poppler/Makefile.am b/poppler/Makefile.am
index 2d8c5e6..1b6500f 100644
--- a/poppler/Makefile.am
+++ b/poppler/Makefile.am
@@ -78,6 +78,22 @@ libjpeg2000_sources =				\
 
 endif
 
+if BUILD_NSS
+
+nss_sources =                   \
+	SignatureHandler.cc
+
+nss_libs =                      \
+	$(NSS3_LIBS)
+
+nss_includes =                  \
+	$(NSS3_CFLAGS)
+
+nss_headers =
+	SignatureHandler.h
+
+endif	
+
 
 if BUILD_ZLIB
 
@@ -119,6 +135,7 @@ poppler_includedir = $(includedir)/poppler
 poppler_include_HEADERS =	\
 	$(splash_headers)	\
 	$(curl_headers)		\
+	$(nss_headers) 		\
 	Annot.h			\
 	Array.h			\
 	BuiltinFont.h		\
@@ -166,8 +183,7 @@ poppler_include_HEADERS =	\
 	PreScanOutputDev.h	\
 	PSTokenizer.h		\
 	Rendition.h		\
-	SignatureHandler.h	\
-	SignatureInfo.h	\
+	SignatureInfo.h		\
 	StdinCachedFile.h	\
 	StdinPDFDocBuilder.h	\
 	Stream-CCITT.h		\
@@ -202,6 +218,7 @@ libpoppler_la_SOURCES =		\
 	$(splash_sources)	\
 	$(libjpeg_sources)	\
 	$(zlib_sources)		\
+	$(nss_sources)      \
 	$(libjpeg2000_sources)	\
 	$(curl_sources)		\
 	Annot.cc		\
@@ -249,8 +266,7 @@ libpoppler_la_SOURCES =		\
 	PreScanOutputDev.cc \
 	PSTokenizer.cc		\
 	Rendition.cc		\
-	SignatureHandler.cc	\
-	SignatureInfo.cc \
+	SignatureInfo.cc	\
 	StdinCachedFile.cc	\
 	StdinPDFDocBuilder.cc	\
 	Stream.cc 		\
@@ -279,7 +295,7 @@ libpoppler_la_CPPFLAGS =			\
 	$(libjpeg2000_includes)			\
 	$(libpng_includes)			\
 	$(libcurl_includes)			\
-	$(NSS3_CFLAGS)				\
+	$(nss_includes)				\
 	$(FREETYPE_CFLAGS)			\
 	$(FONTCONFIG_CFLAGS)			\
 	$(AM_CPPFLAGS)
@@ -294,8 +310,8 @@ libpoppler_la_LIBADD =				\
 	$(libpng_libs)				\
 	$(zlib_libs)				\
 	$(libcurl_libs)				\
+	$(nss_libs)                 \
 	$(libjpeg2000_libs)			\
-	$(NSS3_LIBS)				\
 	$(FREETYPE_LIBS)			\
 	$(FONTCONFIG_LIBS)			\
 	$(PTHREAD_LIBS)				\
diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
index ea56bd2..8155cb2 100644
--- a/utils/CMakeLists.txt
+++ b/utils/CMakeLists.txt
@@ -89,13 +89,15 @@ target_link_libraries(pdfinfo ${common_libs})
 install(TARGETS pdfinfo DESTINATION bin)
 install(FILES pdfinfo.1 DESTINATION ${SHARE_INSTALL_DIR}/man/man1)
 
-# pdfsigverify
-set(pdfsigverify_SOURCES ${common_srcs}
-  pdfsigverify.cc
-)
-add_executable(pdfsigverify ${pdfsigverify_SOURCES})
-target_link_libraries(pdfsigverify ${common_libs})
-install(TARGETS pdfsigverify DESTINATION bin)
+if (ENABLE_NSS3)
+  # pdfsigverify
+  set(pdfsigverify_SOURCES ${common_srcs}
+    pdfsigverify.cc
+  )
+  add_executable(pdfsigverify ${pdfsigverify_SOURCES})
+  target_link_libraries(pdfsigverify ${common_libs})
+  install(TARGETS pdfsigverify DESTINATION bin)
+endif (ENABLE_NSS3)
 
 # pdftops
 set(pdftops_SOURCES ${common_srcs}
diff --git a/utils/Makefile.am b/utils/Makefile.am
index 318cfb6..2ddcca0 100644
--- a/utils/Makefile.am
+++ b/utils/Makefile.am
@@ -23,9 +23,12 @@ bin_PROGRAMS =					\
 	pdftotext				\
 	pdftohtml				\
 	pdfseparate				\
-	pdfsigverify				\
 	pdfunite
 
+if BUILD_NSS
+bin_PROGRAMS += pdfsigverify
+endif
+
 if BUILD_SPLASH_OUTPUT
 bin_PROGRAMS += pdftoppm
 endif


More information about the poppler mailing list