diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..e69de29
diff --git a/COPYING b/COPYING
new file mode 120000
index 0000000..6168a39
--- /dev/null
+++ b/COPYING
@@ -0,0 +1 @@
+/usr/share/automake-1.11/COPYING
\ No newline at end of file
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..e69de29
diff --git a/INSTALL b/INSTALL
new file mode 120000
index 0000000..cbd1c80
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1 @@
+/usr/share/automake-1.11/INSTALL
\ No newline at end of file
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..e69de29
diff --git a/README b/README
new file mode 100644
index 0000000..e69de29
diff --git a/bootstrap.sh b/bootstrap.sh
new file mode 100755
index 0000000..fe5d56f
--- /dev/null
+++ b/bootstrap.sh
@@ -0,0 +1,19 @@
+#! /bin/sh
+
+## @file
+##
+## $Id: bootstrap.sh,v 1.3 2004/08/31 15:57:19 marc Exp $
+##
+## $Date: 2004/08/31 15:57:19 $
+## $Author: marc $
+##
+## @copy © Marc Wäckerlin
+## @license LGPL, see file COPYING
+##
+## $Log: bootstrap.sh,v $
+## Revision 1.3 2004/08/31 15:57:19 marc
+## added file header
+##
+
+test -f makefile && make distclean
+aclocal && libtoolize --force && automake -a && autoconf
diff --git a/configure.in b/configure.in
new file mode 100644
index 0000000..f8f95eb
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,164 @@
+# $Id: configure.in 2654 2011-06-20 10:00:54Z marc $
+AC_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR])
+AC_DEFUN([AX_DEFINE_DIR], [
+ prefix_NONE=
+ exec_prefix_NONE=
+ test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
+ test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
+dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
+dnl refers to ${prefix}. Thus we have to use `eval' twice.
+ eval ax_define_dir="\"[$]$2\""
+ eval ax_define_dir="\"$ax_define_dir\""
+ AC_SUBST($1, "$ax_define_dir")
+ AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3])
+ test "$prefix_NONE" && prefix=NONE
+ test "$exec_prefix_NONE" && exec_prefix=NONE
+])
+
+AC_INIT([README])
+SRC_DIR=src
+TST_DIR=
+DOC_DIR=doc
+
+m4_define(x_packagename, tokentool)
+m4_define(x_major, 0)
+m4_define(x_minor, 0)
+PACKAGENAME=x_packagename
+MAJOR=x_major
+MINOR=x_minor
+BUILDDATE=$(date "+%d.%m.%Y/%H.%M")
+
+if svn info . 2>&1 > /dev/null; then
+ LEAST=$(LANG= svn info $path | sed -n 's/Revision: //p')
+ break;
+else
+ LEAST=[$(pwd | sed -n 's,^.*/'${PACKAGENAME}'-'${MAJOR}'\.'${MINOR}'\.\([0-9]*\).*$,\1,p')]
+ if test -z "${LEAST}"; then
+ LEAST="ERROR CANNOT DETERMINE REVISION NUMBER from $(pwd)"
+ fi
+fi
+
+AM_INIT_AUTOMAKE($PACKAGENAME, $MAJOR.$MINOR.$LEAST, [marc.waeckerlin@tech.swisssign.com])
+
+# files to create
+AC_CONFIG_FILES([makefile ${PACKAGENAME}.spec src/version.cxx
+ src/makefile
+ src/qmake.pro src/languages.qrc
+ doc/doxyfile doc/makefile
+ src/${PACKAGENAME}.pc debian/changelog])
+
+# copy M4 to shell
+AC_SUBST(MAJOR)
+AC_SUBST(MINOR)
+AC_SUBST(LEAST)
+AC_SUBST(BUILDDATE)
+
+# libtool versioning
+LIB_MAJOR=m4_eval(x_major+x_minor)
+LIB_MINOR=${LEAST}
+LIB_LEAST=x_minor
+LIB_VERSION="${LIB_MAJOR}:${LIB_MINOR}:${LIB_LEAST}"
+AC_SUBST(LIB_VERSION)
+
+# home
+AC_SUBST(HOME)
+
+# datadir for languages
+AX_DEFINE_DIR([DATADIR], [datadir])
+#AC_SUBST(DATADIR)
+
+# macros
+README=README
+AC_SUBST_FILE(README)
+CHANGE_LOG=ChangeLog
+AC_SUBST_FILE(CHANGE_LOG)
+
+AM_CPPFLAGS="-DPACKAGEVERSION='\"${VERSION}\"' -DPACKAGENAME='\"${PACKAGENAME}\"'"
+
+# Get rid of that stupid -O2 -g opions!
+CXXFLAGS="${CXXFLAGS:-}"
+
+# languages
+AC_LANG(C++)
+
+# programs
+AC_PROG_CXX
+AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_LIBTOOL
+AC_CHECK_PROG(have_doxygen, doxygen, yes, no)
+AC_CHECK_PROG(have_dot, dot, yes, no)
+PKG_PROG_PKG_CONFIG
+
+AC_ARG_ENABLE(pedantic,
+ [AS_HELP_STRING([--enable-pedantic],
+ [enable all warnings and checks, abort on warnings])],
+ [have_pedantic="$enableval"; test "$enableval" = "yes" && \
+ AM_CXXFLAGS="${AM_CXXFLAGS:-} -pedantic-errors -Wall -W -Wfloat-equal -Wundef -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare -Wmissing-format-attribute -Wno-multichar -Wpacked -Wredundant-decls -Werror -Wshadow -Wcast-qual -Wno-ctor-dtor-privacy"])
+dnl problem in libs: -Wshadow -Wcast-qual
+dnl auto.hpp: -Wno-ctor-dtor-privacy (removed)
+AM_CONDITIONAL(PEDANTIC, test "$enableval" = "yes")
+AC_ARG_ENABLE(dot,
+ [AS_HELP_STRING([--disable-dot],
+ [disable dot graphic tools for documentation])],
+ [have_dot="$enableval"])
+test "$enableval" = "yes" && HAVE_DOT="YES" || HAVE_DOT="NO";
+AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"])
+
+MINGW32=no
+MAC=no
+case $host_os in
+ *mingw32*) MINGW32=yes;;
+ *darwin* | *rhapsody* | *macosx*) MAC=yes;;
+esac
+AM_CONDITIONAL(MINGW32, test "$MINGW32" = "yes")
+AM_CONDITIONAL(MAC, test "$MAC" = "yes")
+
+# Special Options
+AC_CHECK_PROGS([LRELEASE], [lrelease-qt4 lrelease-mac lrelease])
+test -n "$LRELEASE" || AC_MSG_ERROR([lrelease for Qt 4 not found!])
+AC_SUBST(LRELEASE)
+AC_CHECK_PROGS([LUPDATE], [lupdate-qt4 lupdate-mac lupdate])
+test -n "$LUPDATE" || AC_MSG_ERROR([lupdate for Qt 4 not found!])
+AC_SUBST(LUPDATE)
+
+# Environment Variables
+AC_ARG_VAR(LUPDATE_ARGS, [arguments for qt lupdate command, e.g. -no-obsolete])
+AC_PATH_PROG(QMAKE, [qmake qmake-qt4], [])
+AC_ARG_VAR(QMAKE, [path to qmake program])
+
+# export macros
+SRCDIR=${srcdir}
+AC_SUBST(SRCDIR)
+AC_SUBST(SRC_DIR)
+AC_SUBST(TST_DIR)
+AC_SUBST(DOC_DIR)
+AC_SUBST(HAVE_DOT)
+AC_SUBST(THREADS)
+AC_SUBST(PACKAGENAME)
+AC_SUBST(AM_CXXFLAGS)
+AC_SUBST(AM_CPPFLAGS)
+AC_SUBST(LIBS)
+
+# create output
+AC_OUTPUT
+# infos and warnings
+if test "$have_doxygen" = "no"; then
+AC_MSG_WARN([Missing program doxygen!
+ - you cannot rebuild the documentation with make doc
+ - there are precompiled derived files in the distribution]); fi
+if test "$have_dot" = "no"; then
+AC_MSG_WARN([Missing program dot!
+ - when you rebild documentation with make doc, there are no generated images
+ - there are precompiled derived files in the distribution]); fi
+if test "$have_cppunit" = "no"; then
+AC_MSG_WARN([Missing cppunit development library!
+ - you cannot check the library using "make check"
+ - everything else works perfectly]); fi
+if test "$have_pedantic" == "yes"; then
+AC_MSG_NOTICE([Pedantic compile mode enabled!
+ - all warnings for GNU g++ are enabled
+ - all warnings result in an error
+ - doxygen warnings are treated as error too]); fi
diff --git a/debian/changelog.in b/debian/changelog.in
new file mode 100644
index 0000000..27fc1c5
--- /dev/null
+++ b/debian/changelog.in
@@ -0,0 +1,5 @@
+@PACKAGE@ (@VERSION@-1) unstable; urgency=low
+
+ * see https://dev.swisssign.com/projects/tokentool for changes
+
+ -- Marc Wäckerlin (SwissSign AG) Wed, 07 Apr 2010 10:23:02 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..dd71567
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,22 @@
+Source: tokentool
+Section: unknown
+Priority: extra
+Maintainer: Marc Wäckerlin (SwissSign AG)
+Build-Depends: debhelper (>= 7), autotools-dev
+Standards-Version: 3.8.1
+Section: libs
+Homepage: https://dev.swisssign.com/projects/tokentool
+
+Package: tokentool-dev
+Section: libdevel
+Architecture: any
+Depends: tokentool (= ${binary:Version})
+Description: tokentool
+ .
+
+Package: tokentool
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: tokentool
+ .
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..8e9bd03
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,26 @@
+This package was debianized by Marc Wäckerlin (SwissSign AG) on
+Wed, 07 Apr 2010 10:23:02 +0200.
+
+It was downloaded from https://dev.swisssign.com/projects/tokentool
+
+Upstream Author(s):
+
+ Marc Wäckerlin (SwissSign AG)
+
+Copyright:
+
+ Marc Wäckerlin (SwissSign AG)
+
+License:
+
+ LGPL version 3
+
+The Debian packaging is:
+
+ Copyright (C) 2010 Marc Wäckerlin (SwissSign AG)
+
+and is licensed under the GPL version 3,
+see `/usr/share/common-licenses/GPL-3'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/debian/cron.d.ex b/debian/cron.d.ex
new file mode 100644
index 0000000..211a129
--- /dev/null
+++ b/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the init package
+#
+0 4 * * * root [ -x /usr/bin/init_maintenance ] && /usr/bin/init_maintenance
diff --git a/debian/dirs b/debian/dirs
new file mode 100644
index 0000000..e69de29
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..50bd824
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1,2 @@
+NEWS
+README
diff --git a/debian/emacsen-install.ex b/debian/emacsen-install.ex
new file mode 100644
index 0000000..270ae54
--- /dev/null
+++ b/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/init
+
+# Written by Jim Van Zandt , borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# and octave by Dirk Eddelbuettel .
+
+FLAVOR=$1
+PACKAGE=init
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/debian/emacsen-remove.ex b/debian/emacsen-remove.ex
new file mode 100644
index 0000000..53656c9
--- /dev/null
+++ b/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/init
+
+FLAVOR=$1
+PACKAGE=init
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/init.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/debian/emacsen-startup.ex b/debian/emacsen-startup.ex
new file mode 100644
index 0000000..58c1fae
--- /dev/null
+++ b/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50init.el
+;; for the Debian init package
+;;
+;; Originally contributed by Nils Naumann
+;; Modified by Dirk Eddelbuettel
+;; Adapted for dh-make by Jim Van Zandt
+
+;; The init package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/init")))
+;; If package-dir does not exist, the init package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'init-mode "init-mode"
+ "Major mode for editing init files." t)
+ (add-to-list 'auto-mode-alist '("\\.init$" . init-mode))))
+
diff --git a/debian/manpage.1.ex b/debian/manpage.1.ex
new file mode 100644
index 0000000..a74da1f
--- /dev/null
+++ b/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH INIT SECTION "April 8, 2010"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+init \- program to do something
+.SH SYNOPSIS
+.B init
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B init
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB\fP and
+.\" \fI\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBinit\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+init was written by .
+.PP
+This manual page was written by Marc Wäckerlin (SwissSign AG) ,
+for the Debian project (and may be used by others).
diff --git a/debian/manpage.sgml.ex b/debian/manpage.sgml.ex
new file mode 100644
index 0000000..b7ee501
--- /dev/null
+++ b/debian/manpage.sgml.ex
@@ -0,0 +1,154 @@
+ manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+
+ FIRSTNAME">
+ SURNAME">
+
+ April 8, 2010">
+
+ SECTION">
+ marc.waeckerlin@tech.swisssign.com">
+
+ INIT">
+
+
+ Debian">
+ GNU">
+ GPL">
+]>
+
+
+
+
+ &dhemail;
+
+
+ &dhfirstname;
+ &dhsurname;
+
+
+ 2003
+ &dhusername;
+
+ &dhdate;
+
+
+ &dhucpackage;
+
+ &dhsection;
+
+
+ &dhpackage;
+
+ program to do something
+
+
+
+ &dhpackage;
+
+
+
+
+
+
+
+ DESCRIPTION
+
+ This manual page documents briefly the
+ &dhpackage; and bar
+ commands.
+
+ This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ Info format; see below.
+
+ &dhpackage; is a program that...
+
+
+
+ OPTIONS
+
+ These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ Info files.
+
+
+
+
+
+
+
+ Show summary of options.
+
+
+
+
+
+
+
+ Show version of program.
+
+
+
+
+
+ SEE ALSO
+
+ bar (1), baz (1).
+
+ The programs are documented fully by The Rise and
+ Fall of a Fooish Bar available via the
+ Info system.
+
+
+ AUTHOR
+
+ This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (and may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+
+
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+
+
+
+
+
+
diff --git a/debian/manpage.xml.ex b/debian/manpage.xml.ex
new file mode 100644
index 0000000..23b0a5f
--- /dev/null
+++ b/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+
+. will be generated. You may view the
+manual page with: nroff -man . | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+ ... .
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+ &dhtitle;
+ &dhpackage;
+
+
+ &dhfirstname;
+ &dhsurname;
+ Wrote this manpage for the Debian system.
+
+ &dhemail;
+
+
+
+
+ 2007
+ &dhusername;
+
+
+ This manual page was written for the Debian system
+ (and may be used by others).
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 2 or (at your option) any later version published by
+ the Free Software Foundation.
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in
+ /usr/share/common-licenses/GPL.
+
+
+
+ &dhucpackage;
+ &dhsection;
+
+
+ &dhpackage;
+ program to do something
+
+
+
+ &dhpackage;
+
+
+
+
+
+
+
+
+ this
+
+
+
+
+
+
+
+ this
+ that
+
+
+
+
+ &dhpackage;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DESCRIPTION
+ This manual page documents briefly the
+ &dhpackage; and bar
+ commands.
+ This manual page was written for the Debian distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the GNU
+ info
+ 1
+ format; see below.
+ &dhpackage; is a program that...
+
+
+ OPTIONS
+ The program follows the usual GNU command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+
+ info
+ 1
+ files.
+
+
+
+
+
+
+ Does this and that.
+
+
+
+
+
+
+ Show summary of options.
+
+
+
+
+
+
+ Show version of program.
+
+
+
+
+
+ FILES
+
+
+ /etc/foo.conf
+
+ The system-wide configuration file to control the
+ behaviour of &dhpackage;. See
+
+ foo.conf
+ 5
+ for further details.
+
+
+
+ ${HOME}/.foo.conf
+
+ The per-user configuration file to control the
+ behaviour of &dhpackage;. See
+
+ foo.conf
+ 5
+ for further details.
+
+
+
+
+
+ ENVIONMENT
+
+
+ FOO_CONF
+
+ If used, the defined file is used as configuration
+ file (see also ).
+
+
+
+
+
+ DIAGNOSTICS
+ The following diagnostics may be issued
+ on stderr:
+
+
+ Bad configuration file. Exiting.
+
+ The configuration file seems to contain a broken configuration
+ line. Use the option, to get more info.
+
+
+
+
+ &dhpackage; provides some return codes, that can
+ be used in scripts:
+
+ Code
+ Diagnostic
+
+ 0
+ Program exited successfully.
+
+
+ 1
+ The configuration file seems to be broken.
+
+
+
+
+
+ BUGS
+ The program is currently limited to only work
+ with the foobar library.
+ The upstreams BTS can be found
+ at .
+
+
+ SEE ALSO
+
+
+ bar
+ 1
+ ,
+ baz
+ 1
+ ,
+ foo.conf
+ 5
+
+ The programs are documented fully by The Rise and
+ Fall of a Fooish Bar available via the
+ info
+ 1
+ system.
+
+
+
diff --git a/debian/menu b/debian/menu
new file mode 100644
index 0000000..c4fde80
--- /dev/null
+++ b/debian/menu
@@ -0,0 +1,8 @@
+?package(tokentool):\
+ needs="X11"\
+ hints="..."\
+ section="Applications/..."\
+ title="..."\
+ longtitle="..."\
+ command="/usr/bin/tokentool"\
+ icon="/usr/share/tokentool/tokentool.xpm"
diff --git a/debian/menu.ex b/debian/menu.ex
new file mode 100644
index 0000000..3f387e8
--- /dev/null
+++ b/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(init):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+ title="init" command="/usr/bin/init"
diff --git a/debian/postinst.ex b/debian/postinst.ex
new file mode 100644
index 0000000..2a7188b
--- /dev/null
+++ b/debian/postinst.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postinst script for init
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * `configure'
+# * `abort-upgrade'
+# * `abort-remove' `in-favour'
+#
+# * `abort-remove'
+# * `abort-deconfigure' `in-favour'
+# `removing'
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/postrm.ex b/debian/postrm.ex
new file mode 100644
index 0000000..0850e9b
--- /dev/null
+++ b/debian/postrm.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# postrm script for init
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * `remove'
+# * `purge'
+# * `upgrade'
+# * `failed-upgrade'
+# * `abort-install'
+# * `abort-install'
+# * `abort-upgrade'
+# * `disappear'
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/preinst.ex b/debian/preinst.ex
new file mode 100644
index 0000000..70b142e
--- /dev/null
+++ b/debian/preinst.ex
@@ -0,0 +1,35 @@
+#!/bin/sh
+# preinst script for init
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * `install'
+# * `install'
+# * `upgrade'
+# * `abort-upgrade'
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/prerm.ex b/debian/prerm.ex
new file mode 100644
index 0000000..aac0e70
--- /dev/null
+++ b/debian/prerm.ex
@@ -0,0 +1,38 @@
+#!/bin/sh
+# prerm script for init
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * `remove'
+# * `upgrade'
+# * `failed-upgrade'
+# * `remove' `in-favour'
+# * `deconfigure' `in-favour'
+# `removing'
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..0e2df50
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,95 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
+else
+CROSS= --build $(DEB_BUILD_GNU_TYPE)
+endif
+
+
+
+config.status: configure
+ dh_testdir
+ifneq "$(wildcard /usr/share/misc/config.sub)" ""
+ cp -f /usr/share/misc/config.sub config.sub
+endif
+ifneq "$(wildcard /usr/share/misc/config.guess)" ""
+ cp -f /usr/share/misc/config.guess config.guess
+endif
+ ./configure $(CROSS) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info CFLAGS="$(CFLAGS)"
+
+
+build: build-stamp
+
+build-stamp: config.status
+ dh_testdir
+ $(MAKE)
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp
+ [ ! -f [Mm]akefile ] || $(MAKE) distclean
+ rm -f config.sub config.guess
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs
+ $(MAKE) prefix=$(CURDIR)/debian/tmp/usr install
+
+
+# Build architecture-independent files here.
+binary-indep: install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs ChangeLog
+ dh_installdocs
+ dh_installexamples
+ dh_install
+ dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/debian/shlibs.local.ex b/debian/shlibs.local.ex
new file mode 100644
index 0000000..2566e8d
--- /dev/null
+++ b/debian/shlibs.local.ex
@@ -0,0 +1 @@
+libproxyface 1.0.34 proxyface (>> 1.0.34-0), proxyface (<< 1.0.34-99)
diff --git a/debian/tokentool-dev.dirs b/debian/tokentool-dev.dirs
new file mode 100644
index 0000000..04e68f9
--- /dev/null
+++ b/debian/tokentool-dev.dirs
@@ -0,0 +1,3 @@
+#usr/lib
+#usr/include
+#usr/share
diff --git a/debian/tokentool-dev.install b/debian/tokentool-dev.install
new file mode 100644
index 0000000..c1a9bb1
--- /dev/null
+++ b/debian/tokentool-dev.install
@@ -0,0 +1,7 @@
+usr/share/doc/tokentool
+#usr/include/*
+#usr/lib/lib*.a
+#usr/lib/lib*.so
+#usr/lib/*.la
+#usr/lib/pkgconfig
+#usr/share/pkgconfig
diff --git a/debian/tokentool.dirs b/debian/tokentool.dirs
new file mode 100644
index 0000000..cd138e0
--- /dev/null
+++ b/debian/tokentool.dirs
@@ -0,0 +1,3 @@
+#usr/lib
+#usr/bin
+#usr/share
diff --git a/debian/tokentool.doc-base.EX b/debian/tokentool.doc-base.EX
new file mode 100644
index 0000000..5047da1
--- /dev/null
+++ b/debian/tokentool.doc-base.EX
@@ -0,0 +1,20 @@
+Document: tokentool
+Title: Debian tokentool Manual
+Author:
+Abstract: This manual describes what tokentool is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/proxyface/proxyface.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/proxyface/proxyface.ps.gz
+
+Format: text
+Files: /usr/share/doc/proxyface/proxyface.text.gz
+
+Format: HTML
+Index: /usr/share/doc/proxyface/html/index.html
+Files: /usr/share/doc/proxyface/html/*.html
diff --git a/debian/tokentool.install b/debian/tokentool.install
new file mode 100644
index 0000000..39c000b
--- /dev/null
+++ b/debian/tokentool.install
@@ -0,0 +1,11 @@
+usr/bin/tokentool
+usr/share/applications/tokentool.desktop
+usr/share/tokentool/tokentool.xpm
+usr/share/tokentool/tokentool.png
+usr/share/doc/tokentool/AUTHORS
+usr/share/doc/tokentool/NEWS
+usr/share/doc/tokentool/README
+usr/share/doc/tokentool/COPYING
+usr/share/doc/tokentool/INSTALL
+usr/share/doc/tokentool/ChangeLog
+#usr/lib/lib*.so.*
diff --git a/debian/watch.ex b/debian/watch.ex
new file mode 100644
index 0000000..9e3713b
--- /dev/null
+++ b/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+#
+#http://www.example.com/downloads.php proxyface-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/proxyface-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/proxyface-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/proxyface/proxyface-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html proxyface-(.*)\.tar\.gz
diff --git a/doc/doxyfile.in b/doc/doxyfile.in
new file mode 100644
index 0000000..0a7821b
--- /dev/null
+++ b/doc/doxyfile.in
@@ -0,0 +1,1724 @@
+# Doxyfile 1.7.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "Projektdokumentation @PACKAGENAME@"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = "Version @MAJOR@.@MINOR@.@LEAST@"
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer
+# a quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is
+# included in the documentation. The maximum height of the logo should not
+# exceed 55 pixels and the maximum width should not exceed 200 pixels.
+# Doxygen will copy the logo to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY =
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE = German
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful if your file system
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = YES
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 2
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES = "id=\par File-ID\n" \
+ "copy=\par Copyright\n" \
+ "license=\par License\n" \
+ "classmutex=\par Reentrant:\nAccess is locked with class static mutex @c " \
+ "instancemutex=\par Reentrant:\nAccess is locked with per instance mutex @c " \
+ "mutex=\par Reentrant:\nAccess is locked with mutex @c "
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this
+# tag. The format is ext=language, where ext is a file extension, and language
+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also makes the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = YES
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
+# unions are shown inside the group in which they are included (e.g. using
+# @ingroup) instead of on a separate page (for HTML and Man pages) or
+# section (for LaTeX and RTF).
+
+INLINE_GROUPED_CLASSES = NO
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penalty.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will roughly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespaces are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = YES
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
+# will list include files with double quotes in the documentation
+# rather than with sharp brackets.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = YES
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = YES
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = YES
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
+# do proper type resolution of all parameters of a function it will reject a
+# match between the prototype and the implementation of a member function even
+# if there is only one candidate or it is obvious which candidate to choose
+# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
+# will still accept a match between prototype and implementation in such cases.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or macro consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and macros in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command , where is the value of
+# the FILE_VERSION_FILTER tag, and is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. The create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option.
+# You can optionally specify a file name after the option, if omitted
+# DoxygenLayout.xml will be used as the name of the layout file.
+
+LAYOUT_FILE = doxygenlayout.xml
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = NO
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# The WARN_NO_PARAMDOC option can be enabled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE = doxygen.errors
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = @SRCDIR@/../src
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
+# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
+# *.f90 *.f *.for *.vhd *.vhdl
+
+FILE_PATTERNS = *.[ch]xx \
+ *.doc
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS = moc_* \
+ uic_* \
+ qrc_*
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH = .
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command , where
+# is the value of the INPUT_FILTER tag, and is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty or if
+# non of the patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
+# and it is also possible to disable source filtering for a specific pattern
+# using *.ext= (so without naming a filter). This option only has effect when
+# FILTER_SOURCE_FILES is enabled.
+
+FILTER_SOURCE_PATTERNS =
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = YES
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header. Note that when using a custom header you are responsible
+# for the proper inclusion of any scripts and style sheets that doxygen
+# needs, which is dependent on the configuration options used.
+# It is adviced to generate a default header using "doxygen -w html
+# header.html footer.html stylesheet.css YourConfigFile" and then modify
+# that header. Note that the header is subject to change so you typically
+# have to redo this when upgrading to a newer version of doxygen or when changing the value of configuration settings such as GENERATE_TREEVIEW!
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that
+# the files will be copied as-is; there are no commands or markers available.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
+# Doxygen will adjust the colors in the stylesheet and background images
+# according to this color. Hue is specified as an angle on a colorwheel,
+# see http://en.wikipedia.org/wiki/Hue for more information.
+# For instance the value 0 represents red, 60 is yellow, 120 is green,
+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
+# The allowed range is 0 to 359.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
+# the colors in the HTML output. For a value of 0 the output will use
+# grayscales only. A value of 255 will produce the most vivid colors.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
+# the luminance component of the colors in the HTML output. Values below
+# 100 gradually make the output lighter, whereas values above 100 make
+# the output darker. The value divided by 100 is the actual gamma applied,
+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
+# and 100 does not change the gamma.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting
+# this to NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = YES
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = com.swisssign.dev
+
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+
+DOCSET_PUBLISHER_ID = com.swisssign.dev
+
+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+
+DOCSET_PUBLISHER_NAME = "Marc Wäckerlin (SwissSign AG)"
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
+# that can be used as input for Qt's qhelpgenerator to generate a
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP = YES
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE = @PACKAGENAME@.qch
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE = org.waweckerlin.marc.dev
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
+# add. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see
+#
+# Qt Help Project / Custom Filters.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's
+# filter section matches.
+#
+# Qt Help Project / Filter Attributes.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+# will be generated, which together with the HTML files, form an Eclipse help
+# plugin. To install this plugin and make it available under the help contents
+# menu in Eclipse, the contents of the directory containing the HTML and XML
+# files needs to be copied into the plugins directory of eclipse. The name of
+# the directory within the plugins directory should be the same as
+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
+# the help appears.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have
+# this name.
+
+ECLIPSE_DOC_ID = com.swisssign.dev
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
+# (range [0,1..20]) that doxygen will group on one line in the generated HTML
+# documentation. Note that a value of 0 will completely suppress the enum
+# values from appearing in the overview section.
+
+ENUM_VALUES_PER_LINE = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = YES
+
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
+# links to external symbols imported via tag files in a separate window.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are
+# not supported properly for IE 6.0, but are supported on all modern browsers.
+# Note that when changing this option you need to delete any form_*.png files
+# in the HTML output before the changes have effect.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
+# (see http://www.mathjax.org) which uses client side Javascript for the
+# rendering instead of using prerendered bitmaps. Use this if you do not
+# have LaTeX installed or if you want to formulas look prettier in the HTML
+# output. When enabled you also need to install MathJax separately and
+# configure the path to it using the MATHJAX_RELPATH option.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you need to specify the location relative to the
+# HTML output directory using the MATHJAX_RELPATH option. The destination
+# directory should contain the MathJax.js script. For instance, if the mathjax
+# directory is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the
+# mathjax.org site, so you can quickly see the result without installing
+# MathJax, but it is strongly recommended to install a local copy of MathJax
+# before deployment.
+
+MATHJAX_RELPATH = http://www.mathjax.org/mathjax
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE = NO
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvantages are that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = YES
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
+# the generated latex document. The footer should contain everything after
+# the last chapter. If it is left blank doxygen will generate a
+# standard footer. Notice: only use this tag if you know what you are doing!
+
+LATEX_FOOTER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = YES
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = YES
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = YES
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = YES
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# pointed to by INCLUDE_PATH will be searched when a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED = HAVE_STACKTRACE
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition that
+# overrules the definition found in the source code.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all references to function-like macros
+# that are alone on a line, have an all uppercase name, and do not end with a
+# semicolon, because these will confuse the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE = @PACKAGENAME@.doxytag
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option also works with HAVE_DOT disabled, but it is recommended to
+# install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = NO
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = @HAVE_DOT@
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
+# allowed to run in parallel. When set to 0 (the default) doxygen will
+# base this on the number of processors available in the system. You can set it
+# explicitly to a value larger than 0 to get control over the balance
+# between CPU load and processing speed.
+
+DOT_NUM_THREADS = 0
+
+# By default doxygen will write a font called Helvetica to the output
+# directory and reference it in all dot files that doxygen generates.
+# When you want a differently looking font you can specify the font name
+# using DOT_FONTNAME. You need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = NO
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = NO
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will generate a graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are svg, png, jpg, or gif.
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the
+# \mscfile command).
+
+MSCFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = YES
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
diff --git a/doc/doxygenlayout.xml b/doc/doxygenlayout.xml
new file mode 100644
index 0000000..4e20439
--- /dev/null
+++ b/doc/doxygenlayout.xml
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/makefile.am b/doc/makefile.am
new file mode 100644
index 0000000..6d47d94
--- /dev/null
+++ b/doc/makefile.am
@@ -0,0 +1,47 @@
+## @file
+##
+## $Id: makefile.am 7 2010-03-01 14:55:44Z marc $
+##
+## 1 2 3 4 5 6 7 8
+## 45678901234567890123456789012345678901234567890123456789012345678901234567890
+
+ALL_SRC = ${top_srcdir}/src/*.[ch]xx
+# ${top_srcdir}/src/*.doc
+
+DIRS = html
+#latex
+
+all: ${DIRS}
+
+.PHONY: doc clean-local distclean-local dist-hool install-data-hook \
+ uninstall-hook
+
+deps = ${top_srcdir}/COPYING ${top_srcdir}/README \
+ ${top_srcdir}/INSTALL ${top_srcdir}/NEWS ${top_srcdir}/ChangeLog
+
+html: ${ALL_SRC} doxyfile ${deps}
+ doxygen doxyfile
+if PEDANTIC
+ test \! -s doxygen.errors
+endif
+# cd latex && make
+# mv latex/refman.pdf @PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.pdf
+
+CLEANFILES = doxygen.errors @PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.pdf
+DISTCLEANFILES = @PACKAGENAME@.doxytag
+MAINTAINERCLEANFILES = makefile.in
+
+distclean-local:
+ - rm -r html latex
+
+dist-hook: html
+# cp -r html latex ${distdir}/
+
+install-data-hook:
+ test -d $(DESTDIR)${docdir} || mkdir -p $(DESTDIR)${docdir}
+ chmod -R u+w $(DESTDIR)${docdir}
+ cp -r html $(DESTDIR)${docdir}/
+
+uninstall-hook:
+ -chmod -R u+w $(DESTDIR)${docdir}
+ -rm -rf $(DESTDIR)${docdir}/*
diff --git a/makefile.am b/makefile.am
new file mode 100644
index 0000000..056e35a
--- /dev/null
+++ b/makefile.am
@@ -0,0 +1,66 @@
+## @file
+##
+## $Id: makefile.am 2 2009-06-16 13:20:59Z $
+##
+## $Date: 2008-08-26 13:09:21 $
+## $Author: marc $
+##
+## @copy © Marc Wäckerlin
+## @license LGPL, see file COPYING
+##
+## 1 2 3 4 5 6 7 8
+## 45678901234567890123456789012345678901234567890123456789012345678901234567890
+
+SUBDIRS = @SRC_DIR@ @TST_DIR@ @DOC_DIR@
+
+nobase_include_HEADERS =
+
+EXTRA_DIST = bootstrap.sh debian
+
+DISTCLEANFILES = debian/changelog
+
+deb: dist
+ tar xzvf @PACKAGE@-@VERSION@.tar.gz
+ cd @PACKAGE@-@VERSION@ && dpkg-buildpackage
+ rm -rf @PACKAGE@-@VERSION@
+
+doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog @PACKAGENAME@.spec
+
+RPMS = /usr/src/packages/RPMS/i586/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm \
+ /usr/src/packages/RPMS/i586/@PACKAGENAME@-devel-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm \
+ /usr/src/packages/SRPMS/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.src.rpm
+
+.PHONY: release tag rpm webserver \
+ doc clean-local distclean-local dist-hool install-data-hook \
+ uninstall-hook
+
+release: tag webserver
+
+tag: distcheck
+ cvs ci -R .
+ cvs tag -FR REL_@PACKAGENAME@-@MAJOR@-@MINOR@-@LEAST@ .
+
+rpm: dist
+ cp @PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.tar.gz \
+ /usr/src/packages/SOURCES/
+ rpmbuild -ba --clean @PACKAGENAME@.spec
+
+deps = ${top_srcdir}/COPYING ${top_srcdir}/README ${top_srcdir}/INSTALL ${top_srcdir}/NEWS ${top_srcdir}/ChangeLog
+
+clean-local:
+ - rm doxygen.err lib@PACKAGENAME@.doxytag
+ - rm @PACKAGENAME@-dev_@MAJOR@.@MINOR@.@LEAST@-*.deb \
+ @PACKAGENAME@_@MAJOR@.@MINOR@.@LEAST@-*.changes \
+ @PACKAGENAME@_@MAJOR@.@MINOR@.@LEAST@-1.tar.gz \
+ @PACKAGENAME@_@MAJOR@.@MINOR@.@LEAST@-1.dsc \
+ @PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.tar.gz \
+ @PACKAGENAME@_@MAJOR@.@MINOR@.@LEAST@-*.deb
+
+distclean-local:
+ - rm -r ${top_builddir}/@DOC_DIR@/html/* ${top_builddir}/@DOC_DIR@/latex/*
+ - rm makefile makefile.in doxygen.err libmrw.doxytag
+ - find . -name '*~' | xargs rm
+ - rm -r autom4te.cache
+ - rm aclocal.m4 config.guess config.sub configure \
+ depcomp install-sh ltmain.sh makefile makefile.in \
+ missing mkinstalldirs
diff --git a/src/languages.qrc.in b/src/languages.qrc.in
new file mode 100644
index 0000000..57f0a61
--- /dev/null
+++ b/src/languages.qrc.in
@@ -0,0 +1,8 @@
+
+
+ @PACKAGENAME@_de.qm
+ @PACKAGENAME@_fr.qm
+ @PACKAGENAME@_it.qm
+ @PACKAGENAME@_en.qm
+
+
diff --git a/src/main.cxx b/src/main.cxx
new file mode 100644
index 0000000..a191230
--- /dev/null
+++ b/src/main.cxx
@@ -0,0 +1,75 @@
+/*! @file
+
+ @id $Id$
+
+ Build für Windoof:
+ QMAKESPEC=$(pwd)/mkspecs/mingw-g++ qmake-qt4 && make release
+*/
+// 1 2 3 4 5 6 7 8
+// 45678901234567890123456789012345678901234567890123456789012345678901234567890
+
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+int main(int argv, char** argc) try {
+ //............................................................................
+ QStringList l(QProcess::systemEnvironment());
+ QMap env;
+ for (QStringList::iterator it(l.begin()); it!=l.end(); ++it) {
+ QStringList v(it->split('='));
+ QString key(*v.begin());
+ QString value((v.pop_front(), v.join("=")));
+ env.insert(key, value);
+ }
+ if (env.contains("LANGUAGE")) QLocale::setDefault(env["LANGUAGE"]);
+ //............................................................................
+ QTextCodec* utf8(QTextCodec::codecForName("UTF-8"));
+ QTextCodec::setCodecForCStrings(utf8);
+ QTextCodec::setCodecForLocale(utf8);
+ QTextCodec::setCodecForTr(utf8);
+ QApplication app(argv, argc);
+ app.setWindowIcon(QIcon(":/icons/tokentool"));
+ app.setApplicationName(QObject::trUtf8("tokentool",
+ "application name"));
+ app.setApplicationVersion(VERSION);
+ QTranslator qtTranslator;
+ qtTranslator.load(":/language/qt_" + QLocale::system().name());
+ app.installTranslator(&qtTranslator);
+ QTranslator appTranslator;
+ appTranslator.load(":/language/tokentool_"+ QLocale::system().name());
+ app.installTranslator(&appTranslator);
+ //............................................................................
+ QStringList args(app.arguments());
+ for (QStringList::iterator it(args.begin()); ++it!=args.end();)
+ if (*it=="-h" || *it=="--help" || *it=="-help" || *it=="/?") {
+ std::cout<' > @PACKAGENAME@_$@.ts
+ echo '' >> @PACKAGENAME@_$@.ts
+ echo '' >> @PACKAGENAME@_$@.ts
+ xqilla merge-translation.xquery >> @PACKAGENAME@_$@.ts
+ echo '' >> @PACKAGENAME@_$@.ts
+ rm translation.old translation.new
+
+print:
+ @echo "LANGS=${LANGS}"
+ @echo "ALL_SRC=${ALL_SRC}"
+ @echo "QMAKE=${QMAKE}"
+ @echo "QMAKE_OPTIONS=${QMAKE_OPTIONS}"
+ @echo "QMAKE_MAKEFILE=${QMAKE_MAKEFILE}"
+ @echo "QMAKE_TARGET=${QMAKE_TARGET}"
+ @echo "TARGETS=${TARGETS}"
+
+
+@PACKAGENAME@_%.qm: @PACKAGENAME@_%.ts
+ ${LRELEASE} $<
+
+%.xpm: resources/%.png
+ convert $< $@ || cp $< $@
+
+%.ts: ${ALL_SRC}
+ ${LUPDATE} @LUPDATE_ARGS@ ${QMAKE_PROJECT}
+
+${QMAKE_MAKEFILE}: ${QMAKE_PROJECT} ${ALL_SRC}
+ ${QMAKE} -o $@ $<
+
+${QMAKE_TARGET}: ${QMAKE_MAKEFILE} ${ALL_SRC} $(LANGS:%=@PACKAGENAME@_%.qm)
+ make -f ${QMAKE_MAKEFILE}
+
+clean-local:
+ -rm -r ${QMAKE_TARGET}.app
+
+maintainer-clean-local:
+ -rm -rf ${QMAKE_TARGET}.app
+
+install-exec-local:
+ test -d ${bindir} || mkdir -p ${bindir}
+ ( test -f @PACKAGENAME@ && cp @PACKAGENAME@ ${bindir}/ ) \
+ || ( test -f @PACKAGENAME@.exe && cp @PACKAGENAME@.exe ${bindir}/ ) \
+ || ( test -d @PACKAGENAME@.app && cp -r @PACKAGENAME@.app ${bindir}/ )
+
+uninstall-local:
+ -rm -rf ${bindir}/@PACKAGENAME@{,.exe,.app}
+
+CLEANFILES = ${TARGETS} ${TARGETS:%=%.exe} $(LANGS:%=@PACKAGENAME@_%.qm) \
+ *.o *.obj qrc_*.cpp ui_*.h moc_*.cpp \
+ ${QMAKE_TARGET} \
+ @PACKAGENAME@.xpm
+MAINTAINERCLEANFILES = makefile.in ${QMAKE_MAKEFILE}
diff --git a/src/qmake.pro.in b/src/qmake.pro.in
new file mode 100644
index 0000000..0ee0813
--- /dev/null
+++ b/src/qmake.pro.in
@@ -0,0 +1,28 @@
+QT += network
+CONFIG += release no_keywords
+QMAKE_LIBS += -lpcscxx
+macx {
+ QMAKE_INCDIR += /opt/local/include
+ QMAKE_LIBDIR += /opt/local/lib
+ CONFIG += x86
+}
+ICON = @PACKAGENAME@.icns
+QMAKE_INCDIR += /usr/local/include
+TRANSLATIONS = @PACKAGENAME@_en.ts \
+ @PACKAGENAME@_de.ts \
+ @PACKAGENAME@_fr.ts \
+ @PACKAGENAME@_it.ts
+SOURCES = main.cxx
+HEADERS = tokentool.hxx
+FORMS = tokentool.ui
+RESOURCES = languages.qrc resources.qrc
+
+TARGET = @PACKAGENAME@
+
+CODECFORSRC = UTF-8
+CODECFORTR = UTF-8
+
+DEFINES += VERSION=\'\"@VERSION@\"\' BUILDDATE=\'\"@BUILDDATE@\"\'
+
+## DEBUG
+# QMAKE_CXXFLAGS += -include iostream -D\"CRYPTOKI_LOG(X)=std::clog<<\\\"CRYPTOKI_\\\"<
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/tokentool.png b/src/resources/tokentool.png
new file mode 100644
index 0000000..7372a7c
Binary files /dev/null and b/src/resources/tokentool.png differ
diff --git a/src/tokentool.desktop b/src/tokentool.desktop
new file mode 100644
index 0000000..c11e05f
--- /dev/null
+++ b/src/tokentool.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Type=Application
+Name=tokentool
+Name[de]=tokentool
+Name[fr]=tokentool
+Name[it]=tokentool
+Name[en]=tokentool
+Comment=
+Comment[de]=
+Icon=/usr/share/tokentool/tokentool.png
+Categories=
+Exec=/usr/bin/tokentool
+Path=
diff --git a/src/tokentool.hxx b/src/tokentool.hxx
new file mode 100644
index 0000000..2fdf2e1
--- /dev/null
+++ b/src/tokentool.hxx
@@ -0,0 +1,301 @@
+/*! @file
+
+ @id $Id$
+*/
+// 1 2 3 4 5 6 7 8
+// 45678901234567890123456789012345678901234567890123456789012345678901234567890
+
+#ifndef __Tokentool_HXX__
+#define __Tokentool_HXX__
+
+#include
+#include
+#include
+#include
+
+#include
+
+#include
+
+inline QString qs(const std::string& s) {
+ return QString::fromStdString(s);
+}
+
+template
+ QString qs(const cryptoki::FixString& s) {
+ return QString::fromStdString(s);
+}
+
+class tokentool: public QMainWindow, protected Ui::tokentool {
+ Q_OBJECT;
+ public:
+ tokentool(std::string lib="libcvP11.so", QWidget* p=0):
+ QMainWindow(p), _cryptoki(lib), _slot(0) {
+ setupUi(this);
+ _certificates->addAction(actionDeleteSelectedCertificate);
+ libraryInfo(lib);
+ rescan();
+ }
+ void rescan() {
+ _slot = 0;
+ _slots->clear();
+ _slotList = _cryptoki.slotList();
+ for (cryptoki::SlotList::iterator it(_slotList.begin());
+ it!=_slotList.end(); ++it) {
+ QAction* a(_slots->addAction(qs(it->slotinfo().slotDescription)));
+ a->setCheckable(true);
+ a->setData((qulonglong)&*it);
+ assert(connect(a, SIGNAL(toggled(bool)), SLOT(chosen(bool))));
+ if (!_slot) a->setChecked(true);
+ }
+ on__certificates_itemSelectionChanged();
+ }
+ private Q_SLOTS:
+ void on_actionDeleteSelectedCertificate_triggered() {
+ QList items(_certificates->selectedItems());
+ if (items.size()>0) deleteCert(items[0]);
+ }
+ void on__certificates_itemSelectionChanged() {
+ actionDeleteSelectedCertificate
+ ->setEnabled(_certificates->selectedItems().size());
+ }
+ void chosen(bool checked) {
+ if (!checked) return;
+ _pin->clear();
+ QAction* a(qobject_cast(sender()));
+ QMenu* m(qobject_cast(a->parent()));
+ QObjectList actions(m->children());
+ for (QObjectList::iterator it(actions.begin());it!=actions.end(); ++it)
+ if (qobject_cast(*it)!=a)
+ qobject_cast(*it)->setChecked(false);
+ _slot = (cryptoki::Slot*)a->data().toLongLong();
+ setup();
+ }
+ void setup() {
+ try {
+ if (!_slot) return;
+ slotInfo(_slot->slotinfo());
+ tokenInfo(_slot->tokeninfo());
+ certificates(*_slot);
+ } catch (...) {}
+ }
+ void libraryInfo(std::string lib) {
+ _soname->setTitle(qs(lib));
+ cryptoki::Info inf(_cryptoki.info());
+ _libraryCryptokiVersion->setText(QString("%1.%2")
+ .arg(inf.cryptokiVersion.major)
+ .arg(inf.cryptokiVersion.minor));
+ _libraryManufacturerID->setText(qs(inf.manufacturerID));
+ _libraryDescription->setText(qs(inf.libraryDescription));
+ _libraryVersion->setText(QString("%1.%2")
+ .arg(inf.libraryVersion.major)
+ .arg(inf.libraryVersion.minor));
+ }
+ void slotInfo(const cryptoki::SlotInfo& slotInfo) {
+ _slotDescription->setText(qs(slotInfo.slotDescription));
+ _slotManufacturerID->setText(qs(slotInfo.manufacturerID));
+ _slotHardwareVersion->setText(QString("%1.%2")
+ .arg(slotInfo.hardwareVersion.major)
+ .arg(slotInfo.hardwareVersion.minor));
+ _slotFirmwareVersion->setText(QString("%1.%2")
+ .arg(slotInfo.firmwareVersion.major)
+ .arg(slotInfo.firmwareVersion.minor));
+ _tokenPresent->setEnabled(slotInfo.flags&CKF_TOKEN_PRESENT);
+ _removableDevice->setEnabled(slotInfo.flags&CKF_REMOVABLE_DEVICE);
+ _hwSlot->setEnabled(slotInfo.flags&CKF_HW_SLOT);
+ _hasTokenInfo->setEnabled(slotInfo.flags&CKF_TOKEN_PRESENT);
+ }
+ void tokenInfo(const cryptoki::TokenInfo& tokenInfo) {
+ _tokenLabel->setText(qs(tokenInfo.label));
+ _tokenManufacturerID->setText(qs(tokenInfo.manufacturerID));
+ _tokenModel->setText(qs(tokenInfo.model));
+ _tokenSerialNumber->setText(qs(tokenInfo.serialNumber));
+ _tokenSessionCount->setText(QString("%2/%1")
+ .arg(qs(cryptoki::string
+ (tokenInfo.maxSessionCount)))
+ .arg(qs(cryptoki::string
+ (tokenInfo.sessionCount))));
+ _tokenRWSessionCount->setText(QString("%2/%1")
+ .arg(qs(cryptoki::string
+ (tokenInfo.maxRwSessionCount)))
+ .arg(qs(cryptoki::string
+ (tokenInfo.rwSessionCount))));
+ _tokenPinLen->setText(QString("%2-%1")
+ .arg(tokenInfo.maxPinLen)
+ .arg(tokenInfo.minPinLen));
+ _tokenPublicMemory->setText(QString("%2/%1")
+ .arg(qs(cryptoki::string
+ (tokenInfo.totalPublicMemory)))
+ .arg(qs(cryptoki::string
+ (tokenInfo.freePublicMemory))));
+ _tokenPrivateMemory->setText(QString("%2/%1")
+ .arg(qs(cryptoki::string
+ (tokenInfo.totalPrivateMemory)))
+ .arg(qs(cryptoki::string
+ (tokenInfo.freePrivateMemory))));
+ _tokenHardwareVersion->setText(QString("%1.%2")
+ .arg(tokenInfo.hardwareVersion.major)
+ .arg(tokenInfo.hardwareVersion.minor));
+ _tokenFirmwareVersion->setText(QString("%1.%2")
+ .arg(tokenInfo.firmwareVersion.major)
+ .arg(tokenInfo.firmwareVersion.minor));
+ _tokenUTCTime->setText(qs(tokenInfo.utcTime));
+ _tokenUTCTime->setVisible(tokenInfo.flags&CKF_CLOCK_ON_TOKEN);
+ _rng->setEnabled(tokenInfo.flags&CKF_RNG);
+ _writeProtected->setEnabled(tokenInfo.flags&CKF_WRITE_PROTECTED);
+ _loginRequired->setEnabled(tokenInfo.flags&CKF_LOGIN_REQUIRED);
+ _userPinInitialized->setEnabled(tokenInfo.flags&CKF_USER_PIN_INITIALIZED);
+ _restoreKeyNotNeeded->setEnabled
+ (tokenInfo.flags&CKF_RESTORE_KEY_NOT_NEEDED);
+ _clockOnToken->setEnabled(tokenInfo.flags&CKF_CLOCK_ON_TOKEN);
+ _protectedAuthenticationPath->setEnabled
+ (tokenInfo.flags&CKF_PROTECTED_AUTHENTICATION_PATH);
+ _dualCryptoOperations->setEnabled
+ (tokenInfo.flags&CKF_DUAL_CRYPTO_OPERATIONS);
+ _tokenInitialized->setEnabled(tokenInfo.flags&CKF_TOKEN_INITIALIZED);
+ _secondaryAuthentication->setEnabled
+ (tokenInfo.flags&CKF_SECONDARY_AUTHENTICATION);
+ _userPinCountLow->setEnabled(tokenInfo.flags&CKF_USER_PIN_COUNT_LOW);
+ _userPinFinalTry->setEnabled(tokenInfo.flags&CKF_USER_PIN_FINAL_TRY);
+ _userPinLocked->setEnabled(tokenInfo.flags&CKF_USER_PIN_LOCKED);
+ _userPinToBeChanged->setEnabled
+ (tokenInfo.flags&CKF_USER_PIN_TO_BE_CHANGED);
+ _soPinCountLow->setEnabled(tokenInfo.flags&CKF_SO_PIN_COUNT_LOW);
+ _soPinFinalTry->setEnabled(tokenInfo.flags&CKF_SO_PIN_FINAL_TRY);
+ _soPinLocked->setEnabled(tokenInfo.flags&CKF_SO_PIN_LOCKED);
+ _soPinToBeChanged->setEnabled(tokenInfo.flags&CKF_SO_PIN_TO_BE_CHANGED);
+ }
+ void certificates(cryptoki::Slot& slot) {
+ try {
+ _certificates->clear();
+ cryptoki::Session session(slot);
+ cryptoki::ObjectList certs
+ (session.find(cryptoki::Attribute(CKA_CLASS)
+ .from(CKO_CERTIFICATE)));
+ for (cryptoki::ObjectList::iterator cert(certs.begin());
+ cert!=certs.end(); ++cert) {
+ std::string data(cert->attribute(CKA_VALUE).value);
+ QByteArray der(QByteArray(data.data(), data.size()));
+ QSslCertificate c(der, QSsl::Der);
+ qDebug()<<"ID="<attribute(CKA_ID).value));
+ addCertificate(cert->attribute(CKA_LABEL).value,
+ crypto::hex(cert->attribute(CKA_ID).value), c);
+ }
+ } catch (...) {}
+ }
+ void addCertificate(const std::string& label, const std::string& id,
+ const QSslCertificate& cert) {
+ if (cert.isNull()) return;
+ QTreeWidgetItem* c(new QTreeWidgetItem(QStringList()<setData(0, Qt::UserRole, qs(id));
+ _certificates->addTopLevelItem(c);
+ c->addChild
+ ((new QTreeWidgetItem
+ (QStringList()<addChild
+ ((new QTreeWidgetItem
+ (QStringList()<
addChild
+ ((new QTreeWidgetItem
+ (QStringList()<
addChild
+ ((it = new QTreeWidgetItem(QStringList()<
=QSslCertificate::Organization;
+ si=(QSslCertificate::SubjectInfo)((int)si-1))
+ if (!cert.subjectInfo(si).isEmpty()) {
+ it->addChild
+ ((new QTreeWidgetItem(subjectInfo(cert, si))));
+ }
+ it->setExpanded(true);
+ QMultiMap
+ asns(cert.alternateSubjectNames());
+ for (QMultiMap::iterator
+ asn(asns.begin()); asn!=asns.end(); ++asn)
+ it->addChild
+ ((new QTreeWidgetItem
+ (QStringList()<addChild
+ ((it = new QTreeWidgetItem(QStringList()<=QSslCertificate::Organization;
+ si=(QSslCertificate::SubjectInfo)((int)si-1))
+ if (!cert.issuerInfo(si).isEmpty())
+ it->addChild
+ ((new QTreeWidgetItem(subjectInfo(cert, si))));
+ it->setExpanded(true);
+ _certificates->resizeColumnToContents(0);
+ _certificates->resizeColumnToContents(1);
+ }
+ private:
+ void deleteCert(QTreeWidgetItem* item) {
+ if (!_slot) return;
+ if (item->parent()) return deleteCert(item->parent());
+ QByteArray qid(QByteArray::fromHex(item->data(0, Qt::UserRole).toByteArray()));
+ std::string id(qid.data(), qid.size());
+ qDebug()<<"delete:"<data(0, Qt::DisplayRole).toString();
+ qDebug()<<"ID="<text().isEmpty()) session.login(_pin->text().toStdString());
+ cryptoki::ObjectList objs
+ (session.find(cryptoki::AttributeList()
+ <(CKO_CERTIFICATE)
+ <destroy();
+ } catch (const std::exception& e) {
+ qDebug()<<"Cannot delete:"<
+
+ tokentool
+
+
+
+ 0
+ 0
+ 737
+ 625
+
+
+
+ MainWindow
+
+
+
+ -
+
+
+ 1
+
+
+
+ Hardware
+
+
+
-
+
+
+ true
+
+
+
+
+ 0
+ 0
+ 707
+ 526
+
+
+
+
-
+
+
-
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+ Slot Info
+
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Slot Description:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Manufacturer ID:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Hardware Version:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Firmware Version:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Flags
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Token Present
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Removable Device
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Hardware Slot
+
+
+
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ <Library>
+
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Cryptoki Version:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Manufacturer ID:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Library Description:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Library Version:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ true
+
+
+ Token Info
+
+
+
-
+
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Label:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Manufacturer ID:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Model:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Serial Number:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Session Count:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ RW Session Count:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ PIN Length:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Public Memory:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Private Memory:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Hardware Version:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Firmware Version:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ UTC Time:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ General Flags
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Random Number Generator
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Clock On Token
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Write Protected
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Protected Authentication Path
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Login Required
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Dual Crypto Operations
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ User PIN Initialized
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Token Initialized
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Restore Key Not Needed
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Secondary Authentication
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ User PIN Flags
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Count Low
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Final Try
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Locked
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ To Be Changed
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ SO PIN Flags
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Count Low
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Final Try
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ Locked
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Box
+
+
+ QFrame::Sunken
+
+
+ To Be Changed
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+ Certificates
+
+
+ -
+
+
+ Qt::ActionsContextMenu
+
+
+ QAbstractItemView::NoEditTriggers
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ false
+
+
+
+ Name
+
+
+
+
+ Value
+
+
+
+
+ -
+
+
-
+
+
+ PIN:
+
+
+
+ -
+
+
+ QLineEdit::Password
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Delete Selected Certificate
+
+
+ Delete selected Certificate
+
+
+ Del
+
+
+
+
+
+
diff --git a/src/tokentool_de.ts b/src/tokentool_de.ts
new file mode 100644
index 0000000..eafb88f
--- /dev/null
+++ b/src/tokentool_de.ts
@@ -0,0 +1,373 @@
+
+
+
+UTF-8
+
+ QObject
+
+
+
+ application name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tokentool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unknown certificate subject alternate name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unknown certificate subject info
+
+
+
+
diff --git a/src/tokentool_en.ts b/src/tokentool_en.ts
new file mode 100644
index 0000000..38fed04
--- /dev/null
+++ b/src/tokentool_en.ts
@@ -0,0 +1,373 @@
+
+
+
+UTF-8
+
+ QObject
+
+
+
+ application name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tokentool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unknown certificate subject alternate name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unknown certificate subject info
+
+
+
+
diff --git a/src/tokentool_fr.ts b/src/tokentool_fr.ts
new file mode 100644
index 0000000..57eb874
--- /dev/null
+++ b/src/tokentool_fr.ts
@@ -0,0 +1,373 @@
+
+
+
+UTF-8
+
+ QObject
+
+
+
+ application name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tokentool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unknown certificate subject alternate name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unknown certificate subject info
+
+
+
+
diff --git a/src/tokentool_it.ts b/src/tokentool_it.ts
new file mode 100644
index 0000000..aefde9d
--- /dev/null
+++ b/src/tokentool_it.ts
@@ -0,0 +1,373 @@
+
+
+
+UTF-8
+
+ QObject
+
+
+
+ application name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tokentool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unknown certificate subject alternate name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unknown certificate subject info
+
+
+
+
diff --git a/src/version.cxx.in b/src/version.cxx.in
new file mode 100644
index 0000000..89d7fbf
--- /dev/null
+++ b/src/version.cxx.in
@@ -0,0 +1,16 @@
+/*! @file
+
+ @id $Id$
+*/
+// 1 2 3 4 5 6 7 8
+// 45678901234567890123456789012345678901234567890123456789012345678901234567890
+
+#include
+
+namespace xml {
+ std::string version() {
+ return "@PACKAGENAME@-@VERSION@";
+ }
+ const std::string WHAT("#(@) @PACKAGENAME@-@VERSION@");
+ const std::string IDENT("$Id: @PACKAGENAME@-@VERSION@ $");
+}
diff --git a/tokentool.spec.in b/tokentool.spec.in
new file mode 100644
index 0000000..9928518
--- /dev/null
+++ b/tokentool.spec.in
@@ -0,0 +1,66 @@
+Summary: @PACKAGENAME@ PLEASE DESCRIBE
+Name: @PACKAGENAME@
+Version: @VERSION@
+Release: 1
+License: LGPL
+Group: Development/Libraries/C++
+URL: https://dev.swisssign.com/projects/@PACKAGENAME@
+Source0: %{name}-%{version}.tar.gz
+BuildRequires: subversion libcppunit-devel gcc-c++ doxygen graphviz texlive automake autoconf libtool make
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+
+
+%description
+@README@
+
+This package contains only the shared libraries required at runtime.
+
+%prep
+%setup -q
+./configure --prefix=/usr \
+ --docdir=/usr/share/doc/packages/@PACKAGENAME@ \
+ --libdir=/usr/lib
+
+%build
+make
+
+%install
+DESTDIR=$RPM_BUILD_ROOT make install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,-)
+/usr/lib/@PACKAGENAME@.so.*
+%doc
+/usr/share/doc/packages/@PACKAGENAME@/AUTHORS
+/usr/share/doc/packages/@PACKAGENAME@/COPYING
+/usr/share/doc/packages/@PACKAGENAME@/ChangeLog
+/usr/share/doc/packages/@PACKAGENAME@/INSTALL
+/usr/share/doc/packages/@PACKAGENAME@/NEWS
+/usr/share/doc/packages/@PACKAGENAME@/README
+
+%package devel
+Summary: @PACKAGENAME@ PLEASE DESCRIBE (development files)
+Group: Development/Libraries/C++
+Requires: @PACKAGENAME@ = @VERSION@
+
+%description devel
+@README@
+
+This Package contains all files required for developement.
+
+%files devel
+%defattr(-,root,root,-)
+/usr/lib/@PACKAGENAME@.so
+/usr/lib/@PACKAGENAME@.a
+/usr/lib/pkgconfig
+/usr/lib/@PACKAGENAME@.la
+/usr/include/
+/usr/share/pkgconfig
+%doc
+/usr/share/doc/packages/@PACKAGENAME@/html
+/usr/share/doc/packages/@PACKAGENAME@/@PACKAGENAME@.spec
+
+%changelog