[git] Scute - branch, master, updated. scute-1.5.0-19-g6f61c17

by Werner Koch cvs at cvs.gnupg.org
Wed Feb 20 12:02:26 CET 2019


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PKCS#11 token on top of gpg-agent".

The branch, master has been updated
       via  6f61c173cf2b71b43f41f163d590ef127b68509e (commit)
       via  9a25f7bb80c292f05cc4b58c2b8caf5252bbccb0 (commit)
       via  b623ff524e63391f01aa075686b7004e8a0ceb91 (commit)
       via  cc91c168e4aecc292f95156a96d9fd96e449d8b1 (commit)
      from  5de05acba42c6eb76589c6cbbcfb2d7adbf2dc56 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 6f61c173cf2b71b43f41f163d590ef127b68509e
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Feb 20 11:42:07 2019 +0100

    Update gpg-error.m4 and create ChangeLog.
    
    --

diff --git a/.gitignore b/.gitignore
index 5074f03..338b953 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@ m4/Makefile.in
 obj/
 src/Makefile.in
 tests/Makefile.in
+/VERSION
diff --git a/ChangeLog b/ChangeLog
index 20b4e01..ac678aa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,593 +1 @@
-2010-04-21  Marcus Brinkmann  <marcus at g10code.de>
-
-	Release 1.4.0.
-
-	* configure.ac (NEED_LIBASSUAN_VERSION): Bump to 2.0.0.
-	(LIBSCUTE_LT_REVISION): Bump to 2.
-
-2009-12-08  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/agent.c (agent_connect): Convert posix fd to assuan fd.
-	* src/cert-gpgsm.c (export_cert_compat): Likewise.
-
-	* src/Makefile.am (libgpg-error.a, libassuan.a): Force symlink.
-
-2009-11-06  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/cert-gpgsm.c (export_cert_compat, export_cert)
-	(scute_gpgsm_search_certs_by_grip)
-	(scute_gpgsm_search_certs_by_fpr): Call assuan_pipe_connect
-	instead of assuan_pipe_connect_ext.
-	* src/agent.c (agent_connect): Update use of assuan_socket_connect
-	and assuan_pipe_connect.
-
-2009-10-16  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/p11-initialize.c (CK_DEFINE_FUNCTION): Fix code on
-	non-Windows.
-
-2009-10-08  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/p11-initialize.c (C_Initialize): Call WSAStartup.
-	* src/p11-finalize.c (CK_DEFINE_FUNCTION): Call WSACleanup.
-
-2009-10-06  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/pkcs11.h: Add support for GOST.  By Andreas Jellinghaus.
-
-2009-09-23  Marcus Brinkmann  <marcus at g10code.de>
-
-	* configure.ac (NEED_LIBASSUAN_VERSION): Update to 1.1.0.
-	(_ASSUAN_ONLY_GPG_ERROR): Remove.
-	* src/p11-initialize.c: Update to new Assuan interface.
-	* src/debug.c (_scute_debug_init): Remove call to
-	assuan_set_assuan_log_stream.
-	* src/agent.c (agent_connect): Allocate assuan context before
-	connecting to server.  Release it on error.
-	* src/cert-gpgsm.c (export_cert_compat, export_cert)
-	(scute_gpgsm_search_certs_by_grip)
-	(scute_gpgsm_search_certs_by_fpr): Likewise.
-
-2009-07-22  Stef Walter  <stef at memberwebs.com>
-
-	* src/pkcs11.h: Make all constants UL that should be.
-
-2009-06-19  Werner Koch  <wk at g10code.com>
-
-	Release 1.3.0.
-
-	* src/settings.h (SLOT_FIRMWARE_VERSION_MAJOR)
-	(SLOT_FIRMWARE_VERSION_MINOR, SLOT_HARDWARE_VERSION_MAJOR)
-	(SLOT_HARDWARE_VERSION_MINOR): Remove.
-	* src/p11-getslotinfo.c (CK_DEFINE_FUNCTION): Set firmware version
-	to Scute version and agent version to hardware version.
-	* src/agent.c (read_version_cb): New.
-	(agent_configure): Call that.
-	(agent_version_major, agent_version_minor): New.
-	(scute_agent_get_agent_version): New.
-
-	* src/agent.c (SIG_LEN_2): Fix stupid c+p bug.
-
-2009-06-19  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/Makefile.am (scute_deps): Add libgpg-error.a, libassuan.a.
-	(scute_libadd): New variable.
-	(libgpg-error.a, libassuan.a, clean-local): New targets.
-	(libscute_la_LIBADD): Add $(scute_libadd).
-
-2009-06-19  Werner Koch  <wk at g10code.com>
-
-	* src/agent.c (geteventcounter_status_cb): New.
-	(scute_agent_check_status): Check the eventcounter first.
-
-2009-06-19  Marcus Brinkmann  <marcus at g10code.de>
-
-	* tests/t-getattribute.c (dump_object): Allow empty CKA_START_DATE
-	and CKA_END_DATE.
-
-	* src/cert-object.c (scute_attr_prv): Always set CKA_START_DATE
-	and CKA_END_DATE.
-
-2009-06-19  Werner Koch  <wk at g10code.com>
-
-	* src/agent.c (MAX_SIGNATURE_LEN): Increase size to cope with 2048
-	bit RSA.
-	(scute_agent_sign): Add a hack for 2048 bit RSA.
-	* tests/t-auth.c (sign_with_object): Increase SIZE to 256.
-
-2009-06-19  Marcus Brinkmann  <marcus at g10code.de>
-
-	* libtool.m4: Removed.
-	* m4/libtool.m4, m4/ltoptions.m4, m4/ltsugar.m4, m4/ltversion.m4,
-	m4/lt~obsolete.m4: New files from libtool 2.2.6.
-	* configure.ac: Update to libtool 2.2.6.
-	(lt_cv_deplibs_check_method): Slightly evil hack to get libtool to
-	our thing.
-	(AC_DISABLE_STATIC, AC_LIBTOOL_WIN32_DLL, AC_LIBTOOL_RC)
-	(AC_PROG_LIBTOOL): Obsolete, replaced by ...
-	(LT_PREREQ, LT_INIT, LT_LANG): ... these new macro invocations.
-	* src/Makefile.am: Remove a bunch of rules for shared library.
-	(RCCOMPILE): New.
-	(LTRCCOMPILE): Use it here.
-	(.rc.lo): Add quoting.
-
-2009-06-19  Werner Koch  <wk at g10code.com>
-
-	* src/estream-printf.c, src/estream-printf.h: New.
-	* src/Makefile.am (sources): Add them.
-	* Makefile.am (SUBDIRS): Add m4/.
-	* m4/Makefile.am: New.
-	* m4/estream.m4: New.
-	* configure.ac (AC_REPLACE_FUNCS): Remove.
-	(estream_PRINTF_INIT): Add.
-	(AH_BOTTOM):  Prefix estream fucntions.
-	(AC_FUNC_REALLOC) Remove because it uses AC_LIBOBJ which as
-	problems with the current libtool.  The GNU guarantees for realloc
-	don't seem to be needed.
-
-	* src/realloc.c:  Remove
-	* src/vasprintf.c, src/stpcpy.c, src/stpcpy.h: Remove.
-	* src/support.h: Do not include stpcpy.h but define it inline.
-	Include estream-printf.h.
-	(vasprintf, asprintf, snprintf): Redefine to estream functions
-	
-	* src/agent.c (scute_agent_sign): s/sprintf/vsnprintf/.
-
-2009-06-18  Werner Koch  <wk at g10code.com>
-
-	* src/slots.c (slot_token_manufacturer): Update list.
-
-2009-04-23  Werner Koch  <wk at g10code.com>
-
-	* src/error-mapping.c (scute_gpg_err_to_ck): Add mappings to
-	CKR_PIN_INCORRECT and CKR_PIN_LOCKED.
-
-2008-12-03  Marcus Brinkmann  <marcus at g10code.de>
-
-	* configure.ac: Enable AC_CONFIGU_MACRO_DIR.
-	* m4/ltsugar.m4, m4/libtool.m4, m4/ltversion.m4,
-	m4/lt~obsolete.m4, m4/ltoptions.m4: New files.
-	* config.guess, config.sub, ltmain.sh, configure.ac: Updated.
-
-2008-10-29  Marcus Brinkmann  <marcus at g10code.de>
-
-	* configure.ac (_ASSUAN_ONLY_GPG_ERRORS): Define it.
-	* src/agent.c (default_inq_cb): Change return type to gpg_error_t
-	to silence gcc -W warning.
-	* src/cert-gpgsm.c (search_certs, export_cert_cb): Change type of
-	argument to silence gcc -W warning.
-	* src/p11-findobjects.c (CK_DEFINE_FUNCTION): Add explicit cast to
-	silence gcc -W warning.
-	* src/table.c (struct scute_table): Change signedness of
-	FIRST_FREE and LAST_USED members to silence gcc -W warning.
-	(scute_table_alloc): Change signedness of IDX for the same reason.
-	* tests/t-getslotinfo.c, tests/t-getsessioninfo.c,
-	tests/t-getmechanismlist.c, tests/t-auth.c,
-	tests/t-getattribute.c, tests/t-opensession.c,
-	tests/t-getslotlist.c, tests/t-getmechanisminfo.c,
-	tests/t-support.h, tests/t-closeallsessions.c,
-	tests/t-findobjects.c, tests/t-gettokeninfo.c: Change signedness
-	of some variables to silence gcc -W warnings.
-
-2008-10-21  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/slots.c (slots_update_slot): Ignore card errors.
-
-2008-10-01  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/agent.c (agent_connect): Set assuan log stream.
-	* src/p11-initialize.c: Include "debug.h".
-	(C_Initialize): Call _scute_debug_init.
-	* src/Makefile.am (sources): Add debug.c.
-	* src/debug.c: New file.
-	* src/debug.h: Rewritten.
-	* src/agent.c, src/cert-gpgsm.c, src/cert-object.c,
-          src/slots.c, src/error-mapping.c: More or improved or
-          adjusted debug output.
-
-2008-09-30  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/cert-object.c [!CERT_PARSING]: Disable some certificate
-	parsing code.  Unfortunately, we can't get rid of all of it for
-	now.
-
-2008-09-30  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/get-path.c (find_program_in_inst_dir): New function.
-	(get_gpgsm_path, get_gpg_agent_path): Use it to check in install dir.
-
-2008-09-30  Werner Koch  <wk at g10code.de>
-
-	* src/Makefile.am (scute_DEPENDENCIES): Use .libs/versioninfo.o
-
-	* AUTHORS (License): New.
-
-	* Makefile.am (AUTOMAKE_OPTIONS): Do not distribute a gzip tarball.
-	(EXTRA_DIST): Distibute autogen.sh and README.SVN.
-
-	* README.CVS: Replace by README.SVN.
-
-	* configure.ac: Update bug address and some comments.
-	* autogen.sh: Update.
-
-2008-09-29  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/gpgsm.c (struct search): New member WITH_CHAIN.
-	(search_cb): Only load chain if WITH_CHAIN is true.
-	(scute_gpgsm_get_cert): Call search_cb in the agent code path.
-
-2008-09-29  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/slots.c (MIN): Remove macro.
-	(slot_token_maxpinlen, slot_token_pincount): Do not consider
-	second pincount, which meaning depends on the card version.
-
-2008-09-26  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/agent.c: Include "cert.h".
-	(GET_CERT_INIT_SIZE): New symbol.
-	(struct get_cert_s): New struct.
-	(get_cert_data_cb, scute_agent_get_cert): New functions.
-	* src/gpgsm.c: Include "agent.h".
-	(scute_gpgsm_get_cert): Take extra argument NO.  Use it to get the
-	certificate directly from the card, if possible.
-	* src/gpgsm.h (scute_gpgsm_get_cert): Add extra argument NO to
-	prototype.
-	* src/slots.c (slot_init): Pass extra argument to
-	scute_gpgsm_get_cert invocation.
-	* src/cert-object.c (scute_attr_prv, scute_attr_cert): Don't use
-	the fpr, timestamp and expire field of a certificate for now.
-
-2008-09-23  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/agent.c (GET_CERT_INIT_SIZE): New symbol.
-	(struct get_cert_s): New struct.
-	(get_cert_data_cb, scute_agent_get_cert): New functions.
-
-2008-09-03  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/Makefile.am (.rc.o): New rule.
-
-	* src/Makefile.am (EXTRA_DIST): Add stpcpy.h.
-
-2008-09-02  Marcus Brinkmann  <marcus at g10code.com>
-
-	* configure.ac: Post-release cleanup.
-	* doc/website/download.xhtml: Update.
-
-2008-09-02  Marcus Brinkmann  <marcus at g10code.com>
-
-	* Released version 1.2.0.
-
-	* doc/manual/Makefile.am (CLEANFILES): Add $(images_eps).
-	(images_eps): New variable.
-	(scute.dvi): Depend on $(images_eps) instead of $(images_pdf).
-	
-2008-08-23  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/Makefile.am [HAVE_W32_SYSTEM]: Build autonomous DLL.
-
-2008-08-23  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/agent.c (gnupg_allow_set_foregound_window)
-	[!HAVE_W32_SYSTEM]: Define it.
-
-2008-08-23  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/Makefile.am [HAVE_W32_SYSTEM]: Build autonomous DLL.
-	* src/dllmain.c (DllMain): New file.
-	* src/cert-gpgsm.c: Include "debug.h".  Use
-	 assuan_pipe_connect_ext instead of assuan_pipe_connect everywhere.
-	* src/agent.c (WINVER) [HAVE_W32_SYSTEM]: Define symbol.
-	[HAVE_W32_SYSTEM]: Include <windows.h>.  Do this before including
-	<assuan.h>.
-	(gnupg_allow_set_foregound_window): New function.
-	(agent_connect): Use Sleep() instead of _sleep().
-	(default_inq_cb): New function, and use it in all transactions.
-	(agent_configure): Don't bail out if ttytname is not defined.  Set
-	allow-pinentry-notify.
-	* tests/t-support.h [_WIN32]: Include <windows.h>.
-	(init_cryptoki) [_WIN32]: Call WSAStartup.
-
-2008-08-21  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/scute.def: Start at @1 instead of @0.
-
-2008-08-21  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/agent.c (agent_configure): Fix cut and paste error.
-
-2008-08-11  Marcus Brinkmann  <marcus at g10code.com>
-
-	* src/agent.c (spawn_process_detachted) [! HAVE_W32_SYSTEM]: Remove.
-	(agent_configure): Ignore error with old versions of gpg-agent.	
-
-2008-08-08  Marcus Brinkmann  <marcus at g10code.de>
-
-	* configure.ac: Update svn macros.
-	(BUILD_REVISION, BUILD_FILEVERSION, BUILD_TIMESTAMP): New.
-	(AC_CONFIG_OUTPUT): Add src/versioninfo.rc.
-	(GPG_AGENT_DEFAULT, GPG_AGENT): New.
-	(AC_REPLACE_FUNCS): Add vasprintf and stpcpy.
-	(AC_CHECK_FUNCS): Add ttyname, localtime_r and timegm.
-	* src/stpcpy.h, src/stpcpy.c, src/realloc.c: New file from gnulib.
-	* src/vasprintf.c: New file from libiberty.
-	* src/support.h [!HAVE_STPCPY]: Include "stpcpy.h".
-	[!HAVE_TTYNAME]: Define simple replacement function.
-	(get_gpgsm_path, get_gpg_agent_path)
-	(default_homedir, make_filename): New prototypes.
-	* src/Makefile.am: Add W32 support.
-	(libscute_la_SOURCES): Add get-path.c.
-	(EXTRA_DIST): Add versioninfo.rc.in.
-	* src/versioninfo.rc.in: New file.
-	* src/get-path.c: New file.
-	* src/agent.c (PATHSEP_C): New macro.
-	(build_w32_commandline_copy)
-	(build_w32_commandline) [HAVE_W32_SYSTEM]: New functions.
-	(spawn_process_deatched): New function.
-	(agent_connect): Start gpg-agent if it is not running yet.
-	(agent_configure): Also pass xauthority and pinentry-user-data.
-	* src/cert-gpgsm.c (COMPAT_FALLBACK) [!HAVE_W32_SYSTEM]: New
-	macro.
-	(export_cert_compat) [!COMPAT_FALLBACK]: Remove.
-	(export_cert) [!COMPAT_FALLBACK]: Don't call export_cert_compat.
-	Don't create (unused) output pipe cruft.
-	* src/cert-object.c (time_to_ck_date) [!HAVE_LOCALTIME_R]: Fall
-	back to localtime.
-	* tests/t-getslotinfo.c (main) [WIN32]: Call _sleep instead sleep.
-
-	* src/cryptoki.h (CRYPTOKI_EXPORTS): Define symbol.
-	* src/error-mapping.h: Do not include <error.h>.
-	(scute_sys_to_ck): Change type of ERR to int.
-	* src/error-mapping.c: Do not include <error.h>.
-	(scute_sys_to_ck): Change type of ERR to int.
-	* src/slots.c (slot_create_session): Change type of ERR to int.
-
-2007-05-03  Marcus Brinkmann  <marcus at g10code.de>
-
-	Released version 1.1.0.
-
-	* doc/manual/Makefile.am (images_pdf, CLEANFILES): New variables.
-	(scute.dvi, scute.pdf): New dependencies.
-	(%.eps, %.pdf): New rules.
-	* configure.ac: Check for convert and epstopdf.
-
-	* doc/manual/scute.texi (Authentication With Service): Avoid
-	@indicateurl in TeX output, as this seems to be broken (in
-	texi2dvi 1.34).
-
-	* doc/manual/Makefile.am (images, EXTRA_DIST): New variables.
-
-2007-04-30  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/agent.h (scute_agent_is_trusted): New prototype.  Include
-	<stdbool.h>.
-	* src/agent.c (scute_agent_is_trusted): New implementation.
-	* src/cert.h (struct cert): New member IS_TRUSTED.
-	* src/cert-gpgsm.c (export_cert): Set CERT->is_trusted.
-	* src/cert-object.c (scute_attr_cert): Set CKA_TRUSTED to
-	CERT->is_trusted.
-	* tests/t-getattribute.c: Support new option '--printable'.
-
-	* src/table.c (scute_table_dealloc): Return, but not a value.
-
-2007-02-09  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/pkcs11.h: Add definitions for SHA.
-
-2006-12-17  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/pkcs11.h: Minor cosmetic changes.  Require CRYPTOKI_GNU now
-	to switch on the GNU API, and do not check what CRYPTOKI_COMPAT is
-	defined to, just if it is defined at all.
-
-	* src/pkcs11.h [__WIN32]: Changed to [_WIN32 ||
-	CRYPTOKI_FORCE_WIN32] at the end.
-	Submitted by Alon Bar-Lev.
-
-2006-12-11  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/pkcs11.h (CKO_VENDOR_DEFINED): Fixed syntax error.
-
-2006-12-10  Marcus Brinkmann  <marcus at g10code.de>
-
-	* configure.ac (NEED_GPG_ERROR_VERSION): Bump to 1.4.
-
-	* src/pkcs11.h [CRYPTOKI_COMPAT]: Rewrote the compatibility layer.
-
-2006-12-09  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/pkcs11.h [__cplusplus]: Protect with extern "C".
-	Do not use the C++ keyword "template" in parameter lists.
-	Submitted by Alon Bar-Lev.
-
-	* src/pkcs11.h [__WIN32]: Changed to [_WIN32 ||
-	CRYPTOKI_FORCE_WIN32].
-	(ck_rv_t): Changed to unsigned long.
-	(CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR,
-	CRYPTOKI_VERSION_REVISION): New macros.
-	(CKO_VENDOR_DEFINED, CKH_VENDOR_DEFINED, CKK_VENDOR_DEFINED,
-	CKC_VENDOR_DEFINED, CKA_VENDOR_DEFINED, CKM_VENDOR_DEFINED,
-	CKF_EXTENSION, CKR_VENDOR_DEFINED): Add cast to suppress compiler
-	warning.
-	Submitted by Alon Bar-Lev.
-
-	* src/cryptoki.h (CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR):
-	Removed.
-
-2006-11-30  Marcus Brinkmann  <marcus at g10code.de>
-
-	* m4/autobuild.m4: New file.
-	* configure.ac: Invoke AB_INIT.
-
-2006-11-29  Marcus Brinkmann  <marcus at g10code.de>
-
-	* configure.ac (CFLAGS): Remove variable.
-
-2006-11-27  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/pkcs11.h: Add more definitions provided by Andreas Jellinghaus.
-
-	* README (Copyright and License): Update copyright notice.  Also
-	for all other files.
-	* AUTHORS (Maintainer): Removed RSA Security Inc.
-	* include/pkcs11t.h, include/pkcs11f.h, include/pkcs11.h,
-	include/disclaimer.txt, include/cryptoki-w32.h,
-	include/cryptoki-generic.h, include/README, include/Makefile.am:
-	Files removed.
-	* configure.ac (AC_CONFIG_FILES): Removed include/Makefile.
-	* Makefile.am (SUBDIRS): Removed include directory.
-
-2006-11-24  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/pkcs11.h: New file.
-	* src/Makefile.am (libscute_la_SOURCES): Add pkcs11.h.
-	* src/cryptoki.h: Include "pkcs11.h" instead of original PKCS #11
-	header file.
-	* tests/t-support.h (mechanism_type_str): Remove most mechanisms.
-
-2006-11-23  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/cert-gpgsm.c (search_certs_line): Don't overwrite CERT->uid.
-
-2006-11-21  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/cert-gpgsm.c (search_certs_line): Fix off-by-one error.
-	(export_cert_cb): Fix bug if EXP->buffer_size is 0.
-
-	* src/cert-gpgsm.c (cert_reset): Free CERT->cert_der if set.
-	(export_cert): Reimplement using data channel.
-	(export_cert_compat): This contains the old version for
-	compatibility.
-	* src/cert.h (MAX_CERT_SIZE): Macro removed.
-	(struct cert): Changed member CERT_DER into a pointer.
-
-	* configure.ac (AC_CONFIG_FILES): Add doc/manual/Makefile.
-	* doc/Makefile.am (SUBDIRS): New variable.
-	* doc/manual/Makefile, doc/manual/scute.texi, doc/manual/gpl.texi,
-	doc/manual/mdate-sh, doc/manual/texinfo.tex,
-	doc/manual/firefox-cm.png, doc/manual/firefox-cm-view-detail.png,
-	doc/manual/firefox-cm-view.png,
-	doc/manual/firefox-dm-load-after.png,
-	doc/manual/firefox-dm-load-before.png,
-	doc/manual/firefox-dm-load.png,
-	doc/manual/firefox-dm-token-present.png,
-	doc/manual/firefox-pref.png, doc/manual/firefox-pref-view.png: New
-	files.
-
-2006-11-11  Marcus Brinkmann  <marcus at g10code.de>
-
-	* Released version 1.0.0.
-
-2006-11-11  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/error-mapping.c (scute_gpg_err_to_ck): Report error on debug
-	stream.
-	* src/slots.c (add_object): New function.
-	(slot_init): Rewritten using add_object.
-	* src/gpgsm.c: Include "gpgsm.h".
-	(struct search): Replace members ATTRP, ATTR_COUNTP, PRV_ATTRP,
-	PRV_ATTR_COUNTP by CERT_GET_CB, HOOK.
-	(search_cb): Rewritten to add all certificates for a certain key
-	(scute_gpgsm_get_cert): Take a callback function instead of
-	attribute pointers.
-	* gpgsm.h (scute_gpgsm_get_cert): Adjust prototype.	
-	and also the certificate chain.
-	* src/cert.h (scute_gpgsm_search_certs_by_fpr): New prototype.
-	(struct cert): New member chain_id.
-	* src/cert-gpgsm.c (struct search_ctx_by_grip): Rename to ...
-	(struct search_ctx): ... this.  Rename field GRIP to PATTERN, and
-	add new field FIELD.
-	(search_certs_by_grip): Rename function to ...
-	(search_certs): ... this.
-	(scute_gpgsm_search_certs_by_fpr): Change user of the above.
-	(scute_gpgsm_search_certs_by_fpr): New function.
-	(search_certs_line): Store chain ID.
-
-2006-11-07  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/p11-gettokeninfo.c (C_GetTokenInfo): Fix assignment.
-
-2006-11-06  Marcus Brinkmann  <marcus at g10code.de>
-
-	* doc/website/format/web.css: Set margin to 0.
-
-	* configure.ac (AC_CONFIG_FILES): Add doc/Makefile.
-	Makefile.am (SUBDIRS): Add doc/.
-	doc/, doc/website/, doc/website/format: New directories.
-	doc/Makefile.am, doc/website/index.xhtml,
-	doc/website/documentation.xhtml, doc/website/download.xhtml,
-	doc/website/contact.xhtml, doc/website/format/web.css,
-	doc/website/format/scute-logo.svg,
-	doc/website/format/scute-border.jpg: New files.
-
-2006-10-30  Marcus Brinkmann  <marcus at g10code.de>
-
-	* configure.ac (PACKAGE, VERSION): Define these variables.
-	* src/Makefile.am (libscute_la_CPPFLAGS): Fix include path for
-	VPATH builds.
-
-	* configure.ac (VERSION_MAJOR, VERSION_MINOR): New variable
-	definitions.
-	* src/gpgsm.h: Fix syntax error.
-	* src/table.c, src/table.h: Rewritten.
-	* src/slots.c: Reorganized and rewritten to use the new table
-	interface.  Include gpgsm.h.
-	* src/p11-signinit.c, src/p11-sign.c, src/p11-getslotlist.c,
-	src/p11-getsessioninfo.c, src/p11-getmechanismlist.c,
-	src/p11-getattributevalue.c, src/p11-findobjectsinit.c,
-	src/p11-findobjectsfinal.c, src/p11-findobjects.c,
-	src/p11-closesession.c: Adjust callers.
-
-2006-10-26  Marcus Brinkmann  <marcus at g10code.de>
-
-	* src/settings.h: Require VERSION_MAJOR and VERSION_MINOR to be
-	defined.
-
-	* src/p11-getinfo.c (CRYPTOKI_VERSION_MAJOR,
-	CRYPTOKI_VERSION_MINOR): Move macros to ...
-	* src/cryptoki.h (CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR):
-	... here
-
-	* src/gpgsm.c (gpgsm_get_cert): Rename to ...
-	(scute_gpgsm_get_cert): ... this.
-	* src/gpgsm.h: New file.
-	* src/Makefile.am (libscute_la_SOURCES): Add gpgsm.h.
-	* src/slots.c (gpgsm_get_cert): Remove prototype.
-	(slots_update_slot): Call scute_gpgsm_get_cert, not gpgsm_get_cert.
-
-	* src/error-mapping.c (scute_gpg_err_to_ck): Map GPG_ERR_NO_AGENT
-	to CKR_GENERAL_ERROR.
-	* src/agent.h (struct agent_card_info_s): Remove member error.
-	Prefix external functions with scute_ if not already done so, also
-	for callers.
-	* src/agent.c: Include <stdarg.h>.  Replace one-letter variable
-	names by proper ones.  Replace assuan_error_t with gpg_error_t
-	everywhere.
-	(agent_connect, agent_simple_cmd, agent_configure): New functions.
-	(scute_agent_initialize): Use these new functions.
-	ing of common code.  Lots of cleanups.
-	(scute_agent_finalize): Clear agent_ctx.  Add debug message.
-
-2006-10-13  Werner Koch  <wk at g10code.com>
-
-	* src/cert-gpgsm.c (MAX_LINE_LEN): Increased.
-
-	* src/locking.c: Include string.h for memset declaration.
-
-	* configure.ac: New option --disable-optimization.
-
-2006-08-02  Marcus Brinkmann  <marcus at g10code.de>
-
-	* Initial version.
-
-
- Copyright 2006, 2007, 2008 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.
+Dummy ChangeLog - the old one is build-aus/git-log-footer
diff --git a/Makefile.am b/Makefile.am
index 808a956..0054d99 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -22,7 +22,7 @@
 ACLOCAL_AMFLAGS = -I m4
 AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip
 
-EXTRA_DIST = autogen.sh README.GIT
+EXTRA_DIST = autogen.sh README.GIT VERSION
 
 if RUN_TESTS
 tests = tests
@@ -31,3 +31,33 @@ tests =
 endif
 
 SUBDIRS = m4 src ${tests} doc
+
+dist-hook: gen-ChangeLog
+
+distcheck-hook:
+	set -e; ( \
+	pref="#+macro: scute_" ;\
+	reldate="$$(date -u +%Y-%m-%d)" ;\
+        echo "$${pref}ver  $(PACKAGE_VERSION)"  ;\
+        echo "$${pref}date $${reldate}" ;\
+        list='$(DIST_ARCHIVES)'; for i in $$list; do \
+	  case "$$i" in *.tar.bz2) \
+            echo "$${pref}size $$(wc -c <$$i|awk '{print int($$1/1024)}')k" ;\
+	    echo "$${pref}sha1 $$(sha1sum <$$i|cut -d' ' -f1)" ;\
+	    echo "$${pref}sha2 $$(sha256sum <$$i|cut -d' ' -f1)" ;;\
+	  esac;\
+	done ) | tee $(distdir).swdb
+
+.PHONY: gen-ChangeLog release sign-release
+
+gen_start_date = 2011-12-01T00:00:00
+gen-ChangeLog:
+	if test -d $(top_srcdir)/.git; then				\
+	  (cd $(top_srcdir) &&                      			\
+	    $(GITLOG_TO_CHANGELOG) --append-dot --tear-off		\
+	    --amend=build-aux/git-log-fix				\
+	    --since=$(gen_start_date) ) > $(distdir)/cl-t;		\
+          cat $(top_srcdir)/build-aux/git-log-footer >> $(distdir)/cl-t;\
+	  rm -f $(distdir)/ChangeLog;					\
+	  mv $(distdir)/cl-t $(distdir)/ChangeLog;			\
+	fi
diff --git a/autogen.sh b/autogen.sh
index 10cc203..1c6e428 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,6 +1,6 @@
 #! /bin/sh
 # autogen.sh
-# Copyright (C) 2003, 2014 g10 Code GmbH
+# Copyright (C) 2003, 2014, 2017, 2018 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
@@ -15,7 +15,7 @@
 # configure it for the respective package.  It is maintained as part of
 # GnuPG and source copied by other packages.
 #
-# Version: 2014-06-06
+# Version: 2018-07-10
 
 configure_ac="configure.ac"
 
@@ -74,13 +74,23 @@ PRINT_HOST=no
 PRINT_BUILD=no
 tmp=$(dirname "$0")
 tsdir=$(cd "${tmp}"; pwd)
-version_parts=3
 
 if [ -n "${AUTOGEN_SH_SILENT}" ]; then
   SILENT=" --silent"
 fi
 if test x"$1" = x"--help"; then
-  echo "usage: ./autogen.sh [--silent] [--force] [--build-TYPE] [ARGS]"
+  echo "usage: ./autogen.sh [OPTIONS] [ARGS]"
+  echo "  Options:"
+  echo "    --silent       Silent operation"
+  echo "    --force        Pass --force to autoconf"
+  echo "    --find-version Helper for configure.ac"
+  echo "    --git-build    Run all commands to  build from a Git"
+  echo "    --print-host   Print only the host triplet"
+  echo "    --print-build  Print only the build platform triplet"
+  echo "    --build-TYPE   Configure to cross build for TYPE"
+  echo ""
+  echo "  ARGS are passed to configure in --build-TYPE mode."
+  echo "  Configuration for this script is expected in autogen.rc"
   exit 0
 fi
 if test x"$1" = x"--silent"; then
@@ -149,6 +159,10 @@ case "$1" in
         SILENT=" --silent"
         shift
         ;;
+    --git-build)
+        myhost="git-build"
+        shift
+        ;;
     --build-w32)
         myhost="w32"
         shift
@@ -177,6 +191,25 @@ esac
 die_p
 
 
+# **** GIT BUILD ****
+# This is a helper to build from git.
+if [ "$myhost" = "git-build" ]; then
+    tmp="$(pwd)"
+    cd "$tsdir" || fatal "error cd-ing to $tsdir"
+    ./autogen.sh || fatal "error running ./autogen.sh"
+    cd "$tmp"   || fatal "error cd-ing back to $tmp"
+    die_p
+    "$tsdir"/configure || fatal "error running $tsdir/configure"
+    die_p
+    make || fatal "error running make"
+    die_p
+    make check || fatal "error running male check"
+    die_p
+    exit 0
+fi
+# **** end GIT BUILD ****
+
+
 # Source our configuration
 if [ -f "${tsdir}/autogen.rc" ]; then
     . "${tsdir}/autogen.rc"
@@ -200,32 +233,41 @@ if [ "$myhost" = "find-version" ]; then
     minor="$3"
     micro="$4"
 
-    case "$version_parts" in
-      2)
-        matchstr1="$package-$major.[0-9]*"
-        matchstr2="$package-$major-base"
-        vers="$major.$minor"
-        ;;
-      *)
-        matchstr1="$package-$major.$minor.[0-9]*"
-        matchstr2="$package-$major.$minor-base"
-        vers="$major.$minor.$micro"
-        ;;
-    esac
+    if [ -z "$package" -o -z "$major" -o -z "$minor" ]; then
+      echo "usage: ./autogen.sh --find-version PACKAGE MAJOR MINOR [MICRO]" >&2
+      exit 1
+    fi
+
+    if [ -z "$micro" ]; then
+      matchstr1="$package-$major.[0-9]*"
+      matchstr2="$package-$major-base"
+      vers="$major.$minor"
+    else
+      matchstr1="$package-$major.$minor.[0-9]*"
+      matchstr2="$package-$major.$minor-base"
+      vers="$major.$minor.$micro"
+    fi
 
     beta=no
     if [ -e .git ]; then
       ingit=yes
       tmp=$(git describe --match "${matchstr1}" --long 2>/dev/null)
+      tmp=$(echo "$tmp" | sed s/^"$package"//)
       if [ -n "$tmp" ]; then
-          tmp=$(echo "$tmp"|awk -F- '$3!=0 && $3 !~ /^beta/ {print"-beta"$3}')
+          tmp=$(echo "$tmp" | sed s/^"$package"//  \
+                | awk -F- '$3!=0 && $3 !~ /^beta/ {print"-beta"$3}')
       else
           tmp=$(git describe --match "${matchstr2}" --long 2>/dev/null \
-                | awk -F- '$4!=0{print"-beta"$4}')
+                    | awk -F- '$4!=0{print"-beta"$4}')
+          if [ -z "$tmp" ]; then
+              tmp=$(git describe --match "${package}-default-base" \
+                   --long 2>/dev/null | awk -F- '$4!=0{print"-beta"$4}')
+          fi
+
       fi
       [ -n "$tmp" ] && beta=yes
       rev=$(git rev-parse --short HEAD | tr -d '\n\r')
-      rvd=$((0x$(echo ${rev} | head -c 4)))
+      rvd=$((0x$(echo ${rev} | dd bs=1 count=4 2>/dev/null)))
     else
       ingit=no
       beta=yes
@@ -311,7 +353,7 @@ if [ "$myhost" = "w32" ]; then
     $tsdir/configure --enable-maintainer-mode ${SILENT} \
              --prefix=${w32root}  \
              --host=${host} --build=${build} SYSROOT=${w32root} \
-             PKG_CONFIG_LIBDIR=${w32root} \
+             PKG_CONFIG_LIBDIR=${w32root}/lib/pkgconfig \
              ${configure_opts} ${extraoptions} "$@"
     rc=$?
     exit $rc
@@ -417,13 +459,16 @@ fi
 
 # Check the git setup.
 if [ -d .git ]; then
-  CP="cp -a"
-  [ -z "${SILENT}" ] && CP="$CP -v"
+  CP="cp -p"
+  # If we have a GNU cp we can add -v
+  if cp --version >/dev/null 2>/dev/null; then
+    [ -z "${SILENT}" ] && CP="$CP -v"
+  fi
   if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then
     [ -z "${SILENT}" ] && cat <<EOF
 *** Activating trailing whitespace git pre-commit hook. ***
     For more information see this thread:
-      http://mail.gnome.org/archives/desktop-devel-list/2009-May/msg00084.html
+      https://mail.gnome.org/archives/desktop-devel-list/2009-May/msg00084.html
     To deactivate this pre-commit hook again move .git/hooks/pre-commit
     and .git/hooks/pre-commit.sample out of the way.
 EOF
@@ -447,6 +492,10 @@ EOF
 EOF
       $CP build-aux/git-hooks/commit-msg .git/hooks/commit-msg
       chmod +x  .git/hooks/commit-msg
+      if [ x"${display_name}" != x ]; then
+         git config format.subjectPrefix "PATCH ${display_name}"
+         git config sendemail.to "${patches_to}"
+      fi
   fi
 fi
 
diff --git a/build-aux/git-log-fix b/build-aux/git-log-fix
new file mode 100644
index 0000000..af702fe
--- /dev/null
+++ b/build-aux/git-log-fix
@@ -0,0 +1,3 @@
+# This file is expected to be used via gitlog-to-changelog's --amend=FILE
+# option.  It specifies what changes to make to each given SHA1's commit
+# log and metadata, using Perl-eval'able expressions.
diff --git a/ChangeLog b/build-aux/git-log-footer
similarity index 99%
copy from ChangeLog
copy to build-aux/git-log-footer
index 20b4e01..77ea9d5 100644
--- a/ChangeLog
+++ b/build-aux/git-log-footer
@@ -1,3 +1,5 @@
+
+
 2010-04-21  Marcus Brinkmann  <marcus at g10code.de>
 
 	Release 1.4.0.
@@ -130,7 +132,7 @@
 	* src/support.h: Do not include stpcpy.h but define it inline.
 	Include estream-printf.h.
 	(vasprintf, asprintf, snprintf): Redefine to estream functions
-	
+
 	* src/agent.c (scute_agent_sign): s/sprintf/vsnprintf/.
 
 2009-06-18  Werner Koch  <wk at g10code.com>
@@ -262,7 +264,7 @@
 	* doc/manual/Makefile.am (CLEANFILES): Add $(images_eps).
 	(images_eps): New variable.
 	(scute.dvi): Depend on $(images_eps) instead of $(images_pdf).
-	
+
 2008-08-23  Marcus Brinkmann  <marcus at g10code.com>
 
 	* src/Makefile.am [HAVE_W32_SYSTEM]: Build autonomous DLL.
@@ -300,7 +302,7 @@
 2008-08-11  Marcus Brinkmann  <marcus at g10code.com>
 
 	* src/agent.c (spawn_process_detachted) [! HAVE_W32_SYSTEM]: Remove.
-	(agent_configure): Ignore error with old versions of gpg-agent.	
+	(agent_configure): Ignore error with old versions of gpg-agent.
 
 2008-08-08  Marcus Brinkmann  <marcus at g10code.de>
 
@@ -491,7 +493,7 @@
 	(search_cb): Rewritten to add all certificates for a certain key
 	(scute_gpgsm_get_cert): Take a callback function instead of
 	attribute pointers.
-	* gpgsm.h (scute_gpgsm_get_cert): Adjust prototype.	
+	* gpgsm.h (scute_gpgsm_get_cert): Adjust prototype.
 	and also the certificate chain.
 	* src/cert.h (scute_gpgsm_search_certs_by_fpr): New prototype.
 	(struct cert): New member chain_id.
diff --git a/configure.ac b/configure.ac
index 75262a6..9b0f4fd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -104,6 +104,9 @@ AH_VERBATIM([_REENTRANT],
 # Checks for programs.
 AC_PROG_CC
 
+# Note: A suitable gitlog-to-changelog script can be found in GnuPG master.
+AC_CHECK_PROGS(GITLOG_TO_CHANGELOG, gitlog-to-changelog, [gitlog-to-changelog])
+
 #
 # Setup gcc specific options
 #
diff --git a/m4/gpg-error.m4 b/m4/gpg-error.m4
index e85f511..a9d572f 100644
--- a/m4/gpg-error.m4
+++ b/m4/gpg-error.m4
@@ -1,5 +1,5 @@
 # gpg-error.m4 - autoconf macro to detect libgpg-error.
-# Copyright (C) 2002, 2003, 2004 g10 Code GmbH
+# Copyright (C) 2002, 2003, 2004, 2011, 2014, 2018 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
@@ -8,58 +8,181 @@
 # 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.
+#
+# Last-changed: 2018-11-02
+
 
 dnl AM_PATH_GPG_ERROR([MINIMUM-VERSION,
 dnl                   [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
-dnl Test for libgpg-error and define GPG_ERROR_CFLAGS and GPG_ERROR_LIBS
+dnl
+dnl Test for libgpg-error and define GPG_ERROR_CFLAGS, GPG_ERROR_LIBS,
+dnl GPG_ERROR_MT_CFLAGS, and GPG_ERROR_MT_LIBS.  The _MT_ variants are
+dnl used for programs requireing real multi thread support.
+dnl
+dnl If a prefix option is not used, the config script is first
+dnl searched in $SYSROOT/bin and then along $PATH.  If the used
+dnl config script does not match the host specification the script
+dnl is added to the gpg_config_script_warn variable.
 dnl
 AC_DEFUN([AM_PATH_GPG_ERROR],
-[ AC_ARG_WITH(gpg-error-prefix,
-            AC_HELP_STRING([--with-gpg-error-prefix=PFX],
-                           [prefix where GPG Error is installed (optional)]),
-     gpg_error_config_prefix="$withval", gpg_error_config_prefix="")
-  if test x$gpg_error_config_prefix != x ; then
-     if test x${GPG_ERROR_CONFIG+set} != xset ; then
-        GPG_ERROR_CONFIG=$gpg_error_config_prefix/bin/gpg-error-config
+[ AC_REQUIRE([AC_CANONICAL_HOST])
+  gpg_error_config_prefix=""
+  dnl --with-libgpg-error-prefix=PFX is the preferred name for this option,
+  dnl since that is consistent with how our three siblings use the directory/
+  dnl package name in --with-$dir_name-prefix=PFX.
+  AC_ARG_WITH(libgpg-error-prefix,
+              AC_HELP_STRING([--with-libgpg-error-prefix=PFX],
+                             [prefix where GPG Error is installed (optional)]),
+              [gpg_error_config_prefix="$withval"])
+
+  dnl Accept --with-gpg-error-prefix and make it work the same as
+  dnl --with-libgpg-error-prefix above, for backwards compatibility,
+  dnl but do not document this old, inconsistently-named option.
+  AC_ARG_WITH(gpg-error-prefix,,
+              [gpg_error_config_prefix="$withval"])
+
+  if test x"${GPG_ERROR_CONFIG}" = x ; then
+     if test x"${gpg_error_config_prefix}" != x ; then
+        GPG_ERROR_CONFIG="${gpg_error_config_prefix}/bin/gpg-error-config"
+     else
+       case "${SYSROOT}" in
+         /*)
+           if test -x "${SYSROOT}/bin/gpg-error-config" ; then
+             GPG_ERROR_CONFIG="${SYSROOT}/bin/gpg-error-config"
+           fi
+           ;;
+         '')
+           ;;
+          *)
+           AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
+           ;;
+       esac
      fi
   fi
 
   AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
-  min_gpg_error_version=ifelse([$1], ,0.0,$1)
-  AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
+  min_gpg_error_version=ifelse([$1], ,1.33,$1)
   ok=no
-  if test "$GPG_ERROR_CONFIG" != "no" ; then
+
+  if test "$prefix" = NONE ; then
+    prefix_option_expanded=/usr/local
+  else
+    prefix_option_expanded="$prefix"
+  fi
+  if test "$exec_prefix" = NONE ; then
+    exec_prefix_option_expanded=$prefix_option_expanded
+  else
+    exec_prefix_option_expanded=$(prefix=$prefix_option_expanded eval echo $exec_prefix)
+  fi
+  libdir_option_expanded=$(prefix=$prefix_option_expanded exec_prefix=$exec_prefix_option_expanded eval echo $libdir)
+
+  if test -f $libdir_option_expanded/pkgconfig/gpg-error.pc; then
+    gpgrt_libdir=$libdir_option_expanded
+  else
+    if crt1_path=$(${CC:-cc} -print-file-name=crt1.o 2>/dev/null); then
+      if possible_libdir=$(cd ${crt1_path%/*} && pwd 2>/dev/null); then
+        if test -f $possible_libdir/pkgconfig/gpg-error.pc; then
+          gpgrt_libdir=$possible_libdir
+        fi
+      fi
+    fi
+  fi
+
+  if test "$GPG_ERROR_CONFIG" = "no" -a -n "$gpgrt_libdir"; then
+    AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no)
+    if test "$GPGRT_CONFIG" = "no"; then
+      unset GPGRT_CONFIG
+    else
+      GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
+      if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
+        GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
+        AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
+        gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
+      else
+        unset GPGRT_CONFIG
+      fi
+    fi
+  else
+    gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
+  fi
+  if test "$GPG_ERROR_CONFIG" != "no"; then
     req_major=`echo $min_gpg_error_version | \
                sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
     req_minor=`echo $min_gpg_error_version | \
                sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-    gpg_error_config_version=`$GPG_ERROR_CONFIG $gpg_error_config_args --version`
     major=`echo $gpg_error_config_version | \
                sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
     minor=`echo $gpg_error_config_version | \
                sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
     if test "$major" -gt "$req_major"; then
         ok=yes
-    else 
+    else
         if test "$major" -eq "$req_major"; then
             if test "$minor" -ge "$req_minor"; then
                ok=yes
             fi
         fi
     fi
+    if test -z "$GPGRT_CONFIG" -a -n "$gpgrt_libdir"; then
+      if test "$major" -gt 1 -o "$major" -eq 1 -a "$minor" -ge 33; then
+        AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no)
+        if test "$GPGRT_CONFIG" = "no"; then
+          unset GPGRT_CONFIG
+        else
+          GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
+          if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
+            GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
+            AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
+          else
+            unset GPGRT_CONFIG
+          fi
+        fi
+      fi
+    fi
   fi
+  AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
   if test $ok = yes; then
-    GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG $gpg_error_config_args --cflags`
-    GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG $gpg_error_config_args --libs`
-    AC_MSG_RESULT(yes)
+    GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG --cflags`
+    GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG --libs`
+    if test -z "$GPGRT_CONFIG"; then
+      GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --mt --cflags 2>/dev/null`
+      GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --mt --libs 2>/dev/null`
+    else
+      GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --variable=mtcflags 2>/dev/null`
+      GPG_ERROR_MT_CFLAGS="$GPG_ERROR_CFLAGS${GPG_ERROR_CFLAGS:+ }$GPG_ERROR_MT_CFLAGS"
+      GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --variable=mtlibs 2>/dev/null`
+      GPG_ERROR_MT_LIBS="$GPG_ERROR_LIBS${GPG_ERROR_LIBS:+ }$GPG_ERROR_MT_LIBS"
+    fi
+    AC_MSG_RESULT([yes ($gpg_error_config_version)])
     ifelse([$2], , :, [$2])
+    if test -z "$GPGRT_CONFIG"; then
+      gpg_error_config_host=`$GPG_ERROR_CONFIG --host 2>/dev/null || echo none`
+    else
+      gpg_error_config_host=`$GPG_ERROR_CONFIG --variable=host 2>/dev/null || echo none`
+    fi
+    if test x"$gpg_error_config_host" != xnone ; then
+      if test x"$gpg_error_config_host" != x"$host" ; then
+  AC_MSG_WARN([[
+***
+*** The config script "$GPG_ERROR_CONFIG" was
+*** built for $gpg_error_config_host and thus may not match the
+*** used host $host.
+*** You may want to use the configure option --with-libgpg-error-prefix
+*** to specify a matching config script or use \$SYSROOT.
+***]])
+        gpg_config_script_warn="$gpg_config_script_warn libgpg-error"
+      fi
+    fi
   else
     GPG_ERROR_CFLAGS=""
     GPG_ERROR_LIBS=""
+    GPG_ERROR_MT_CFLAGS=""
+    GPG_ERROR_MT_LIBS=""
     AC_MSG_RESULT(no)
     ifelse([$3], , :, [$3])
   fi
   AC_SUBST(GPG_ERROR_CFLAGS)
   AC_SUBST(GPG_ERROR_LIBS)
+  AC_SUBST(GPG_ERROR_MT_CFLAGS)
+  AC_SUBST(GPG_ERROR_MT_LIBS)
 ])
-

commit 9a25f7bb80c292f05cc4b58c2b8caf5252bbccb0
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Feb 20 10:33:05 2019 +0100

    Remove GNU-isms from the doc Makefiles.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/doc/Makefile.am b/doc/Makefile.am
index 3f77522..ceeff0c 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -19,9 +19,13 @@
 
 ## Process this file with automake to produce Makefile.in
 
-website = index.xhtml documentation.xhtml download.xhtml contact.xhtml \
-	format/web.css format/scute-logo.svg format/scute-border.jpg
-
-EXTRA_DIST = $(addprefix website/, $(website))
+EXTRA_DIST = \
+	website/contact.xhtml           /
+	website/documentation.xhtml	/
+	website/download.xhtml		/
+	website/index.xhtml		/
+	website/format/scute-border.jpg	/
+	website/format/scute-logo.svg	/
+	website/format/web.css
 
 SUBDIRS = manual
diff --git a/doc/manual/Makefile.am b/doc/manual/Makefile.am
index a3b8321..4d37147 100644
--- a/doc/manual/Makefile.am
+++ b/doc/manual/Makefile.am
@@ -19,8 +19,6 @@
 
 ## Process this file with automake to produce Makefile.in
 
-DISTCLEANFILES = scute.tmp
-
 images = firefox-cm.png firefox-cm-view-detail.png firefox-cm-view.png \
 	firefox-dm-load-after.png firefox-dm-load-before.png \
 	firefox-dm-load.png firefox-dm-token-present.png firefox-pref.png \
@@ -29,22 +27,40 @@ images = firefox-cm.png firefox-cm-view-detail.png firefox-cm-view.png \
 	libreoffice-certificate-selection.png \
 	libreoffice-digital-signatures.png libreoffice-pdf-signature.png
 
-images_eps = $(images:.png=.eps)
+# The same as images but eps suffix.
+images_eps = firefox-cm.eps firefox-cm-view-detail.eps firefox-cm-view.eps \
+	firefox-dm-load-after.eps firefox-dm-load-before.eps \
+	firefox-dm-load.eps firefox-dm-token-present.eps firefox-pref.eps \
+	firefox-pref-view.eps firefox-bad-pin.eps \
+	thunderbird-account-settings.eps thunderbird-smime-button.eps \
+	libreoffice-certificate-selection.eps \
+	libreoffice-digital-signatures.eps libreoffice-pdf-signature.eps
+
 
 EXTRA_DIST = $(images)
-CLEANFILES = $(images_eps)
+
+CLEANFILES =  $(images_eps)
+DISTCLEANFILES = scute.tmp
+
+BUILT_SOURCES = $(images_eps)
 
 info_TEXINFOS = scute.texi
 scute_TEXINFOS = lesser.texi
 
-scute.html: scute.texi $(foreach i,$(images),scute.html/$(i))
-	$(MAKEINFO) --html --output "$@" "$<"
-scute.html/%.png: %.png
-	@mkdir -p scute.html
-	cp -v "$<" "$@"
-
-scute.dvi: $(images_eps)
-scute.pdf: $(images)
+.png.eps:
+	$(CONVERT) `test -f '$<' || echo '$(srcdir)/'`$< $@
 
-%.eps : %.png
+.png.pdf:
 	$(CONVERT) `test -f '$<' || echo '$(srcdir)/'`$< $@
+
+
+# Do not include the generated EPS files.
+dist-hook:
+	cd $(distdir) && rm -f $(images_eps)
+
+
+# Make sure that scute.texi is touched if any other source file has
+# been modified.  This is required so that the version.texi magic
+# updates the release date.
+scute.texi : $(scute_TEXINFOS) $(images)
+	touch $(srcdir)/scute.texi
diff --git a/doc/manual/scute.texi b/doc/manual/scute.texi
index b27da91..1d699a9 100644
--- a/doc/manual/scute.texi
+++ b/doc/manual/scute.texi
@@ -30,7 +30,7 @@ license can be found in the section entitled ``Library Copying''.
 
 The Scute Manual 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
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
 General Public License for more details.
 
 @end ifinfo
@@ -60,7 +60,7 @@ license can be found in the section entitled ``Library Copying''.
 The Scute Manual 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
-General Public License for more details.
+lesser General Public License for more details.
 @end titlepage
 @page
 

commit b623ff524e63391f01aa075686b7004e8a0ceb91
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Feb 20 09:35:28 2019 +0100

    Update libtool and add usual defines for macOS.
    
    * m4/libtool.m4: Update from gpgme.
    * configure.ac (_DARWIN_C_SOURCE): Define from macOS.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/configure.ac b/configure.ac
index 5c4a98a..75262a6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -204,6 +204,7 @@ AC_DEFINE_UNQUOTED(VERSION_MINOR, $VERSION_MINOR, [Minor version number])
 # all safety checks here.  We are driving without seat belts now!
 # http://lists.cairographics.org/archives/cairo/2009-April/016962.html
 lt_cv_deplibs_check_method=pass_all
+
 LT_PREREQ([2.2.6])
 LT_INIT([win32-dll disable-static])
 LT_LANG([Windows Resource])
@@ -218,6 +219,11 @@ case "${host}" in
     *-*-gnu*)
 	have_ld_version_script=yes
         ;;
+    *-apple-darwin*)
+        AC_DEFINE(_DARWIN_C_SOURCE, 900000L,
+                  Expose all libc features (__DARWIN_C_FULL).)
+        AC_DEFINE(_XOPEN_SOURCE, 500, Activate POSIX interface on MacOS X)
+        ;;
 esac
 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
 
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index d7c043f..0d340c7 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -34,7 +34,7 @@ m4_define([_LT_COPYING], [dnl
 #
 # You should have received a copy of the GNU General Public License
 # along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# can be downloaded from https://www.gnu.org/licenses/gpl.html, or
 # obtained by writing to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 ])
@@ -1196,7 +1196,7 @@ fi
 # Invoke $ECHO with all args, space-separated.
 func_echo_all ()
 {
-    $ECHO "$*" 
+    $ECHO "$*"
 }
 
 case "$ECHO" in
@@ -1312,7 +1312,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -1324,19 +1324,9 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    case `/usr/bin/file conftest.o` in
-	      *x86-64*)
-		LD="${LD-ld} -m elf32_x86_64"
-		;;
-	      *)
-		LD="${LD-ld} -m elf_i386"
-		;;
-	    esac
-	    ;;
-	  powerpc64le-*)
-	    LD="${LD-ld} -m elf32lppclinux"
+	    LD="${LD-ld} -m elf_i386"
 	    ;;
-	  powerpc64-*)
+	  ppc64-*linux*|powerpc64-*linux*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -1355,10 +1345,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  powerpcle-*)
-	    LD="${LD-ld} -m elf64lppc"
-	    ;;
-	  powerpc-*)
+	  ppc*-*linux*|powerpc*-*linux*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -1701,8 +1688,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-	test undefined != "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
@@ -2526,6 +2512,17 @@ freebsd* | dragonfly*)
   esac
   ;;
 
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -2642,7 +2639,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -3258,6 +3255,10 @@ freebsd* | dragonfly*)
   fi
   ;;
 
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -3296,7 +3297,7 @@ irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -4048,7 +4049,7 @@ m4_if([$1], [CXX], [
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -4347,7 +4348,7 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -4772,7 +4773,7 @@ _LT_EOF
         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
 	# If the export-symbols file already is a .def file (1st line
 	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
 	  cp $export_symbols $output_objdir/$soname.def;
 	else
 	  echo EXPORTS > $output_objdir/$soname.def;
@@ -5149,7 +5150,7 @@ _LT_EOF
 	shrext_cmds=".dll"
 	# FIXME: Setting linknames here is a bad hack.
 	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
 	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
 	  else
 	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
@@ -6148,7 +6149,7 @@ if test "$_lt_caught_CXX_error" != yes; then
 	  shrext_cmds=".dll"
 	  # FIXME: Setting linknames here is a bad hack.
 	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
 	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
 	    else
 	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
@@ -6189,7 +6190,7 @@ if test "$_lt_caught_CXX_error" != yes; then
 	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
 	    # If the export-symbols file already is a .def file (1st line
 	    # is EXPORTS), use it as is; otherwise, prepend...
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED \"$sed_uncomment_deffile\" $export_symbols | $SED 1q`" = xEXPORTS; then
 	      cp $export_symbols $output_objdir/$soname.def;
 	    else
 	      echo EXPORTS > $output_objdir/$soname.def;
@@ -6240,6 +6241,9 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(ld_shlibs, $1)=yes
         ;;
 
+      gnu*)
+        ;;
+
       haiku*)
         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
@@ -6401,7 +6405,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler

commit cc91c168e4aecc292f95156a96d9fd96e449d8b1
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Feb 20 09:29:42 2019 +0100

    Make C_Sign error handling spec compliant.
    
    * src/slots.c (session_sign): Clear the flag sign-initialized flag on
    error.
    * src/p11-signinit.c (C_SignInit): Minor rework.
    * src/p11-sign.c (C_Sign): Ditto.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/src/p11-sign.c b/src/p11-sign.c
index 870f08c..4f2ae7d 100644
--- a/src/p11-sign.c
+++ b/src/p11-sign.c
@@ -37,8 +37,12 @@
  * If the function returns CKR_BUFFER_TOO_SMALL no further C_SignInit
  * is required, instead the function can be called again with a larger
  * buffer.  On a successful operation CKR_OK is returned and other
- * signatures may be created without an new C_SignInit.  On all other
+ * signatures may be created without a new C_SignInit.  On all other
  * return codes a new C_SignInit is required.
+ *
+ * In contrast to the specs the return code CKR_ARGUMENTS_BAD may not
+ * require a new C_SignInit because this can be considered a bug in
+ * the caller's code.
  */
 CK_RV CK_SPEC
 C_Sign (CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen,
@@ -46,7 +50,7 @@ C_Sign (CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen,
 {
   CK_RV err = CKR_OK;
   slot_iterator_t slot;
-  session_iterator_t session;
+  session_iterator_t sid;
 
   if (pData == NULL_PTR || pulSignatureLen == NULL_PTR)
     return CKR_ARGUMENTS_BAD;
@@ -55,18 +59,11 @@ C_Sign (CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen,
   if (err)
     return err;
 
-  err = slots_lookup_session (hSession, &slot, &session);
-  if (err)
-    goto out;
-
-  /* FIXME: Check that C_SignInit has been called.  */
-
-  err = session_sign (slot, session, pData, ulDataLen,
-		      pSignature, pulSignatureLen);
+  err = slots_lookup_session (hSession, &slot, &sid);
+  if (!err)
+    err = session_sign (slot, sid, pData, ulDataLen,
+                        pSignature, pulSignatureLen);
 
- out:
-  /* FIXME: Update the flag which indicates whether C_SignInit has
-   * been called.  */
   scute_global_unlock ();
   return err;
 }
diff --git a/src/p11-signinit.c b/src/p11-signinit.c
index 2c54502..a529262 100644
--- a/src/p11-signinit.c
+++ b/src/p11-signinit.c
@@ -38,7 +38,7 @@ C_SignInit (CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
 {
   CK_RV err = CKR_OK;
   slot_iterator_t slot;
-  session_iterator_t session;
+  session_iterator_t sid;
 
   if (pMechanism == NULL_PTR || pMechanism->mechanism != CKM_RSA_PKCS)
     return CKR_ARGUMENTS_BAD;
@@ -50,13 +50,10 @@ C_SignInit (CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
   if (err)
     return err;
 
-  err = slots_lookup_session (hSession, &slot, &session);
-  if (err)
-    goto out;
-
-  err = session_set_signing_key (slot, session, hKey);
+  err = slots_lookup_session (hSession, &slot, &sid);
+  if (!err)
+    err = session_set_signing_key (slot, sid, hKey);
 
- out:
   scute_global_unlock ();
   return err;
 }
diff --git a/src/slots.c b/src/slots.c
index c97bbb8..ca6a015 100644
--- a/src/slots.c
+++ b/src/slots.c
@@ -992,7 +992,8 @@ session_get_search_result (slot_iterator_t id, session_iterator_t sid,
 }
 
 
-/* Set the signing key for session SID in slot ID to KEY.  */
+/* Set the signing key for session SID in slot ID to KEY.  This is the
+ * core of C_SignInit.  */
 CK_RV
 session_set_signing_key (slot_iterator_t id, session_iterator_t sid,
 			 object_iterator_t key)
@@ -1027,8 +1028,7 @@ session_set_signing_key (slot_iterator_t id, session_iterator_t sid,
 }
 
 
-/* FIXME: The description is wrong:
-   Set the signing key for session SID in slot ID to KEY.  */
+/* The core of C_Sign - see there for a description.  */
 CK_RV
 session_sign (slot_iterator_t id, session_iterator_t sid,
 	      CK_BYTE_PTR pData, CK_ULONG ulDataLen,
@@ -1036,6 +1036,7 @@ session_sign (slot_iterator_t id, session_iterator_t sid,
 {
   struct slot *slot = scute_table_data (slots, id);
   struct session *session = scute_table_data (slot->sessions, sid);
+  int rc;
   gpg_error_t err;
   CK_ATTRIBUTE_PTR attr;
   CK_ULONG attr_count;
@@ -1051,24 +1052,36 @@ session_sign (slot_iterator_t id, session_iterator_t sid,
   if (!session->signing_key)
     return CKR_OPERATION_NOT_INITIALIZED;
 
-  err = slot_get_object (id, session->signing_key, &attr, &attr_count);
-  if (err)
-    return err;
+  rc = slot_get_object (id, session->signing_key, &attr, &attr_count);
+  if (rc)
+    goto leave;
   if (attr_count == (CK_ULONG) -1)
-    return CKR_KEY_HANDLE_INVALID;
+    {
+      rc = CKR_KEY_HANDLE_INVALID;
+      goto leave;
+    }
   if (attr->ulValueLen != sizeof (key_class)
       || memcmp (attr->pValue, &key_class, sizeof (key_class)))
-    return CKR_KEY_HANDLE_INVALID;
+    {
+      rc = CKR_KEY_HANDLE_INVALID;
+      goto leave;
+    }
 
   /* Find the CKA_ID */
   for (i = 0; i < attr_count; i++)
     if (attr[i].type == CKA_ID)
       break;
   if (i == attr_count)
-    return CKR_GENERAL_ERROR;
+    {
+      rc = CKR_GENERAL_ERROR;
+      goto leave;
+    }
 
   if (attr[i].ulValueLen >= sizeof key_id - 1)
-    return CKR_GENERAL_ERROR;
+    {
+      rc = CKR_GENERAL_ERROR;
+      goto leave;
+    }
   strncpy (key_id, attr[i].pValue, attr[i].ulValueLen);
   key_id[attr[i].ulValueLen] = 0;
   DEBUG (DBG_INFO, "Found CKA_ID '%s'", key_id);
@@ -1076,16 +1089,19 @@ session_sign (slot_iterator_t id, session_iterator_t sid,
     ;
   if (*keyref)
     keyref++;  /* Point to the grip.  */
-  DEBUG (DBG_INFO, "Using keyref '%s'", keyref);
 
   sig_len = *pulSignatureLen;
   err = scute_agent_sign (keyref, pData, ulDataLen, pSignature, &sig_len);
-
   /* Take care of error codes which are not mapped by default.  */
   if (gpg_err_code (err) == GPG_ERR_INV_LENGTH)
-    return CKR_BUFFER_TOO_SMALL;
+    rc = CKR_BUFFER_TOO_SMALL;
   else if (gpg_err_code (err) == GPG_ERR_INV_ARG)
-    return CKR_ARGUMENTS_BAD;
+    rc = CKR_ARGUMENTS_BAD;
   else
-    return scute_gpg_err_to_ck (err);
+    rc = scute_gpg_err_to_ck (err);
+
+ leave:
+  if (rc != CKR_OK && rc != CKR_BUFFER_TOO_SMALL)
+    session->signing_key = 0;
+  return rc;
 }

-----------------------------------------------------------------------

Summary of changes:
 .gitignore                            |   1 +
 ChangeLog                             | 594 +---------------------------------
 Makefile.am                           |  32 +-
 autogen.sh                            |  95 ++++--
 build-aux/git-log-fix                 |   3 +
 ChangeLog => build-aux/git-log-footer |  10 +-
 configure.ac                          |   9 +
 doc/Makefile.am                       |  12 +-
 doc/manual/Makefile.am                |  42 ++-
 doc/manual/scute.texi                 |   4 +-
 m4/gpg-error.m4                       | 159 +++++++--
 m4/libtool.m4                         |  64 ++--
 src/p11-sign.c                        |  23 +-
 src/p11-signinit.c                    |  11 +-
 src/slots.c                           |  46 ++-
 15 files changed, 382 insertions(+), 723 deletions(-)
 create mode 100644 build-aux/git-log-fix
 copy ChangeLog => build-aux/git-log-footer (99%)


hooks/post-receive
-- 
PKCS#11 token on top of gpg-agent
http://git.gnupg.org




More information about the Gnupg-commits mailing list