Imported Upstream version 1.5.1 upstream/1.5.1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Thu, 23 Dec 2021 01:56:24 +0000 (10:56 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Thu, 23 Dec 2021 01:56:24 +0000 (10:56 +0900)
22 files changed:
AUTHORS
ChangeLog
Makefile.am
Makefile.in
NEWS
aclocal.m4
configure
configure.ac
doc/Makefile.in
doc/ksba.info
doc/stamp-vti
doc/version.texi
gl/Makefile.in
m4/Makefile.in
src/Makefile.in
src/asn1-parse.c
src/cms.c
src/keyinfo.c
src/ksba.h
src/ksba.h.in
src/version.c
tests/Makefile.in

diff --git a/AUTHORS b/AUTHORS
index ae0ecf2..8e629ca 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -24,7 +24,7 @@ Copyright
 =========
 
  | Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2010, 2011
- |               2012, 2013, 2014, 2015, 2018, 2019, 2020 g10 Code GmbH
+ |               2012, 2013, 2014, 2015, 2018, 2019, 2020, 2021 g10 Code GmbH
  | Copyright (C) 2001, 2002, 2003, 2007 Free Software Foundation, Inc.
  | Copyright (C) 2000, 2001 Fabio Fiorina
 
index a0a20f1..0b778ce 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+2021-04-06  Werner Koch  <wk@gnupg.org>
+
+       Release 1.5.1.
+       + commit 1015bea2f8a55b965dee29e17118bc73c2deca39
+
+
+       build: Add the usual release targets.
+       + commit 1050939435548baa30a8ba8c20b7824ec7b2841e
+       * Makefile.am (release, sign-release): New targets.
+
+2021-02-22  Werner Koch  <wk@gnupg.org>
+
+       Support Brainpoolp256r1 and Brainpoolp384r1 with ECDomainParameters.
+       + commit 4243085d7d4361d8900010ed32018985b133f958
+       * src/keyinfo.c (ecdomainparm_to_name): Two more entries.
+
+2021-02-01  Werner Koch  <wk@gnupg.org>
+
+       Support Brainpoolp512r1 certs specified with ECDomainParameters.
+       + commit e51873b567d9f9cce708d191b29f09d56ea16f2d
+       * src/keyinfo.c (ecdomainparm_to_name): New table.
+       (_ksba_keyinfo_to_sexp): Support ECDomainParameter lookup.
+
+2020-12-21  Werner Koch  <wk@gnupg.org>
+
+       Fix a possible segv in case of an unknown CMS object.
+       + commit fe03ab4c14e71cb08210159a943a6edded6cdc4d
+       * src/cms.c (ksba_cms_get_enc_val): Fix strcmp.
+
 2020-11-18  Werner Koch  <wk@gnupg.org>
 
        Release 1.5.0.
index e8e16bc..3a01899 100644 (file)
 
 ## Process this file with automake to produce Makefile.in
 
+# Location of the released tarball archives.  This is prefixed by
+# the variable RELEASE_ARCHIVE in ~/.gnupg-autogen.rc.  For example:
+# RELEASE_ARCHIVE=wk@somehost:archive/tarballs
+RELEASE_ARCHIVE_SUFFIX  = libksba
+
 ACLOCAL_AMFLAGS = -I m4 -I gl/m4
 DISTCHECK_CONFIGURE_FLAGS = --enable-doc
 
@@ -101,4 +106,60 @@ clean-local: clean-coverage
 
 endif # HAVE_GCOV
 
-.PHONY: gen-ChangeLog clean-coverage coverage-html
+.PHONY: gen-ChangeLog clean-coverage coverage-html release sign-release
+
+# Macro to help the release target.
+RELEASE_NAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
+
+release:
+       +(set -e;\
+        if [ "$(abs_top_builddir)" = "$(abs_top_srcdir)" ]; then \
+           echo "error: build directory must not be the source directory" >&2;\
+          exit 2;\
+         fi ;\
+        echo "/* Build started at $$(date -uIseconds) */" ;\
+        cd $(top_srcdir); \
+        ./autogen.sh --force; \
+        cd $(abs_top_builddir); \
+        rm -rf dist; mkdir dist ; cd dist ; \
+        $(abs_top_srcdir)/configure --enable-maintainer-mode; \
+        $(MAKE) distcheck; \
+        echo "/* Build finished at $$(date -uIseconds) */" ;\
+         echo "/*" ;\
+        echo " * Please run the final step interactivly:" ;\
+        echo " *   make sign-release" ;\
+        echo " */" ;\
+       ) 2>&1 | tee "$(RELEASE_NAME).buildlog"
+
+sign-release:
+        +(set -e; \
+         cd dist; \
+         x=$$(grep '^RELEASE_ARCHIVE=' $$HOME/.gnupg-autogen.rc|cut -d= -f2);\
+          if [ -z "$$x" ]; then \
+             echo "error: RELEASE_ARCHIVE missing in ~/.gnupg-autogen.rc">&2; \
+             exit 2;\
+          fi;\
+          myarchive="$$x/$(RELEASE_ARCHIVE_SUFFIX)";\
+         x=$$(grep '^RELEASE_SIGNKEY=' $$HOME/.gnupg-autogen.rc|cut -d= -f2);\
+          if [ -z "$$x" ]; then \
+             echo "error: RELEASE_SIGNKEY missing in ~/.gnupg-autogen.rc">&2; \
+             exit 2;\
+          fi;\
+         mysignkey="$$x";\
+         files1="$(RELEASE_NAME).tar.bz2" ; \
+         files2="$(RELEASE_NAME).tar.bz2.sig \
+                 $(RELEASE_NAME).swdb \
+                 $(RELEASE_NAME).buildlog" ;\
+         echo "/* Signing the source tarball ..." ;\
+         gpg -sbu $$mysignkey $(RELEASE_NAME).tar.bz2 ;\
+         cat $(RELEASE_NAME).swdb >swdb.snippet;\
+         echo >>swdb.snippet ;\
+         sha1sum $${files1} >>swdb.snippet ;\
+          cat "../$(RELEASE_NAME).buildlog" swdb.snippet \
+               | gzip >$(RELEASE_NAME).buildlog ;\
+          echo "Copying to archive $$myarchive ..." ;\
+         scp -p $${files1} $${files2} $${myarchive}/ || true;\
+         echo '/*' ;\
+         echo ' * All done; for checksums see dist/swdb.snippet' ;\
+         echo ' */' ;\
+        )
index 3a8ab1d..11082bd 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -161,8 +161,8 @@ am__recursive_targets = \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
        cscope distdir distdir-am dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
-       $(LISP)config.h.in
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
+       config.h.in
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
 # *not* preserved.
@@ -233,6 +233,8 @@ am__relativize = \
 GZIP_ENV = --best
 DIST_ARCHIVES = $(distdir).tar.bz2
 DIST_TARGETS = dist-bzip2
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -386,6 +388,11 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+
+# Location of the released tarball archives.  This is prefixed by
+# the variable RELEASE_ARCHIVE in ~/.gnupg-autogen.rc.  For example:
+# RELEASE_ARCHIVE=wk@somehost:archive/tarballs
+RELEASE_ARCHIVE_SUFFIX = libksba
 ACLOCAL_AMFLAGS = -I m4 -I gl/m4
 DISTCHECK_CONFIGURE_FLAGS = --enable-doc
 
@@ -403,6 +410,9 @@ EXTRA_DIST = autogen.sh autogen.rc \
 @BUILD_DOC_TRUE@doc = doc
 SUBDIRS = m4 gl src $(tests) $(doc)
 gen_start_date = 2011-12-01T00:00:00
+
+# Macro to help the release target.
+RELEASE_NAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
 all: config.h
        $(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -656,6 +666,10 @@ dist-xz: distdir
        tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
        $(am__post_remove_distdir)
 
+dist-zstd: distdir
+       tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+       $(am__post_remove_distdir)
+
 dist-tarZ: distdir
        @echo WARNING: "Support for distribution archives compressed with" \
                       "legacy program 'compress' is deprecated." >&2
@@ -698,6 +712,8 @@ distcheck: dist
          eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
        *.zip*) \
          unzip $(distdir).zip ;;\
+       *.tar.zst*) \
+         zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
        esac
        chmod -R a-w $(distdir)
        chmod u+w $(distdir)
@@ -714,7 +730,7 @@ distcheck: dist
            $(DISTCHECK_CONFIGURE_FLAGS) \
            --srcdir=../.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
-         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
          && $(MAKE) $(AM_MAKEFLAGS) check \
          && $(MAKE) $(AM_MAKEFLAGS) install \
          && $(MAKE) $(AM_MAKEFLAGS) installcheck \
@@ -877,8 +893,8 @@ uninstall-am:
        am--refresh check check-am clean clean-cscope clean-generic \
        clean-libtool clean-local cscope cscopelist-am ctags ctags-am \
        dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzip \
-       dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
-       distclean-generic distclean-hdr distclean-libtool \
+       dist-shar dist-tarZ dist-xz dist-zip dist-zstd distcheck \
+       distclean distclean-generic distclean-hdr distclean-libtool \
        distclean-tags distcleancheck distdir distuninstallcheck dvi \
        dvi-am html html-am info info-am install install-am \
        install-data install-data-am install-dvi install-dvi-am \
@@ -939,7 +955,60 @@ stowinstall:
 
 @HAVE_GCOV_TRUE@clean-local: clean-coverage
 
-.PHONY: gen-ChangeLog clean-coverage coverage-html
+.PHONY: gen-ChangeLog clean-coverage coverage-html release sign-release
+
+release:
+       +(set -e;\
+        if [ "$(abs_top_builddir)" = "$(abs_top_srcdir)" ]; then \
+           echo "error: build directory must not be the source directory" >&2;\
+          exit 2;\
+         fi ;\
+        echo "/* Build started at $$(date -uIseconds) */" ;\
+        cd $(top_srcdir); \
+        ./autogen.sh --force; \
+        cd $(abs_top_builddir); \
+        rm -rf dist; mkdir dist ; cd dist ; \
+        $(abs_top_srcdir)/configure --enable-maintainer-mode; \
+        $(MAKE) distcheck; \
+        echo "/* Build finished at $$(date -uIseconds) */" ;\
+         echo "/*" ;\
+        echo " * Please run the final step interactivly:" ;\
+        echo " *   make sign-release" ;\
+        echo " */" ;\
+       ) 2>&1 | tee "$(RELEASE_NAME).buildlog"
+
+sign-release:
+        +(set -e; \
+         cd dist; \
+         x=$$(grep '^RELEASE_ARCHIVE=' $$HOME/.gnupg-autogen.rc|cut -d= -f2);\
+          if [ -z "$$x" ]; then \
+             echo "error: RELEASE_ARCHIVE missing in ~/.gnupg-autogen.rc">&2; \
+             exit 2;\
+          fi;\
+          myarchive="$$x/$(RELEASE_ARCHIVE_SUFFIX)";\
+         x=$$(grep '^RELEASE_SIGNKEY=' $$HOME/.gnupg-autogen.rc|cut -d= -f2);\
+          if [ -z "$$x" ]; then \
+             echo "error: RELEASE_SIGNKEY missing in ~/.gnupg-autogen.rc">&2; \
+             exit 2;\
+          fi;\
+         mysignkey="$$x";\
+         files1="$(RELEASE_NAME).tar.bz2" ; \
+         files2="$(RELEASE_NAME).tar.bz2.sig \
+                 $(RELEASE_NAME).swdb \
+                 $(RELEASE_NAME).buildlog" ;\
+         echo "/* Signing the source tarball ..." ;\
+         gpg -sbu $$mysignkey $(RELEASE_NAME).tar.bz2 ;\
+         cat $(RELEASE_NAME).swdb >swdb.snippet;\
+         echo >>swdb.snippet ;\
+         sha1sum $${files1} >>swdb.snippet ;\
+          cat "../$(RELEASE_NAME).buildlog" swdb.snippet \
+               | gzip >$(RELEASE_NAME).buildlog ;\
+          echo "Copying to archive $$myarchive ..." ;\
+         scp -p $${files1} $${files2} $${myarchive}/ || true;\
+         echo '/*' ;\
+         echo ' * All done; for checksums see dist/swdb.snippet' ;\
+         echo ' */' ;\
+        )
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/NEWS b/NEWS
index 4720179..2f4fd75 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,11 @@
+Noteworthy changes in version 1.5.1 (2021-04-06) [C21/A13/R1]
+------------------------------------------------
+
+ * Support Brainpool curves specified by ECDomainParameters.
+
+ Release-info: https://dev.gnupg.org/T5379
+
+
 Noteworthy changes in version 1.5.0 (2020-11-18) [C21/A13/R0]
 ------------------------------------------------
 
index 509980c..d781ef0 100644 (file)
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@ You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
 [am__api_version='1.16'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.16.1], [],
+m4_if([$1], [1.16.3], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.1])dnl
+[AM_AUTOMAKE_VERSION([1.16.3])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -371,7 +371,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
   done
   if test $am_rc -ne 0; then
     AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
-    for automatic dependency tracking.  Try re-running configure with the
+    for automatic dependency tracking.  If GNU make was not used, consider
+    re-running the configure script with MAKE="gmake" (or whatever is
+    necessary).  You can also try re-running configure with the
     '--disable-dependency-tracking' option to at least be able to build
     the package (albeit without support for automatic dependency tracking).])
   fi
@@ -398,7 +400,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -595,7 +597,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -616,7 +618,7 @@ if test x"${install_sh+set}" != xset; then
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 2003-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -638,7 +640,7 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -673,7 +675,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -716,7 +718,7 @@ AC_SUBST([am__quote])])
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -737,12 +739,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
 if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
+  MISSING="\${SHELL} '$am_aux_dir/missing'"
 fi
 # Use eval to expand $SHELL
 if eval "$MISSING --is-lightweight"; then
@@ -755,7 +752,7 @@ fi
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -784,7 +781,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -831,7 +828,7 @@ AC_LANG_POP([C])])
 # For backward compatibility.
 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -850,7 +847,7 @@ AC_DEFUN([AM_RUN_LOG],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -931,7 +928,7 @@ AC_CONFIG_COMMANDS_PRE(
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -991,7 +988,7 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1019,7 +1016,7 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1038,7 +1035,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Copyright (C) 2004-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
index 38f7cc4..e9b010b 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libksba 1.5.0.
+# Generated by GNU Autoconf 2.69 for libksba 1.5.1.
 #
 # Report bugs to <https://bugs.gnupg.org>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libksba'
 PACKAGE_TARNAME='libksba'
-PACKAGE_VERSION='1.5.0'
-PACKAGE_STRING='libksba 1.5.0'
+PACKAGE_VERSION='1.5.1'
+PACKAGE_STRING='libksba 1.5.1'
 PACKAGE_BUGREPORT='https://bugs.gnupg.org'
 PACKAGE_URL=''
 
@@ -1381,7 +1381,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libksba 1.5.0 to adapt to many kinds of systems.
+\`configure' configures libksba 1.5.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1452,7 +1452,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libksba 1.5.0:";;
+     short | recursive ) echo "Configuration of libksba 1.5.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1581,7 +1581,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libksba configure 1.5.0
+libksba configure 1.5.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2187,7 +2187,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libksba $as_me 1.5.0, which was
+It was created by libksba $as_me 1.5.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2543,7 +2543,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # Please remember to document interface changes in the NEWS file.
 LIBKSBA_LT_CURRENT=21
 LIBKSBA_LT_AGE=13
-LIBKSBA_LT_REVISION=0
+LIBKSBA_LT_REVISION=1
 #-------------------
 # If the API is changed in an incompatible way: increment the next counter.
 KSBA_CONFIG_API_VERSION=1
@@ -2758,12 +2758,7 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
+  MISSING="\${SHELL} '$am_aux_dir/missing'"
 fi
 # Use eval to expand $SHELL
 if eval "$MISSING --is-lightweight"; then
@@ -3068,7 +3063,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libksba'
- VERSION='1.5.0'
+ VERSION='1.5.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -12444,7 +12439,7 @@ fi
 
 
 
-VERSION_NUMBER=0x010500
+VERSION_NUMBER=0x010501
 
 
 
 # Generate extended version information for W32.
 if test "$have_w32_system" = yes; then
       BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
-      BUILD_FILEVERSION="${BUILD_FILEVERSION}39946"
+      BUILD_FILEVERSION="${BUILD_FILEVERSION}4117"
 fi
 
 
-BUILD_REVISION="9c0a818"
+BUILD_REVISION="1015bea"
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15979,7 +15974,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libksba $as_me 1.5.0, which was
+This file was extended by libksba $as_me 1.5.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16045,7 +16040,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libksba config.status 1.5.0
+libksba config.status 1.5.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -17217,7 +17212,9 @@ $as_echo X/"$am_mf" |
     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "Something went wrong bootstrapping makefile fragments
-    for automatic dependency tracking.  Try re-running configure with the
+    for automatic dependency tracking.  If GNU make was not used, consider
+    re-running the configure script with MAKE=\"gmake\" (or whatever is
+    necessary).  You can also try re-running configure with the
     '--disable-dependency-tracking' option to at least be able to build
     the package (albeit without support for automatic dependency tracking).
 See \`config.log' for more details" "$LINENO" 5; }
@@ -18056,7 +18053,7 @@ fi
 echo "
         Libksba v${VERSION} has been configured as follows:
 
-        Revision:  9c0a818  (39946)
+        Revision:  1015bea  (4117)
         Platform:  $host
 
 "
index 23e97d4..0c86735 100644 (file)
@@ -30,7 +30,7 @@ min_automake_version="1.14"
 m4_define([mym4_package],[libksba])
 m4_define([mym4_major], [1])
 m4_define([mym4_minor], [5])
-m4_define([mym4_micro], [0])
+m4_define([mym4_micro], [1])
 
 # Below is m4 magic to extract and compute the git revision number,
 # the decimalized short revision number, a beta version string and a
@@ -52,7 +52,7 @@ AC_INIT([mym4_package],[mym4_version],[https://bugs.gnupg.org])
 # Please remember to document interface changes in the NEWS file.
 LIBKSBA_LT_CURRENT=21
 LIBKSBA_LT_AGE=13
-LIBKSBA_LT_REVISION=0
+LIBKSBA_LT_REVISION=1
 #-------------------
 # If the API is changed in an incompatible way: increment the next counter.
 KSBA_CONFIG_API_VERSION=1
index 1e9fd8a..ac8b76f 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
index 367a4ab..f898f79 100644 (file)
@@ -8,8 +8,8 @@ END-INFO-DIR-ENTRY
 This file documents the KSBA library to access X.509 and CMS data
 structures.
 
-   This is edition 1.5.0, last updated 12 May 2020, of 'The KSBA
-Reference Manual', for Version 1.5.0.
+   This is edition 1.5.1, last updated 12 May 2020, of 'The KSBA
+Reference Manual', for Version 1.5.1.
 
    Copyright (C) 2002, 2003, 2004 g10 Code GmbH
 
@@ -25,8 +25,8 @@ File: ksba.info,  Node: Top,  Next: Introduction,  Up: (dir)
 Main Menu
 *********
 
-This is edition 1.5.0, last updated 12 May 2020, of 'The KSBA Reference
-Manual', for Version 1.5.0 of the KSBA library.
+This is edition 1.5.1, last updated 12 May 2020, of 'The KSBA Reference
+Manual', for Version 1.5.1 of the KSBA library.
 
    Copyright (C) 2002, 2003, 2004 g10 Code GmbH
 
index ed887d3..9c45e18 100644 (file)
@@ -1,4 +1,4 @@
 @set UPDATED 12 May 2020
 @set UPDATED-MONTH May 2020
-@set EDITION 1.5.0
-@set VERSION 1.5.0
+@set EDITION 1.5.1
+@set VERSION 1.5.1
index ed887d3..9c45e18 100644 (file)
@@ -1,4 +1,4 @@
 @set UPDATED 12 May 2020
 @set UPDATED-MONTH May 2020
-@set EDITION 1.5.0
-@set VERSION 1.5.0
+@set EDITION 1.5.1
+@set VERSION 1.5.1
index 0f04558..05dae40 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -509,7 +509,8 @@ all-am: Makefile $(LTLIBRARIES)
 installdirs:
 install: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
+install-exec: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-am
 install-data: install-data-am
 uninstall: uninstall-am
 
@@ -612,7 +613,7 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: all check install install-am install-strip
+.MAKE: all check install install-am install-exec install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
        clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
index 28798d3..ad653ff 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
index 6a574c2..1fe260d 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1010,7 +1010,8 @@ installdirs:
        done
 install: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
+install-exec: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-am
 install-data: install-data-am
 uninstall: uninstall-am
 
@@ -1183,7 +1184,7 @@ uninstall-am: uninstall-binSCRIPTS uninstall-libLTLIBRARIES \
        uninstall-local uninstall-m4dataDATA \
        uninstall-nodist_includeHEADERS uninstall-pkgconfigDATA
 
-.MAKE: all check install install-am install-strip
+.MAKE: all check install install-am install-exec install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
        clean-generic clean-libLTLIBRARIES clean-libtool \
index 29bf4d6..821a504 100644 (file)
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.3.2.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.3.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -61,8 +65,8 @@
 
 
 
-/* Copy the first part of user declarations.  */
-#line 42 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 42 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:337  */
 
 #ifndef BUILD_GENTOOLS
 # include <config.h>
@@ -111,13 +115,16 @@ struct parser_control_s {
 #define PARSECTL ((struct parser_control_s *)parm)
 
 
-#line 115 "asn1-parse.c" /* yacc.c:339  */
-
+#line 119 "asn1-parse.c" /* yacc.c:337  */
 # ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
 #  else
-#   define YY_NULLPTR 0
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
@@ -192,17 +199,19 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 97 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:355  */
+#line 97 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:352  */
 
   unsigned int constant;
   char str[MAX_STRING_LENGTH];
   AsnNode node;
 
-#line 205 "asn1-parse.c" /* yacc.c:355  */
+#line 212 "asn1-parse.c" /* yacc.c:352  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -213,8 +222,8 @@ int yyparse (void *parm);
 
 
 
-/* Copy the second part of user declarations.  */
-#line 103 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:358  */
+/* Second part of user prologue.  */
+#line 103 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:354  */
 
 static AsnNode new_node (struct parser_control_s *parsectl, node_type_t type);
 #define NEW_NODE(a)  (new_node (PARSECTL, (a)))
@@ -229,7 +238,7 @@ static void set_down (AsnNode node, AsnNode down);
 static int yylex (YYSTYPE *lvalp, void *parm);
 static void yyerror (void *parm, const char *s);
 
-#line 233 "asn1-parse.c" /* yacc.c:358  */
+#line 242 "asn1-parse.c" /* yacc.c:354  */
 
 #ifdef short
 # undef short
@@ -250,13 +259,13 @@ typedef signed char yytype_int8;
 #ifdef YYTYPE_UINT16
 typedef YYTYPE_UINT16 yytype_uint16;
 #else
-typedef unsigned short int yytype_uint16;
+typedef unsigned short yytype_uint16;
 #endif
 
 #ifdef YYTYPE_INT16
 typedef YYTYPE_INT16 yytype_int16;
 #else
-typedef short int yytype_int16;
+typedef short yytype_int16;
 #endif
 
 #ifndef YYSIZE_T
@@ -268,7 +277,7 @@ typedef short int yytype_int16;
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
@@ -304,15 +313,6 @@ typedef short int yytype_int16;
 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
 #endif
 
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
 # define YYUSE(E) ((void) (E))
@@ -320,7 +320,7 @@ typedef short int yytype_int16;
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     _Pragma ("GCC diagnostic push") \
@@ -482,16 +482,16 @@ union yyalloc
 /* YYNSTATES -- Number of states.  */
 #define YYNSTATES  203
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   301
 
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
 #define YYTRANSLATE(YYX)                                                \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
+   as returned by yylex.  */
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -804,22 +804,22 @@ static const yytype_uint8 yyr2[] =
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
-      yyerror (parm, YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (parm, YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
 
 /* Error token number */
 #define YYTERROR        1
@@ -859,38 +859,38 @@ do {                                                                      \
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *parm)
+yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, void *parm)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   YYUSE (parm);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
 # endif
   YYUSE (yytype);
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *parm)
+yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, void *parm)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
+  YYFPRINTF (yyo, "%s %s (",
              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep, parm);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yytype, yyvaluep, parm);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -924,7 +924,7 @@ do {                                                            \
 static void
 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, void *parm)
 {
-  unsigned long int yylno = yyrline[yyrule];
+  unsigned long yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
@@ -935,7 +935,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, void *parm)
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr,
                        yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
+                       &yyvsp[(yyi + 1) - (yynrhs)]
                                               , parm);
       YYFPRINTF (stderr, "\n");
     }
@@ -1039,7 +1039,10 @@ yytnamerr (char *yyres, const char *yystr)
           case '\\':
             if (*++yyp != '\\')
               goto do_not_strip_quotes;
-            /* Fall through.  */
+            else
+              goto append;
+
+          append:
           default:
             if (yyres)
               yyres[yyn] = *yyp;
@@ -1057,7 +1060,7 @@ yytnamerr (char *yyres, const char *yystr)
   if (! yyres)
     return yystrlen (yystr);
 
-  return yystpcpy (yyres, yystr) - yyres;
+  return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
 }
 # endif
 
@@ -1135,10 +1138,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yyarg[yycount++] = yytname[yyx];
                 {
                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (! (yysize <= yysize1
-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+                    yysize = yysize1;
+                  else
                     return 2;
-                  yysize = yysize1;
                 }
               }
         }
@@ -1150,6 +1153,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
       case N:                               \
         yyformat = S;                       \
       break
+    default: /* Avoid compiler warnings. */
       YYCASE_(0, YY_("syntax error"));
       YYCASE_(1, YY_("syntax error, unexpected %s"));
       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -1161,9 +1165,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
 
   {
     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+      yysize = yysize1;
+    else
       return 2;
-    yysize = yysize1;
   }
 
   if (*yymsg_alloc < yysize)
@@ -1294,23 +1299,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
   yychar = YYEMPTY; /* Cause a token to be read.  */
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yynewstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  *yyssp = (yytype_int16) yystate;
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
         /* Give user a chance to reallocate the stack.  Use copies of
            these so that the &'s don't force the real ones into
@@ -1326,14 +1339,10 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
                     &yyss1, yysize * sizeof (*yyssp),
                     &yyvs1, yysize * sizeof (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
         goto yyexhaustedlab;
@@ -1349,22 +1358,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
           goto yyexhaustedlab;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-#  undef YYSTACK_RELOCATE
+# undef YYSTACK_RELOCATE
         if (yyss1 != yyssa)
           YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+                  (unsigned long) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
     }
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
@@ -1373,11 +1382,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
@@ -1450,7 +1459,7 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
@@ -1471,239 +1480,239 @@ yyreduce:
   switch (yyn)
     {
         case 4:
-#line 188 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 188 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { strcpy((yyval.str),(yyvsp[0].str)); }
-#line 1477 "asn1-parse.c" /* yacc.c:1646  */
+#line 1486 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 5:
-#line 189 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 189 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { strcpy((yyval.str),(yyvsp[0].str)); }
-#line 1483 "asn1-parse.c" /* yacc.c:1646  */
+#line 1492 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 6:
-#line 193 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 193 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                   strcpy((yyval.str),"-");
                   strcat((yyval.str),(yyvsp[0].str));
                 }
-#line 1492 "asn1-parse.c" /* yacc.c:1646  */
+#line 1501 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 7:
-#line 199 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 199 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { strcpy((yyval.str),(yyvsp[0].str)); }
-#line 1498 "asn1-parse.c" /* yacc.c:1646  */
+#line 1507 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 8:
-#line 200 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 200 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { strcpy((yyval.str),(yyvsp[0].str)); }
-#line 1504 "asn1-parse.c" /* yacc.c:1646  */
+#line 1513 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 9:
-#line 203 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 203 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {strcpy((yyval.str),(yyvsp[0].str));}
-#line 1510 "asn1-parse.c" /* yacc.c:1646  */
+#line 1519 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 10:
-#line 204 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 204 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {strcpy((yyval.str),(yyvsp[0].str));}
-#line 1516 "asn1-parse.c" /* yacc.c:1646  */
+#line 1525 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 11:
-#line 207 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 207 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {strcpy((yyval.str),(yyvsp[0].str));}
-#line 1522 "asn1-parse.c" /* yacc.c:1646  */
+#line 1531 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 12:
-#line 208 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 208 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {strcpy((yyval.str),(yyvsp[0].str));}
-#line 1528 "asn1-parse.c" /* yacc.c:1646  */
+#line 1537 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 13:
-#line 212 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 212 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                           (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                           set_str_value ((yyval.node), (yyvsp[-1].str));
                         }
-#line 1537 "asn1-parse.c" /* yacc.c:1646  */
+#line 1546 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 14:
-#line 217 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 217 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                           (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                           set_name ((yyval.node), (yyvsp[-3].str));
                           set_str_value ((yyval.node), (yyvsp[-1].str));
                         }
-#line 1547 "asn1-parse.c" /* yacc.c:1646  */
+#line 1556 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 15:
-#line 224 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 224 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node)=(yyvsp[0].node); }
-#line 1553 "asn1-parse.c" /* yacc.c:1646  */
+#line 1562 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 16:
-#line 226 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 226 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                     (yyval.node) = (yyvsp[-2].node);
                     append_right ((yyvsp[-2].node), (yyvsp[0].node));
                   }
-#line 1562 "asn1-parse.c" /* yacc.c:1646  */
+#line 1571 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 17:
-#line 251 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 251 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                    set_str_value ((yyval.node), (yyvsp[0].str));
                  }
-#line 1571 "asn1-parse.c" /* yacc.c:1646  */
+#line 1580 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 18:
-#line 256 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 256 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                    set_name ((yyval.node), (yyvsp[-3].str));
                    set_str_value ((yyval.node), (yyvsp[-1].str));
                  }
-#line 1581 "asn1-parse.c" /* yacc.c:1646  */
+#line 1590 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 19:
-#line 264 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 264 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node)=(yyvsp[0].node);}
-#line 1587 "asn1-parse.c" /* yacc.c:1646  */
+#line 1596 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 20:
-#line 266 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 266 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                           (yyval.node)=(yyvsp[-1].node);
                           append_right ((yyval.node), (yyvsp[0].node));
                         }
-#line 1596 "asn1-parse.c" /* yacc.c:1646  */
+#line 1605 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 21:
-#line 272 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 272 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CLASS_UNIVERSAL;   }
-#line 1602 "asn1-parse.c" /* yacc.c:1646  */
+#line 1611 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 22:
-#line 273 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 273 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CLASS_PRIVATE;     }
-#line 1608 "asn1-parse.c" /* yacc.c:1646  */
+#line 1617 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 23:
-#line 274 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 274 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CLASS_APPLICATION; }
-#line 1614 "asn1-parse.c" /* yacc.c:1646  */
+#line 1623 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 24:
-#line 278 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 278 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                   (yyval.node) = NEW_NODE (TYPE_TAG);
                   (yyval.node)->flags.class = CLASS_CONTEXT;
                   set_ulong_value ((yyval.node), (yyvsp[-1].str));
                 }
-#line 1624 "asn1-parse.c" /* yacc.c:1646  */
+#line 1633 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 25:
-#line 284 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 284 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                   (yyval.node) = NEW_NODE (TYPE_TAG);
                   (yyval.node)->flags.class = (yyvsp[-2].constant);
                   set_ulong_value ((yyval.node), (yyvsp[-1].str));
                 }
-#line 1634 "asn1-parse.c" /* yacc.c:1646  */
+#line 1643 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 26:
-#line 292 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 292 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = (yyvsp[0].node); }
-#line 1640 "asn1-parse.c" /* yacc.c:1646  */
+#line 1649 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 27:
-#line 294 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 294 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
            (yyval.node) = (yyvsp[-1].node);
            (yyval.node)->flags.explicit = 1;
          }
-#line 1649 "asn1-parse.c" /* yacc.c:1646  */
+#line 1658 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 28:
-#line 299 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 299 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
            (yyval.node) = (yyvsp[-1].node);
            (yyval.node)->flags.implicit = 1;
          }
-#line 1658 "asn1-parse.c" /* yacc.c:1646  */
+#line 1667 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 29:
-#line 306 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 306 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_DEFAULT);
                  set_str_value ((yyval.node), (yyvsp[0].str));
                }
-#line 1667 "asn1-parse.c" /* yacc.c:1646  */
+#line 1676 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 30:
-#line 311 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 311 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_DEFAULT);
                  (yyval.node)->flags.is_true = 1;
                }
-#line 1676 "asn1-parse.c" /* yacc.c:1646  */
+#line 1685 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 31:
-#line 316 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 316 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_DEFAULT);
                  (yyval.node)->flags.is_false = 1;
                }
-#line 1685 "asn1-parse.c" /* yacc.c:1646  */
+#line 1694 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 32:
-#line 323 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 323 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_INTEGER);
                }
-#line 1693 "asn1-parse.c" /* yacc.c:1646  */
+#line 1702 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 33:
-#line 327 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 327 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_INTEGER);
                  (yyval.node)->flags.has_list = 1;
                  set_down ((yyval.node), (yyvsp[-1].node));
                }
-#line 1703 "asn1-parse.c" /* yacc.c:1646  */
+#line 1712 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 34:
-#line 333 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 333 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  (yyval.node) = NEW_NODE (TYPE_INTEGER);
                  (yyval.node)->flags.has_min_max = 1;
@@ -1712,367 +1721,367 @@ yyreduce:
                  set_str_value ((yyval.node)->down, (yyvsp[-1].str));
                  set_name ((yyval.node)->down, (yyvsp[-4].str));
                }
-#line 1716 "asn1-parse.c" /* yacc.c:1646  */
+#line 1725 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 35:
-#line 344 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 344 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                 (yyval.node) = NEW_NODE (TYPE_BOOLEAN);
               }
-#line 1724 "asn1-parse.c" /* yacc.c:1646  */
+#line 1733 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 36:
-#line 350 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 350 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
             (yyval.node) = NEW_NODE (TYPE_UTC_TIME);
           }
-#line 1732 "asn1-parse.c" /* yacc.c:1646  */
+#line 1741 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 37:
-#line 354 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 354 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
             (yyval.node) = NEW_NODE (TYPE_GENERALIZED_TIME);
           }
-#line 1740 "asn1-parse.c" /* yacc.c:1646  */
+#line 1749 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 38:
-#line 360 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 360 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SIZE);
                (yyval.node)->flags.one_param = 1;
                set_str_value ((yyval.node), (yyvsp[-1].str));
              }
-#line 1750 "asn1-parse.c" /* yacc.c:1646  */
+#line 1759 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 39:
-#line 366 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 366 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SIZE);
                (yyval.node)->flags.has_min_max = 1;
                set_str_value ((yyval.node), (yyvsp[-4].str));
                set_name ((yyval.node), (yyvsp[-1].str));
              }
-#line 1761 "asn1-parse.c" /* yacc.c:1646  */
+#line 1770 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 40:
-#line 375 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 375 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node)=(yyvsp[0].node);
              }
-#line 1769 "asn1-parse.c" /* yacc.c:1646  */
+#line 1778 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 41:
-#line 379 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 379 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node)=(yyvsp[-1].node);
              }
-#line 1777 "asn1-parse.c" /* yacc.c:1646  */
+#line 1786 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 42:
-#line 385 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 385 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_OCTET_STRING);
                      }
-#line 1785 "asn1-parse.c" /* yacc.c:1646  */
+#line 1794 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 43:
-#line 389 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 389 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_OCTET_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1795 "asn1-parse.c" /* yacc.c:1646  */
+#line 1804 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 44:
-#line 396 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 396 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_UTF8_STRING); }
-#line 1801 "asn1-parse.c" /* yacc.c:1646  */
+#line 1810 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 45:
-#line 398 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 398 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_UTF8_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1811 "asn1-parse.c" /* yacc.c:1646  */
+#line 1820 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 46:
-#line 404 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 404 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_NUMERIC_STRING); }
-#line 1817 "asn1-parse.c" /* yacc.c:1646  */
+#line 1826 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 47:
-#line 406 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 406 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_NUMERIC_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1827 "asn1-parse.c" /* yacc.c:1646  */
+#line 1836 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 48:
-#line 413 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 413 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_PRINTABLE_STRING); }
-#line 1833 "asn1-parse.c" /* yacc.c:1646  */
+#line 1842 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 49:
-#line 415 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 415 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                           (yyval.node) = NEW_NODE (TYPE_PRINTABLE_STRING);
                           (yyval.node)->flags.has_size = 1;
                           set_down ((yyval.node),(yyvsp[0].node));
                         }
-#line 1843 "asn1-parse.c" /* yacc.c:1646  */
+#line 1852 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 50:
-#line 422 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 422 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_TELETEX_STRING); }
-#line 1849 "asn1-parse.c" /* yacc.c:1646  */
+#line 1858 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 51:
-#line 424 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 424 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_TELETEX_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1859 "asn1-parse.c" /* yacc.c:1646  */
+#line 1868 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 52:
-#line 430 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 430 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_IA5_STRING); }
-#line 1865 "asn1-parse.c" /* yacc.c:1646  */
+#line 1874 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 53:
-#line 432 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 432 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_IA5_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1875 "asn1-parse.c" /* yacc.c:1646  */
+#line 1884 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 54:
-#line 439 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 439 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_UNIVERSAL_STRING); }
-#line 1881 "asn1-parse.c" /* yacc.c:1646  */
+#line 1890 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 55:
-#line 441 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 441 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                            (yyval.node) = NEW_NODE (TYPE_UNIVERSAL_STRING);
                            (yyval.node)->flags.has_size = 1;
                            set_down ((yyval.node),(yyvsp[0].node));
                          }
-#line 1891 "asn1-parse.c" /* yacc.c:1646  */
+#line 1900 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 56:
-#line 447 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 447 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = NEW_NODE (TYPE_BMP_STRING); }
-#line 1897 "asn1-parse.c" /* yacc.c:1646  */
+#line 1906 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 57:
-#line 449 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 449 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                        (yyval.node) = NEW_NODE (TYPE_BMP_STRING);
                        (yyval.node)->flags.has_size = 1;
                        set_down ((yyval.node),(yyvsp[0].node));
                      }
-#line 1907 "asn1-parse.c" /* yacc.c:1646  */
+#line 1916 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 65:
-#line 470 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 470 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_CONSTANT);
                    set_name ((yyval.node), (yyvsp[-3].str));
                    set_str_value ((yyval.node), (yyvsp[-1].str));
                  }
-#line 1917 "asn1-parse.c" /* yacc.c:1646  */
+#line 1926 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 66:
-#line 478 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 478 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                         (yyval.node)=(yyvsp[0].node);
                       }
-#line 1925 "asn1-parse.c" /* yacc.c:1646  */
+#line 1934 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 67:
-#line 482 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 482 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                         (yyval.node)=(yyvsp[-2].node);
                         append_right ((yyval.node), (yyvsp[0].node));
                       }
-#line 1934 "asn1-parse.c" /* yacc.c:1646  */
+#line 1943 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 68:
-#line 489 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 489 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_BIT_STRING);
                    }
-#line 1942 "asn1-parse.c" /* yacc.c:1646  */
+#line 1951 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 69:
-#line 493 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 493 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_BIT_STRING);
                      (yyval.node)->flags.has_list = 1;
                      set_down ((yyval.node), (yyvsp[-1].node));
                    }
-#line 1952 "asn1-parse.c" /* yacc.c:1646  */
+#line 1961 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 70:
-#line 501 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 501 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_ENUMERATED);
                      (yyval.node)->flags.has_list = 1;
                      set_down ((yyval.node), (yyvsp[-1].node));
                    }
-#line 1962 "asn1-parse.c" /* yacc.c:1646  */
+#line 1971 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 71:
-#line 509 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 509 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_OBJECT_ID);
                    }
-#line 1970 "asn1-parse.c" /* yacc.c:1646  */
+#line 1979 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 72:
-#line 515 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 515 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                       (yyval.node) = NEW_NODE (TYPE_IDENTIFIER);
                       set_str_value ((yyval.node), (yyvsp[0].str));
                     }
-#line 1979 "asn1-parse.c" /* yacc.c:1646  */
+#line 1988 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 73:
-#line 520 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 520 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                       (yyval.node) = NEW_NODE (TYPE_IDENTIFIER);
                       (yyval.node)->flags.has_size = 1;
                       set_str_value ((yyval.node), (yyvsp[-1].str));
                       set_down ((yyval.node), (yyvsp[0].node));
                     }
-#line 1990 "asn1-parse.c" /* yacc.c:1646  */
+#line 1999 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 74:
-#line 526 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 526 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 1996 "asn1-parse.c" /* yacc.c:1646  */
+#line 2005 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 75:
-#line 527 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 527 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2002 "asn1-parse.c" /* yacc.c:1646  */
+#line 2011 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 76:
-#line 528 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 528 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2008 "asn1-parse.c" /* yacc.c:1646  */
+#line 2017 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 77:
-#line 529 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 529 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2014 "asn1-parse.c" /* yacc.c:1646  */
+#line 2023 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 79:
-#line 531 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 531 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2020 "asn1-parse.c" /* yacc.c:1646  */
+#line 2029 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 80:
-#line 532 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 532 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2026 "asn1-parse.c" /* yacc.c:1646  */
+#line 2035 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 81:
-#line 533 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 533 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2032 "asn1-parse.c" /* yacc.c:1646  */
+#line 2041 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 82:
-#line 534 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 534 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2038 "asn1-parse.c" /* yacc.c:1646  */
+#line 2047 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 83:
-#line 535 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 535 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2044 "asn1-parse.c" /* yacc.c:1646  */
+#line 2053 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 84:
-#line 536 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 536 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2050 "asn1-parse.c" /* yacc.c:1646  */
+#line 2059 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 85:
-#line 537 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 537 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {(yyval.node)=(yyvsp[0].node);}
-#line 2056 "asn1-parse.c" /* yacc.c:1646  */
+#line 2065 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 86:
-#line 539 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 539 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                       (yyval.node) = NEW_NODE(TYPE_NULL);
                     }
-#line 2064 "asn1-parse.c" /* yacc.c:1646  */
+#line 2073 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 87:
-#line 545 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 545 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                              (yyval.node) = (yyvsp[0].node);
                            }
-#line 2072 "asn1-parse.c" /* yacc.c:1646  */
+#line 2081 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 88:
-#line 549 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 549 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
 /*                               $2->flags.has_tag = 1; */
 /*                               $$ = $2; */
@@ -2081,138 +2090,138 @@ yyreduce:
                              (yyval.node) = (yyvsp[-1].node);
                              set_down ((yyval.node), (yyvsp[0].node));
                            }
-#line 2085 "asn1-parse.c" /* yacc.c:1646  */
+#line 2094 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 89:
-#line 560 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 560 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                                    (yyval.node) = (yyvsp[0].node);
                                  }
-#line 2093 "asn1-parse.c" /* yacc.c:1646  */
+#line 2102 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 90:
-#line 564 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 564 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                                    (yyvsp[-1].node)->flags.has_default = 1;
                                    (yyval.node) = (yyvsp[-1].node);
                                    set_right ((yyvsp[0].node), (yyval.node)->down);
                                    set_down ((yyval.node), (yyvsp[0].node));
                                  }
-#line 2104 "asn1-parse.c" /* yacc.c:1646  */
+#line 2113 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 91:
-#line 571 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 571 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                                    (yyvsp[-1].node)->flags.is_optional = 1;
                                    (yyval.node) = (yyvsp[-1].node);
                                  }
-#line 2113 "asn1-parse.c" /* yacc.c:1646  */
+#line 2122 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 92:
-#line 578 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 578 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  set_name ((yyvsp[0].node), (yyvsp[-1].str));
                  (yyval.node) = (yyvsp[0].node);
                }
-#line 2122 "asn1-parse.c" /* yacc.c:1646  */
+#line 2131 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 93:
-#line 585 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 585 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node)=(yyvsp[0].node); }
-#line 2128 "asn1-parse.c" /* yacc.c:1646  */
+#line 2137 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 94:
-#line 587 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 587 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                       (yyval.node)=(yyvsp[-2].node);
                       append_right ((yyval.node), (yyvsp[0].node));
                     }
-#line 2137 "asn1-parse.c" /* yacc.c:1646  */
+#line 2146 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 95:
-#line 594 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 594 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_SEQUENCE);
                    set_down ((yyval.node), (yyvsp[-1].node));
                  }
-#line 2146 "asn1-parse.c" /* yacc.c:1646  */
+#line 2155 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 96:
-#line 599 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 599 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_SEQUENCE_OF);
                    set_down ((yyval.node), (yyvsp[0].node));
                  }
-#line 2155 "asn1-parse.c" /* yacc.c:1646  */
+#line 2164 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 97:
-#line 604 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 604 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_SEQUENCE_OF);
                    (yyval.node)->flags.has_size = 1;
                    set_right ((yyvsp[-2].node),(yyvsp[0].node));
                    set_down ((yyval.node),(yyvsp[-2].node));
                  }
-#line 2166 "asn1-parse.c" /* yacc.c:1646  */
+#line 2175 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 98:
-#line 613 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 613 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SET);
                set_down ((yyval.node), (yyvsp[-1].node));
              }
-#line 2175 "asn1-parse.c" /* yacc.c:1646  */
+#line 2184 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 99:
-#line 618 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 618 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SET_OF);
                set_down ((yyval.node), (yyvsp[0].node));
              }
-#line 2184 "asn1-parse.c" /* yacc.c:1646  */
+#line 2193 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 100:
-#line 623 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 623 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_SET_OF);
                (yyval.node)->flags.has_size = 1;
                set_right ((yyvsp[-2].node), (yyvsp[0].node));
                set_down ((yyval.node), (yyvsp[-2].node));
              }
-#line 2195 "asn1-parse.c" /* yacc.c:1646  */
+#line 2204 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 101:
-#line 632 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 632 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                   (yyval.node) = NEW_NODE (TYPE_CHOICE);
                   set_down ((yyval.node), (yyvsp[-1].node));
                 }
-#line 2204 "asn1-parse.c" /* yacc.c:1646  */
+#line 2213 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 102:
-#line 639 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 639 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                (yyval.node) = NEW_NODE (TYPE_ANY);
              }
-#line 2212 "asn1-parse.c" /* yacc.c:1646  */
+#line 2221 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 103:
-#line 643 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 643 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                AsnNode node;
 
@@ -2222,31 +2231,31 @@ yyreduce:
                set_name (node, (yyvsp[0].str));
                set_down((yyval.node), node);
              }
-#line 2226 "asn1-parse.c" /* yacc.c:1646  */
+#line 2235 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 104:
-#line 655 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 655 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                set_name ((yyvsp[0].node), (yyvsp[-2].str));
                (yyval.node) = (yyvsp[0].node);
              }
-#line 2235 "asn1-parse.c" /* yacc.c:1646  */
+#line 2244 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 105:
-#line 662 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 662 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_OBJECT_ID);
                    (yyval.node)->flags.assignment = 1;
                    set_name ((yyval.node), (yyvsp[-6].str));
                    set_down ((yyval.node), (yyvsp[-1].node));
                  }
-#line 2246 "asn1-parse.c" /* yacc.c:1646  */
+#line 2255 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 106:
-#line 669 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 669 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_OBJECT_ID);
                    (yyval.node)->flags.assignment = 1;
@@ -2255,77 +2264,77 @@ yyreduce:
                    set_str_value ((yyval.node), (yyvsp[-4].str));
                    set_down ((yyval.node), (yyvsp[-1].node));
                  }
-#line 2259 "asn1-parse.c" /* yacc.c:1646  */
+#line 2268 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 107:
-#line 678 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 678 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                    (yyval.node) = NEW_NODE (TYPE_INTEGER);
                    (yyval.node)->flags.assignment = 1;
                    set_name ((yyval.node), (yyvsp[-3].str));
                    set_str_value ((yyval.node), (yyvsp[0].str));
                  }
-#line 2270 "asn1-parse.c" /* yacc.c:1646  */
+#line 2279 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 108:
-#line 686 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 686 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = (yyvsp[0].node); }
-#line 2276 "asn1-parse.c" /* yacc.c:1646  */
+#line 2285 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 109:
-#line 687 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 687 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = (yyvsp[0].node); }
-#line 2282 "asn1-parse.c" /* yacc.c:1646  */
+#line 2291 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 110:
-#line 691 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 691 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node) = (yyvsp[0].node); }
-#line 2288 "asn1-parse.c" /* yacc.c:1646  */
+#line 2297 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 111:
-#line 693 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 693 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                          (yyval.node) = (yyvsp[-1].node);
                          append_right ((yyval.node), (yyvsp[0].node));
                        }
-#line 2297 "asn1-parse.c" /* yacc.c:1646  */
+#line 2306 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 112:
-#line 700 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 700 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                      (yyval.node) = NEW_NODE (TYPE_OBJECT_ID);
                      set_down ((yyval.node), (yyvsp[-1].node));
                      set_name ((yyval.node), (yyvsp[-3].str));
                    }
-#line 2307 "asn1-parse.c" /* yacc.c:1646  */
+#line 2316 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 113:
-#line 708 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 708 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.node)=NULL;}
-#line 2313 "asn1-parse.c" /* yacc.c:1646  */
+#line 2322 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 114:
-#line 724 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 724 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CONST_EXPLICIT; }
-#line 2319 "asn1-parse.c" /* yacc.c:1646  */
+#line 2328 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 115:
-#line 725 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 725 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     { (yyval.constant) = CONST_IMPLICIT; }
-#line 2325 "asn1-parse.c" /* yacc.c:1646  */
+#line 2334 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
   case 116:
-#line 731 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1646  */
+#line 731 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1652  */
     {
                  AsnNode node;
 
@@ -2357,11 +2366,11 @@ yyreduce:
                  PARSECTL->result_parse = _ksba_asn_check_identifier((yyval.node));
                  PARSECTL->parse_tree=(yyval.node);
                }
-#line 2361 "asn1-parse.c" /* yacc.c:1646  */
+#line 2370 "asn1-parse.c" /* yacc.c:1652  */
     break;
 
 
-#line 2365 "asn1-parse.c" /* yacc.c:1646  */
+#line 2374 "asn1-parse.c" /* yacc.c:1652  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2386,14 +2395,13 @@ yyreduce:
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -2476,12 +2484,10 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
   /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
@@ -2543,6 +2549,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -2550,6 +2557,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
+
 #if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
@@ -2560,6 +2568,10 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -2589,7 +2601,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 764 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1906  */
+#line 764 "/home/wk/s/libksba/src/asn1-parse.y" /* yacc.c:1918  */
 
 
 \f
index 6a563bf..7f63311 100644 (file)
--- a/src/cms.c
+++ b/src/cms.c
@@ -1482,7 +1482,7 @@ ksba_cms_get_enc_val (ksba_cms_t cms, int idx)
       /* gpgrt_log_debug ("%s: encryptedKey:\n", __func__); */
       /* dbg_print_sexp (string); */
     }
-  else if (!strcmp (n->name, "kekri"))
+  else if (!strcmp (root->name, "kekri"))
     return NULL; /*GPG_ERR_UNSUPPORTED_CMS_OBJ*/
   else
     return NULL; /*GPG_ERR_INV_CMS_OBJ*/
index 011d9be..b97c3f1 100644 (file)
@@ -359,6 +359,89 @@ static const struct
   };
 
 
+/* Table to map well known curve parameters to their name.  */
+static const struct
+{
+  const char *name;
+  unsigned int derlen;
+  const unsigned char *der;
+} ecdomainparm_to_name[] =
+  {
+    { "brainpoolP256r1", 227,
+      "\x30\x81\xe0\x02\x01\x01\x30\x2c\x06\x07\x2a\x86\x48\xce\x3d\x01"
+      "\x01\x02\x21\x00\xa9\xfb\x57\xdb\xa1\xee\xa9\xbc\x3e\x66\x0a\x90"
+      "\x9d\x83\x8d\x72\x6e\x3b\xf6\x23\xd5\x26\x20\x28\x20\x13\x48\x1d"
+      "\x1f\x6e\x53\x77\x30\x44\x04\x20\x7d\x5a\x09\x75\xfc\x2c\x30\x57"
+      "\xee\xf6\x75\x30\x41\x7a\xff\xe7\xfb\x80\x55\xc1\x26\xdc\x5c\x6c"
+      "\xe9\x4a\x4b\x44\xf3\x30\xb5\xd9\x04\x20\x26\xdc\x5c\x6c\xe9\x4a"
+      "\x4b\x44\xf3\x30\xb5\xd9\xbb\xd7\x7c\xbf\x95\x84\x16\x29\x5c\xf7"
+      "\xe1\xce\x6b\xcc\xdc\x18\xff\x8c\x07\xb6\x04\x41\x04\x8b\xd2\xae"
+      "\xb9\xcb\x7e\x57\xcb\x2c\x4b\x48\x2f\xfc\x81\xb7\xaf\xb9\xde\x27"
+      "\xe1\xe3\xbd\x23\xc2\x3a\x44\x53\xbd\x9a\xce\x32\x62\x54\x7e\xf8"
+      "\x35\xc3\xda\xc4\xfd\x97\xf8\x46\x1a\x14\x61\x1d\xc9\xc2\x77\x45"
+      "\x13\x2d\xed\x8e\x54\x5c\x1d\x54\xc7\x2f\x04\x69\x97\x02\x21\x00"
+      "\xa9\xfb\x57\xdb\xa1\xee\xa9\xbc\x3e\x66\x0a\x90\x9d\x83\x8d\x71"
+      "\x8c\x39\x7a\xa3\xb5\x61\xa6\xf7\x90\x1e\x0e\x82\x97\x48\x56\xa7"
+      "\x02\x01\x01"
+    },
+
+    { "brainpoolP384r1", 324,
+      "\x30\x82\x01\x40\x02\x01\x01\x30\x3c\x06\x07\x2a\x86\x48\xce\x3d"
+      "\x01\x01\x02\x31\x00\x8c\xb9\x1e\x82\xa3\x38\x6d\x28\x0f\x5d\x6f"
+      "\x7e\x50\xe6\x41\xdf\x15\x2f\x71\x09\xed\x54\x56\xb4\x12\xb1\xda"
+      "\x19\x7f\xb7\x11\x23\xac\xd3\xa7\x29\x90\x1d\x1a\x71\x87\x47\x00"
+      "\x13\x31\x07\xec\x53\x30\x64\x04\x30\x7b\xc3\x82\xc6\x3d\x8c\x15"
+      "\x0c\x3c\x72\x08\x0a\xce\x05\xaf\xa0\xc2\xbe\xa2\x8e\x4f\xb2\x27"
+      "\x87\x13\x91\x65\xef\xba\x91\xf9\x0f\x8a\xa5\x81\x4a\x50\x3a\xd4"
+      "\xeb\x04\xa8\xc7\xdd\x22\xce\x28\x26\x04\x30\x04\xa8\xc7\xdd\x22"
+      "\xce\x28\x26\x8b\x39\xb5\x54\x16\xf0\x44\x7c\x2f\xb7\x7d\xe1\x07"
+      "\xdc\xd2\xa6\x2e\x88\x0e\xa5\x3e\xeb\x62\xd5\x7c\xb4\x39\x02\x95"
+      "\xdb\xc9\x94\x3a\xb7\x86\x96\xfa\x50\x4c\x11\x04\x61\x04\x1d\x1c"
+      "\x64\xf0\x68\xcf\x45\xff\xa2\xa6\x3a\x81\xb7\xc1\x3f\x6b\x88\x47"
+      "\xa3\xe7\x7e\xf1\x4f\xe3\xdb\x7f\xca\xfe\x0c\xbd\x10\xe8\xe8\x26"
+      "\xe0\x34\x36\xd6\x46\xaa\xef\x87\xb2\xe2\x47\xd4\xaf\x1e\x8a\xbe"
+      "\x1d\x75\x20\xf9\xc2\xa4\x5c\xb1\xeb\x8e\x95\xcf\xd5\x52\x62\xb7"
+      "\x0b\x29\xfe\xec\x58\x64\xe1\x9c\x05\x4f\xf9\x91\x29\x28\x0e\x46"
+      "\x46\x21\x77\x91\x81\x11\x42\x82\x03\x41\x26\x3c\x53\x15\x02\x31"
+      "\x00\x8c\xb9\x1e\x82\xa3\x38\x6d\x28\x0f\x5d\x6f\x7e\x50\xe6\x41"
+      "\xdf\x15\x2f\x71\x09\xed\x54\x56\xb3\x1f\x16\x6e\x6c\xac\x04\x25"
+      "\xa7\xcf\x3a\xb6\xaf\x6b\x7f\xc3\x10\x3b\x88\x32\x02\xe9\x04\x65"
+      "\x65\x02\x01\x01"
+    },
+
+    { "brainpoolP512r1", 422,
+      "\x30\x82\x01\xa2\x02\x01\x01\x30\x4c\x06\x07\x2a\x86\x48\xce\x3d"
+      "\x01\x01\x02\x41\x00\xaa\xdd\x9d\xb8\xdb\xe9\xc4\x8b\x3f\xd4\xe6"
+      "\xae\x33\xc9\xfc\x07\xcb\x30\x8d\xb3\xb3\xc9\xd2\x0e\xd6\x63\x9c"
+      "\xca\x70\x33\x08\x71\x7d\x4d\x9b\x00\x9b\xc6\x68\x42\xae\xcd\xa1"
+      "\x2a\xe6\xa3\x80\xe6\x28\x81\xff\x2f\x2d\x82\xc6\x85\x28\xaa\x60"
+      "\x56\x58\x3a\x48\xf3\x30\x81\x84\x04\x40\x78\x30\xa3\x31\x8b\x60"
+      "\x3b\x89\xe2\x32\x71\x45\xac\x23\x4c\xc5\x94\xcb\xdd\x8d\x3d\xf9"
+      "\x16\x10\xa8\x34\x41\xca\xea\x98\x63\xbc\x2d\xed\x5d\x5a\xa8\x25"
+      "\x3a\xa1\x0a\x2e\xf1\xc9\x8b\x9a\xc8\xb5\x7f\x11\x17\xa7\x2b\xf2"
+      "\xc7\xb9\xe7\xc1\xac\x4d\x77\xfc\x94\xca\x04\x40\x3d\xf9\x16\x10"
+      "\xa8\x34\x41\xca\xea\x98\x63\xbc\x2d\xed\x5d\x5a\xa8\x25\x3a\xa1"
+      "\x0a\x2e\xf1\xc9\x8b\x9a\xc8\xb5\x7f\x11\x17\xa7\x2b\xf2\xc7\xb9"
+      "\xe7\xc1\xac\x4d\x77\xfc\x94\xca\xdc\x08\x3e\x67\x98\x40\x50\xb7"
+      "\x5e\xba\xe5\xdd\x28\x09\xbd\x63\x80\x16\xf7\x23\x04\x81\x81\x04"
+      "\x81\xae\xe4\xbd\xd8\x2e\xd9\x64\x5a\x21\x32\x2e\x9c\x4c\x6a\x93"
+      "\x85\xed\x9f\x70\xb5\xd9\x16\xc1\xb4\x3b\x62\xee\xf4\xd0\x09\x8e"
+      "\xff\x3b\x1f\x78\xe2\xd0\xd4\x8d\x50\xd1\x68\x7b\x93\xb9\x7d\x5f"
+      "\x7c\x6d\x50\x47\x40\x6a\x5e\x68\x8b\x35\x22\x09\xbc\xb9\xf8\x22"
+      "\x7d\xde\x38\x5d\x56\x63\x32\xec\xc0\xea\xbf\xa9\xcf\x78\x22\xfd"
+      "\xf2\x09\xf7\x00\x24\xa5\x7b\x1a\xa0\x00\xc5\x5b\x88\x1f\x81\x11"
+      "\xb2\xdc\xde\x49\x4a\x5f\x48\x5e\x5b\xca\x4b\xd8\x8a\x27\x63\xae"
+      "\xd1\xca\x2b\x2f\xa8\xf0\x54\x06\x78\xcd\x1e\x0f\x3a\xd8\x08\x92"
+      "\x02\x41\x00\xaa\xdd\x9d\xb8\xdb\xe9\xc4\x8b\x3f\xd4\xe6\xae\x33"
+      "\xc9\xfc\x07\xcb\x30\x8d\xb3\xb3\xc9\xd2\x0e\xd6\x63\x9c\xca\x70"
+      "\x33\x08\x70\x55\x3e\x5c\x41\x4c\xa9\x26\x19\x41\x86\x61\x19\x7f"
+      "\xac\x10\x47\x1d\xb1\xd3\x81\x08\x5d\xda\xdd\xb5\x87\x96\x82\x9c"
+      "\xa9\x00\x69\x02\x01\x01"
+    },
+
+    { NULL }
+  };
+
 
 #define TLV_LENGTH(prefix) do {         \
   if (!prefix ## len)                    \
@@ -679,7 +762,7 @@ _ksba_parse_algorithm_identifier2 (const unsigned char *der, size_t derlen,
 
 
 
-/* Assume that der is a buffer of length DERLEN with a DER encoded
+/* Assume that DER is a buffer of length DERLEN with a DER encoded
    ASN.1 structure like this:
 
   keyInfo ::= SEQUENCE {
@@ -699,12 +782,13 @@ _ksba_keyinfo_to_sexp (const unsigned char *der, size_t derlen,
                        ksba_sexp_t *r_string)
 {
   gpg_error_t err;
-  int c;
+  int c, i;
   size_t nread, off, len, parm_off, parm_len;
   int parm_type;
   char *parm_oid = NULL;
   int algoidx;
   int is_bitstr;
+  int got_curve = 0;
   const unsigned char *parmder = NULL;
   size_t parmderlen = 0;
   const unsigned char *ctrl;
@@ -780,6 +864,7 @@ _ksba_keyinfo_to_sexp (const unsigned char *der, size_t derlen,
       put_stringbuf_sexp (&sb, "curve");
       put_stringbuf_sexp (&sb, parm_oid);
       put_stringbuf (&sb, ")");
+      got_curve = 1;
     }
   else if (pk_algo_table[algoidx].pkalgo == PKALGO_ED25519
            || pk_algo_table[algoidx].pkalgo == PKALGO_ED448
@@ -840,6 +925,26 @@ _ksba_keyinfo_to_sexp (const unsigned char *der, size_t derlen,
             }
         }
     }
+  else if (!got_curve && parmder && parmderlen
+           && pk_algo_table[algoidx].pkalgo == PKALGO_ECC)
+    {
+      /* This is ecPublicKey but has no named curve.  This is not
+       * allowed for PKIX but we try to figure the curve name out for
+       * some well known curves by a simple parameter match.  */
+      for (i=0; ecdomainparm_to_name[i].name; i++)
+        if (ecdomainparm_to_name[i].derlen == parmderlen
+            && !memcmp (ecdomainparm_to_name[i].der, parmder, parmderlen))
+          {
+            put_stringbuf (&sb, "(");
+            put_stringbuf_sexp (&sb, "curve");
+            put_stringbuf_sexp (&sb, ecdomainparm_to_name[i].name);
+            put_stringbuf (&sb, ")");
+            got_curve = 1;
+            break;
+          }
+      /* if (!got_curve) */
+      /*   gpgrt_log_printhex (parmder, parmderlen, "ECDomainParm:"); */
+    }
 
 
   /* FIXME: We don't release the stringbuf in case of error
index 18ee93e..3b45a85 100644 (file)
@@ -1,6 +1,6 @@
 /* ksba.h - X.509 library used by GnuPG
  * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2010, 2011
- *               2012, 2013, 2104, 2015, 2019, 2020 g10 Code GmbH
+ *               2012, 2013, 2104, 2015, 2019, 2020, 2021 g10 Code GmbH
  *
  * This file is part of KSBA.
  *
@@ -46,11 +46,11 @@ extern "C" {
 /* The version of this header should match the one of the library.  Do
  * not use this symbol in your application; use assuan_check_version
  * instead.  */
-#define KSBA_VERSION "1.5.0"
+#define KSBA_VERSION "1.5.1"
 
 /* The version number of this header.  It may be used to handle minor
  * API incompatibilities.  */
-#define KSBA_VERSION_NUMBER 0x010500
+#define KSBA_VERSION_NUMBER 0x010501
 
 
 
index 54f0a1c..d6b8660 100644 (file)
@@ -1,6 +1,6 @@
 /* ksba.h - X.509 library used by GnuPG
  * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2010, 2011
- *               2012, 2013, 2104, 2015, 2019, 2020 g10 Code GmbH
+ *               2012, 2013, 2104, 2015, 2019, 2020, 2021 g10 Code GmbH
  *
  * This file is part of KSBA.
  *
index 9f4289a..a744808 100644 (file)
@@ -108,7 +108,7 @@ cright_blurb (void)
   static const char blurb[] =
     "\n\n"
     "This is Libksba " PACKAGE_VERSION " - An X.509 and CMS Library\n"
-    "Copyright 2001-2006,2010-2015,2018-2020 g10 Code GmbH\n"
+    "Copyright 2001-2006,2010-2015,2018-2021 g10 Code GmbH\n"
     "\n"
     "SPDX-License-Identifier: LGPL-3.0-or-later OR GPL-2.0-or-later\n"
     "(" BUILD_REVISION " " BUILD_TIMESTAMP ")\n"
index a4c72c7..2fe39a2 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -762,7 +762,8 @@ all-am: Makefile $(PROGRAMS) $(HEADERS)
 installdirs:
 install: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
+install-exec: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-am
 install-data: install-data-am
 uninstall: uninstall-am
 
@@ -880,7 +881,8 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: all check check-am install install-am install-strip
+.MAKE: all check check-am install install-am install-exec \
+       install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
        check-am clean clean-generic clean-libtool \